[
  {
    "path": ".gitignore",
    "content": ".idea/\r\nnode_modules/\r\ntemp/\r\n\r\n"
  },
  {
    "path": "README.md",
    "content": "# Javatari\n\n**Javatari** is a new cross platform Atari 2600 emulator designed for the Web.\n\nIt's great for displaying games running inside webpages. You can launch the emulator and load ROMs with a single link.\nAnd now you can play Atari 2600 games with touch controls on your Android/iOS device, even when offline!\nJoin friends in multiplayer games with the new NetPlay! function.\n\nPlease go to **https://javatari.org** to enjoy it online!\n\nRefer to [**/doc**](https://github.com/ppeccin/javatari.js/tree/master/doc) for parameters reference and URL usage examples.\nRefer to [**/release**](https://github.com/ppeccin/javatari.js/tree/master/release) for stable release files and deployment examples.\n\nAtari, VCS and the Atari logo are shown here as a tribute.\nAll trademarks are property of their respective owners.\n\n#### New in Version 5.0\n\n- NetPlay! Connect several users on the same Virtual Atari Console over the internet\n- Enjoy multiplayer gaming sessions with your friends online\n- P2P connection with automatic network discovery, no worries with IPs and ports\n- User interface for selecting Cartridge Mapper type\n- Several improvements and fixes\n\n### Features\n\n- Cross platform HTML5/JS. Runs in any Browser, tested in Chrome/Firefox/Safari\n- Support for mobile iOS and Android devices\n- Finally enjoy Atari 2600 games on your iPhone/iPad\n- Customizable Touch Controls for mobile devices with Haptic feedback\n- Real Atari 2600 Console panel for a nostalgic feel!\n- Install as a WebApp on iOS/Android/Desktop, then run offline!\n- Put Atari 2600 games in webpages easily\n- Show games running with a single link to the Javatari page\n- Drag & Drop system for loading files\n- Open files from local storage, iCloud, Google Drive, Dropbox, web links\n- Savestates support. Export and share Savestate files\n- Fully customizable Joysticks, Joykeys and Touch controllers\n- Adjustable speed, Pause and Frame-by-frame advance\n- Screen Capture and Debug modes\n- Resizable Screen, Full Screen mode\n- Javascript API for loading ROMs and Console control\n\n## About the NetPlay! feature\n\nJavatari 5.0 brings NetPlay!, in which any number of users may connect and control the same virtual Atari Console.\nTo access the feature, open the NetPlay! control dialog available on the System Menu (Power button).\n\nOne user must be the \"Server\" and start a NetPlay! Session. Just choose a name for the Session, or let the emulator generate it randomly, then hit \"HOST\".\nOnce the Session is started and active, other users may join the Session simply by entering the same Session name and hitting \"JOIN\".\nAll users connected have complete control over the machine, except that only the Server user may load/change media files (ROMs). All features of the emulator work during NetPlay!\nAny Client user may leave the Session at any time, but only the Server user may end the Session completely.\n\nBe careful not to make your Session name public! Anyone that knows your Session name will be able to join it while its active. Send the session name only to people you want to invite.\nAnother way of sharing your Session to users is sending them a link that will open the emulator and join the session automatically.\nIn the NetPlay! dialog, once you are Hosting a Session, there will be a link button on the upper right, that will generate the link and copy it to your clipboard.\n\n**IMPORTANT:** NetPlay! performance is completely dependent on the network quality. The lower the network latency between users, the better. Higher bandwidths with higher latencies won't help much.\nIt uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-)\n\nTo make all this work seamlessly, Javatari uses modern Web technologies including WebRTC, which are supported by all major browsers and platforms.\nUnfortunately, those technologies are still not available on Apple iOS, so NetPlay! will not work on iOS devices. Sorry but there is not much we can do about it, until Apple feels it should allow its customers to access those technologies.\n\n## Javatari Configuration and Launch Options\n\nSeveral parameters are available for customizing the emulator. They can be changed either directly in Javascript if you are hosting the emulator in your own page, or via URL Query Parameters if you are creating links or bookmarks to open the emulator, or just using it in your browser.\n\nAll parameters are in the form of properties in the global object `Javatari`. Just set these object properties in Javascript, or use URL Query parameter/value pairs. For example:\n\n```\nJavatari.CARTRIDGE_URL = \"files/Game.rom\";      is the same as      https://javatari.org?ROM=files/Game.rom\n```\n\n**IMPORTANT:** Any parameter setting via Javascript must be done AFTER importing the `javatari.js` file.\n\n## Media Loading\n\nThe emulator can be set to automatically load files like ROMs images and Savestate files. Files may be compressed in ZIP or GZIP formats. Available parameters:\n\n| Parameter | Function | Shortcut for URL form\n| --- | --- | ---\n| `CARTRIDGE_URL`    | URL of ROM image file to load                  | `ROM`, `CART`\n| `CARTRIDGE_FORMAT` | Force a specific ROM Format                    | `FORMAT`\n| `STATE_URL`        | URL of SaveState file to load                  | `STATE`, `SAVESTATE`\n| `AUTODETECT_URL`   | URL of file to load with media auto-detection  | `AUTODETECT`, `AUTO`, `ANY`\n\n### ROM Format (or Mapper Type)\nThe ROM Format is auto-detected. To force a format, use the `CARTRIDGE_FORMAT` parameter.\nYou can also put the format specification in the ROM file name, between brackets. Example: `Robotank [FE].rom`\n\n#### Valid Formats\n`4K`, `CV`, `E0`, `F0`, `FE`, `E7`, `F4`, `F6`, `F8`, `FA`, `FA2`, `FA2cu`, `EF`, `DPC`, `3F`, `3E`, `X07`, `0840`, `UA`, `SB`, `AR`\n\n## Launch URL Examples\n\nJavatari is great for displaying Atari 2600 games in the web. With a simple URL, you can launch the emulator and automatically load and run anything. You may combine several settings and media loading options in a single link. Here are some examples:\n\n- To load a game in ROM format:\n```\nhttps://javatari.org?ROM=https://gamesarchive.org/Pitfall.rom\n```\n- To load a game in a ZIPped ROM Image and force the ROM Format to `FA2`\n```\nhttps://javatari.org?ROM=https://gamesarchive.org/StarCastle.zip&FORMAT=FA2\n```\n\n## Parameters Reference\n\n| Parameter | Default | Description\n| --- | :---: | ---\n| `CARTRIDGE_URL`                 |  --                 |  URL of ROM image file to load \n| `CARTRIDGE_FORMAT`              |  --                 |  ROM Format to use. Leave unset for autodetection \n| `STATE_URL`                     |  --                 |  URL of SaveState file to load\n| `AUTODETECT_URL`                |  --                 |  URL of file to load with media auto-detection\n| `SCREEN_ELEMENT_ID`             |  \"javatari-screen\"  |  HTML Element ID to place the Emulator Screen\n| `SCREEN_CONSOLE_PANEL_DISABLED` |  false              |  Hide the Console Panel controls\n| `CARTRIDGE_SHOW_RECENT`         |  true               |  Show a list of recent loaded ROMs at startup\n| `CARTRIDGE_LABEL_COLORS`        |  \"\"                 |  Space-separated colors for customised Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n| `ALLOW_URL_PARAMETERS`          |  true               |  Allows overriding any parameters via URL query parameters\n| `AUTO_START`                    |  true               |  Auto-Start the emulator as soon as ready\n| `AUTO_POWER_ON_DELAY`           |  1200               |  Auto-Power-ON after specified msecs. -1: no Auto-Power-ON\n| `CARTRIDGE_CHANGE_DISABLED`     |  false              |  Block user from changing Cartridges\n| `SCREEN_RESIZE_DISABLED`        |  false              |  Block user from changing Screen size\n| `SCREEN_FULLSCREEN_MODE`        |  -1                 |  FullScreen mode. -2: disabled; -1: auto; 0: off; 1: on\n| `SCREEN_FILTER_MODE`            |  -3                 |  Screen CRT Filter level. -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level\n| `SCREEN_CRT_MODE`               |  0                  |  Screen CRT Phosphor Effect. -1: auto; 0: off; 1: on\n| `SCREEN_DEFAULT_SCALE`          |  -1                 |  Screen size. -1: auto; 0.5..N in 0.1 steps\n| `SCREEN_DEFAULT_ASPECT`         |  1                  |  Screen aspect ratio (width) in 0.1 steps\n| `SCREEN_CANVAS_SIZE`            |  2                  |  Internal canvas size factor. Don't change! :-)\n| `SCREEN_CONTROL_BAR`            |  1                  |  Screen Bottom Bar controls. 0: on hover; 1: always\n| `SCREEN_FORCE_HOST_NATIVE_FPS`  |  -1                 |  Force host native video frequency. -1: auto-detect. Don't change! :-)\n| `SCREEN_VSYNCH_MODE`            |  -2                 |  V-Synch mode. -2: user set (default on); -1: disabled; 0: off; 1: on\n| `AUDIO_MONITOR_BUFFER_BASE`     |  -3                 |  Audio buffer base size. -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n| `AUDIO_MONITOR_BUFFER_SIZE`     |  -1                 |  Audio buffer size. -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-)\n| `AUDIO_SIGNAL_BUFFER_RATIO`     |  2                  |  Internal Audio Signal buffer based on Monitor buffer\n| `AUDIO_SIGNAL_ADD_FRAMES`       |  3                  |  Additional frames in internal Audio Signal buffer based on Monitor buffer\n| `PADDLES_MODE`                  |  -1                 |  Paddle controls. -1: auto; 0: off; 1: on\n| `TOUCH_MODE`                    |  -1                 |  Touch controls. -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n| `RESET`                         |  0                  |  If value = 1 clear all saved data on the client\n| `PAGE_BACK_CSS`                 |  --                 |  CSS to modify page background color. Applied to the body element\n\n"
  },
  {
    "path": "doc/README.md",
    "content": "# Javatari\n\n**Javatari** is a new cross platform Atari 2600 emulator designed for the Web.\n\nIt's great for displaying games running inside webpages. You can launch the emulator and load ROMs with a single link.\nAnd now you can play Atari 2600 games with touch controls on your Android/iOS device, even when offline!\nJoin friends in multiplayer games with the new NetPlay! function.\n\nPlease go to **https://javatari.org** to enjoy it online!\n\nRefer to [**/doc**](https://github.com/ppeccin/javatari.js/tree/master/doc) for parameters reference and URL usage examples.\nRefer to [**/release**](https://github.com/ppeccin/javatari.js/tree/master/release) for stable release files and deployment examples.\n\nAtari, VCS and the Atari logo are shown here as a tribute.\nAll trademarks are property of their respective owners.\n\n#### New in Version 5.0\n\n- NetPlay! Connect several users on the same Virtual Atari Console over the internet\n- Enjoy multiplayer gaming sessions with your friends online\n- P2P connection with automatic network discovery, no worries with IPs and ports\n- User interface for selecting Cartridge Mapper type\n- Several improvements and fixes\n\n### Features\n\n- Cross platform HTML5/JS. Runs in any Browser, tested in Chrome/Firefox/Safari\n- Support for mobile iOS and Android devices\n- Finally enjoy Atari 2600 games on your iPhone/iPad\n- Customizable Touch Controls for mobile devices with Haptic feedback\n- Real Atari 2600 Console panel for a nostalgic feel!\n- Install as a WebApp on iOS/Android/Desktop, then run offline!\n- Put Atari 2600 games in webpages easily\n- Show games running with a single link to the Javatari page\n- Drag & Drop system for loading files\n- Open files from local storage, iCloud, Google Drive, Dropbox, web links\n- Savestates support. Export and share Savestate files\n- Fully customizable Joysticks, Joykeys and Touch controllers\n- Adjustable speed, Pause and Frame-by-frame advance\n- Screen Capture and Debug modes\n- Resizable Screen, Full Screen mode\n- Javascript API for loading ROMs and Console control\n\n## About the NetPlay! feature\n\nJavatari 5.0 brings NetPlay!, in which any number of users may connect and control the same virtual Atari Console.\nTo access the feature, open the NetPlay! control dialog available on the System Menu (Power button).\n\nOne user must be the \"Server\" and start a NetPlay! Session. Just choose a name for the Session, or let the emulator generate it randomly, then hit \"HOST\".\nOnce the Session is started and active, other users may join the Session simply by entering the same Session name and hitting \"JOIN\".\nAll users connected have complete control over the machine, except that only the Server user may load/change media files (ROMs). All features of the emulator work during NetPlay!\nAny Client user may leave the Session at any time, but only the Server user may end the Session completely.\n\nBe careful not to make your Session name public! Anyone that knows your Session name will be able to join it while its active. Send the session name only to people you want to invite.\nAnother way of sharing your Session to users is sending them a link that will open the emulator and join the session automatically.\nIn the NetPlay! dialog, once you are Hosting a Session, there will be a link button on the upper right, that will generate the link and copy it to your clipboard.\n\n**IMPORTANT:** NetPlay! performance is completely dependent on the network quality. The lower the network latency between users, the better. Higher bandwidths with higher latencies won't help much.\nIt uses a specialized P2P protocol, and tries to use STUN to traverse NATs/routers so users don't have to worry about IPs and opening ports. Use at your own risk! :-)\n\nTo make all this work seamlessly, Javatari uses modern Web technologies including WebRTC, which are supported by all major browsers and platforms.\nUnfortunately, those technologies are still not available on Apple iOS, so NetPlay! will not work on iOS devices. Sorry but there is not much we can do about it, until Apple feels it should allow its customers to access those technologies.\n\n## Javatari Configuration and Launch Options\n\nSeveral parameters are available for customizing the emulator. They can be changed either directly in Javascript if you are hosting the emulator in your own page, or via URL Query Parameters if you are creating links or bookmarks to open the emulator, or just using it in your browser.\n\nAll parameters are in the form of properties in the global object `Javatari`. Just set these object properties in Javascript, or use URL Query parameter/value pairs. For example:\n\n```\nJavatari.CARTRIDGE_URL = \"files/Game.rom\";      is the same as      https://javatari.org?ROM=files/Game.rom\n```\n\n**IMPORTANT:** Any parameter setting via Javascript must be done AFTER importing the `javatari.js` file.\n\n## Media Loading\n\nThe emulator can be set to automatically load files like ROMs images and Savestate files. Files may be compressed in ZIP or GZIP formats. Available parameters:\n\n| Parameter | Function | Shortcut for URL form\n| --- | --- | ---\n| `CARTRIDGE_URL`    | URL of ROM image file to load                  | `ROM`, `CART`\n| `CARTRIDGE_FORMAT` | Force a specific ROM Format                    | `FORMAT`\n| `STATE_URL`        | URL of SaveState file to load                  | `STATE`, `SAVESTATE`\n| `AUTODETECT_URL`   | URL of file to load with media auto-detection  | `AUTODETECT`, `AUTO`, `ANY`\n\n### ROM Format (or Mapper Type)\nThe ROM Format is auto-detected. To force a format, use the `CARTRIDGE_FORMAT` parameter.\nYou can also put the format specification in the ROM file name, between brackets. Example: `Robotank [FE].rom`\n\n#### Valid Formats\n`4K`, `CV`, `E0`, `F0`, `FE`, `E7`, `F4`, `F6`, `F8`, `FA`, `FA2`, `FA2cu`, `EF`, `DPC`, `3F`, `3E`, `X07`, `0840`, `UA`, `SB`, `AR`\n\n## Launch URL Examples\n\nJavatari is great for displaying Atari 2600 games in the web. With a simple URL, you can launch the emulator and automatically load and run anything. You may combine several settings and media loading options in a single link. Here are some examples:\n\n- To load a game in ROM format:\n```\nhttps://javatari.org?ROM=https://gamesarchive.org/Pitfall.rom\n```\n- To load a game in a ZIPped ROM Image and force the ROM Format to `FA2`\n```\nhttps://javatari.org?ROM=https://gamesarchive.org/StarCastle.zip&FORMAT=FA2\n```\n\n## Parameters Reference\n\n| Parameter | Default | Description\n| --- | :---: | ---\n| `CARTRIDGE_URL`                 |  --                 |  URL of ROM image file to load \n| `CARTRIDGE_FORMAT`              |  --                 |  ROM Format to use. Leave unset for autodetection \n| `STATE_URL`                     |  --                 |  URL of SaveState file to load\n| `AUTODETECT_URL`                |  --                 |  URL of file to load with media auto-detection\n| `SCREEN_ELEMENT_ID`             |  \"javatari-screen\"  |  HTML Element ID to place the Emulator Screen\n| `SCREEN_CONSOLE_PANEL_DISABLED` |  false              |  Hide the Console Panel controls\n| `CARTRIDGE_SHOW_RECENT`         |  true               |  Show a list of recent loaded ROMs at startup\n| `CARTRIDGE_LABEL_COLORS`        |  \"\"                 |  Space-separated colors for customised Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n| `ALLOW_URL_PARAMETERS`          |  true               |  Allows overriding any parameters via URL query parameters\n| `AUTO_START`                    |  true               |  Auto-Start the emulator as soon as ready\n| `AUTO_POWER_ON_DELAY`           |  1200               |  Auto-Power-ON after specified msecs. -1: no Auto-Power-ON\n| `CARTRIDGE_CHANGE_DISABLED`     |  false              |  Block user from changing Cartridges\n| `SCREEN_RESIZE_DISABLED`        |  false              |  Block user from changing Screen size\n| `SCREEN_FULLSCREEN_MODE`        |  -1                 |  FullScreen mode. -2: disabled; -1: auto; 0: off; 1: on\n| `SCREEN_FILTER_MODE`            |  -3                 |  Screen CRT Filter level. -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level\n| `SCREEN_CRT_MODE`               |  0                  |  Screen CRT Phosphor Effect. -1: auto; 0: off; 1: on\n| `SCREEN_DEFAULT_SCALE`          |  -1                 |  Screen size. -1: auto; 0.5..N in 0.1 steps\n| `SCREEN_DEFAULT_ASPECT`         |  1                  |  Screen aspect ratio (width) in 0.1 steps\n| `SCREEN_CANVAS_SIZE`            |  2                  |  Internal canvas size factor. Don't change! :-)\n| `SCREEN_CONTROL_BAR`            |  1                  |  Screen Bottom Bar controls. 0: on hover; 1: always\n| `SCREEN_FORCE_HOST_NATIVE_FPS`  |  -1                 |  Force host native video frequency. -1: auto-detect. Don't change! :-)\n| `SCREEN_VSYNCH_MODE`            |  -2                 |  V-Synch mode. -2: user set (default on); -1: disabled; 0: off; 1: on\n| `AUDIO_MONITOR_BUFFER_BASE`     |  -3                 |  Audio buffer base size. -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n| `AUDIO_MONITOR_BUFFER_SIZE`     |  -1                 |  Audio buffer size. -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size. More buffer = more delay. Don't change! :-)\n| `AUDIO_SIGNAL_BUFFER_RATIO`     |  2                  |  Internal Audio Signal buffer based on Monitor buffer\n| `AUDIO_SIGNAL_ADD_FRAMES`       |  3                  |  Additional frames in internal Audio Signal buffer based on Monitor buffer\n| `PADDLES_MODE`                  |  -1                 |  Paddle controls. -1: auto; 0: off; 1: on\n| `TOUCH_MODE`                    |  -1                 |  Touch controls. -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n| `RESET`                         |  0                  |  If value = 1 clear all saved data on the client\n| `PAGE_BACK_CSS`                 |  --                 |  CSS to modify page background color. Applied to the body element\n\n"
  },
  {
    "path": "gruntfile.js",
    "content": "module.exports = function (grunt) {\n\n    grunt.initConfig({\n        pkg: grunt.file.readJSON(\"package.json\"),\n\n        clean: {\n            init: [\"temp\", \"release/stable/5.0\"],\n            finish: [\"temp\"]\n        },\n\n        concat: {\n            emuPart: {\n                src: [\n                    \"src/main/room/screen/FullScreenSetup.js\",\n                    \"src/main/util/Util.js\",\n                    \"src/main/util/MD5.js\",\n                    \"src/main/util/ZIP.js\",\n                    \"src/main/util/EmbeddedFiles.js\",\n                    \"src/main/util/MultiDownloader.js\",\n                    \"src/main/util/MultiFileReader.js\",\n                    \"src/main/atari/video/VideoStandard.js\",\n                    \"src/main/atari/video/VideoSignal.js\",\n                    \"src/main/atari/audio/AudioSignal.js\",\n                    \"src/main/atari/cpu/M6502.js\",\n                    \"src/main/atari/pia/Ram.js\",\n                    \"src/main/atari/pia/Pia.js\",\n                    \"src/main/atari/tia/TiaPalettes.js\",\n                    \"src/main/atari/tia/TiaAudio.js\",\n                    \"src/main/atari/tia/TiaAudioChannel.js\",\n                    \"src/main/atari/tia/Tia.js\",\n                    \"src/main/atari/console/Bus.js\",\n                    \"src/main/atari/console/AtariConsole.js\",\n                    \"src/main/atari/controls/JoystickButtons.js\",\n                    \"src/main/atari/controls/ConsoleControls.js\",\n                    \"src/main/atari/cartridge/ROM.js\",\n                    \"src/main/atari/cartridge/CartridgeDatabase.js\",\n                    \"src/main/atari/cartridge/Cartridge.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge4K.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge2K_CV.js\",\n                    \"src/main/atari/cartridge/formats/CartridgeBankedByMaskedRange.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_E0.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge64K_F0.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_FE.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge16K_E7.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge10K_DPCa.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge24K_28K_32K_FA2.js\",\n                    \"src/main/atari/cartridge/formats/CartridgeBankedByBusMonitoring.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_512K_3F.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_512K_3E.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_256K_SB.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_64K_AR.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge64K_X07.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_0840.js\",\n                    \"src/main/atari/cartridge/formats/Cartridge8K_UA.js\",\n                    \"src/main/atari/cartridge/CartridgeFormats.js\",\n                    \"src/main/atari/cartridge/CartridgeCreator.js\",\n                    \"src/main/images/Images.js\",\n                    \"src/main/room/clock/Clock.js\",\n                    \"src/main/room/files/RecentStoredROMs.js\",\n                    \"src/main/room/files/FileLoader.js\",\n                    \"src/main/room/files/FileDownloader.js\",\n                    \"src/main/room/controls/DOMKeys.js\",\n                    \"src/main/room/controls/GamepadButtons.js\",\n                    \"src/main/room/controls/TouchControls.js\",\n                    \"src/main/room/controls/GamepadConsoleControls.js\",\n                    \"src/main/room/controls/DOMTouchControls.js\",\n                    \"src/main/room/controls/DOMConsoleControls.js\",\n                    \"src/main/room/screen/ScreenGUI.es5.js\",\n                    \"src/main/room/screen/Monitor.js\",\n                    \"src/main/room/screen/ConsolePanel.js\",\n                    \"src/main/room/screen/CanvasDisplay.js\",\n                    \"src/main/room/screen/dialogs/RecentROMsDialog.js\",\n                    \"src/main/room/screen/dialogs/SaveStateDialog.js\",\n                    \"src/main/room/screen/dialogs/QuickOptionsDialog.js\",\n                    \"src/main/room/screen/dialogs/NetPlayDialog.js\",\n                    \"src/main/room/screen/dialogs/CartridgeFormatDialog.js\",\n                    \"src/main/room/screen/settings/SettingsGUI.es5.js\",\n                    \"src/main/room/screen/settings/Settings.js\",\n                    \"src/main/room/speaker/WebAudioSpeaker.js\",\n                    \"src/main/room/savestate/LocalStorageSaveStateMedia.js\",\n                    \"src/main/room/controls/PeripheralControls.js\",\n                    \"src/main/room/controls/DOMPeripheralControls.js\",\n                    \"src/main/room/netplay/NetServer.js\",\n                    \"src/main/room/netplay/NetClient.js\",\n                    \"src/main/room/Room.js\",\n                    \"src/main/userprefs/UserPreferences.js\",\n                    \"src/main/userprefs/UserROMFormats.js\",\n                    \"src/runtime/images/EmbeddedImages.js\",\n                    \"src/main/Configurator.js\",\n                    \"src/main/Launcher.js\"\n                ],\n                dest: \"temp/javatari.part.js\"\n            },\n            emuFinal: {\n                src: [\n                    \"src/main/Javatari.js\",\n                    \"temp/javatari.part.min.js\"\n                ],\n                dest: \"temp/javatari.js\"\n            },\n           standalone: {\n                src: [\n                    \"src/runtime/standalone/index.part1.html\",\n                    \"temp/javatari.js\",\n                    \"src/runtime/standalone/index.part2.html\"\n                ],\n                dest: \"temp/index.html\"\n            }\n        },\n\n        uglify: {\n            emuPart: {\n                options: {\n                    maxLineLen: 7900,\n                    mangle: {\n                        toplevel: true,\n                        screw_ie8: true\n                    },\n                    compress: {\n                        screw_ie8: true,\n                        sequences: true,\n                        dead_code: true,\n                        drop_debugger: true,\n                        comparisons: true,\n                        conditionals: true,\n                        evaluate: true,\n                        booleans: true,\n                        loops: true,\n                        unused: true,\n                        if_return: true,\n                        hoist_funs: true,\n                        join_vars: true,\n                        cascade: true,\n                        unsafe: false\n                    }\n                },\n                files: {\n                    \"temp/javatari.part.min.js\": [\"temp/javatari.part.js\"]\n                }\n            }\n        },\n\n        copy: {\n            standalone: {\n                files: [\n                    {src: \"temp/index.html\", dest: \"release/stable/5.0/standalone\", expand: true, flatten: true, filter: \"isFile\"},\n                    {src: \"src/runtime/standalone/cache.manifest\", dest: \"release/stable/5.0/standalone\", expand: true, flatten: true, filter: \"isFile\"},\n                    {src: \"src/runtime/standalone/manifest.webapp\", dest: \"release/stable/5.0/standalone\", expand: true, flatten: true, filter: \"isFile\"},\n                    {src: \"src/runtime/images/files/logo-icon192.png\", dest: \"release/stable/5.0/standalone/images\", expand: true, flatten: true, filter: \"isFile\"},\n                    {src: \"src/runtime/images/files/logo-icon512.png\", dest: \"release/stable/5.0/standalone/images\", expand: true, flatten: true, filter: \"isFile\"}\n                ]\n            },\n            embedded: {\n                files: [\n                    {src: \"src/runtime/embedded/index.html\", dest: \"release/stable/5.0/embedded\", expand: true, flatten: true, filter: \"isFile\"},\n                    {src: \"temp/javatari.js\", dest: \"release/stable/5.0/embedded\", expand: true, flatten: true, filter: \"isFile\"}\n                ]\n            }\n        }\n    });\n\n    grunt.loadNpmTasks(\"grunt-contrib-clean\");\n    grunt.loadNpmTasks(\"grunt-contrib-concat\");\n    grunt.loadNpmTasks(\"grunt-contrib-uglify\");\n    grunt.loadNpmTasks(\"grunt-contrib-copy\");\n    grunt.registerTask(\"default\", [\n        \"clean:init\",\n        \"concat:emuPart\",\n        \"uglify:emuPart\",\n        \"concat:emuFinal\",\n        \"concat:standalone\",\n        \"copy:standalone\",\n        \"copy:embedded\",\n        \"clean:finish\"\n    ]);\n\n};"
  },
  {
    "path": "license.txt",
    "content": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n  A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate.  Many developers of free software are heartened and\nencouraged by the resulting cooperation.  However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n  The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community.  It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server.  Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n  An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals.  This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Remote Network Interaction; Use with the GNU General Public License.\n\n  Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software.  This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time.  Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Affero General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Affero General Public License for more details.\n\n    You should have received a copy of the GNU Affero General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source.  For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code.  There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n<http://www.gnu.org/licenses/>. \n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"Javatari\",\n  \"title\": \"Javatari - The online Atari 2600 emulator\",\n  \"version\": \"5.0.4\",\n  \"devDependencies\": {\n    \"grunt\": \"\",\n    \"grunt-contrib-clean\": \"\",\n    \"grunt-contrib-concat\": \"\",\n    \"grunt-contrib-uglify\": \"2.3.0\",\n    \"grunt-contrib-copy\": \"\"\n  }\n}\n"
  },
  {
    "path": "release/stable/4.0/embedded/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n\n    </head>\n\n    <body>\n\n        <div id=\"javatari\" style=\"text-align: center; margin: 20px auto 0;\">\n            <div id=\"javatari-screen\" style=\"box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\"></div>\n        </div>\n\n        <script src=\"javatari.js\"></script>\n\n    </body>\n\n</html>"
  },
  {
    "path": "release/stable/4.0/embedded/javatari.js",
    "content": "// Javatari version 4.0\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Main Emulator parameters.\n// May be overridden dynamically by URL query parameters, if ALLOW_URL_PARAMETERS = true.\n\nJavatari = {\n\n    PRESETS:                        \"\",                         // Configuration Presets to apply. See Presets Configuration\n\n    // Full or relative URL of Media files to load\n    CARTRIDGE_URL:                  \"\",\n    AUTODETECT_URL:                 \"\",\n    STATE_URL:                      \"\",\n\n    // Forcing ROM formats\n    CARTRIDGE_FORMAT:               \"\",                         // 4K, F8, F4, FE, AR, etc...\n\n    // General configuration\n    AUTO_START:                     true,\n    AUTO_POWER_ON_DELAY:            1200,                       // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON\n    CARTRIDGE_SHOW_RECENT:          true,\n    CARTRIDGE_CHANGE_DISABLED:      false,\n    CARTRIDGE_LABEL_COLORS:         \"\",                         // Space-separated colors for Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n    SCREEN_RESIZE_DISABLED:         false,\n    SCREEN_CONSOLE_PANEL_DISABLED:  false,\n    SCREEN_ELEMENT_ID:              \"javatari-screen\",\n    CONSOLE_PANEL_ELEMENT_ID:       -1,                         // -1: auto. Don't change! :-)\n    SCREEN_FULLSCREEN_MODE:         -1,                         // -2: disabled; -1: auto; 0: off; 1: on\n    SCREEN_CRT_MODE:                -1,                         // -1: auto; 0: off; 1: on\n    SCREEN_FILTER_MODE:             -1,                         // -2: browser default; -1: auto; 0..3: smoothing level\n    SCREEN_DEFAULT_SCALE:           -1,                         // -1: auto; 0.5..N in 0.1 steps: scale\n    SCREEN_DEFAULT_ASPECT:          1,                          // in 0.1 steps\n    SCREEN_CANVAS_SIZE:             2,                          // Internal canvas size factor. Don't change! :-)\n    SCREEN_CONTROL_BAR:             1,                          // 0: on hover; 1: always\n    SCREEN_FORCE_HOST_NATIVE_FPS:   -1,                         // -1: auto. Don't change! :-)\n    SCREEN_VSYNCH_MODE:             1,                          // -1: disabled; 0: off; 1: on\n    AUDIO_MONITOR_BUFFER_BASE:      -3,                         // -3: user set value; -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n    AUDIO_MONITOR_BUFFER_SIZE:      -1,                         // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size.     More buffer = more delay. Don't change! :-)\n    AUDIO_SIGNAL_BUFFER_RATIO:      2,                          // Internal Audio Signal buffer based on Monitor buffer\n    AUDIO_SIGNAL_ADD_FRAMES:        3,                          // Additional frames in internal Audio Signal buffer based on Monitor buffer\n    PADDLES_MODE:                   -1,                         // -1: auto; 0: off; 1: on\n    TOUCH_MODE:                     -1,                         // -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n    IMAGES_PATH:                    window.JAVATARI_IMAGES_PATH || \"images/\",\n\n    RESET:                          0,                          // if value = 1 clear all saved data on the client\n    ALLOW_URL_PARAMETERS:           true                        // Allows user to override any of these parameters via URL query parameters\n\n};\n\nJavatari.PRESETS_CONFIG = { };                                  // No built-in Presets for now\n\njt = window.jt || {};                                           // Namespace for all classes and objects\n\nfunction onUpdateReady(){alert(\"A new version is available!\\nJavatari will restart...\"),window.applicationCache.swapCache(),window.location.reload()}JavatariFullScreenSetup={apply:function(){if(!this.cssApplied){var a=document.createElement(\"style\");a.type=\"text/css\",a.innerHTML=this.css,document.head.appendChild(a),this.cssApplied=!0}document.documentElement.classList.toggle(\"jt-full-screen\",this.shouldStartInFullScreen())},shouldStartInFullScreen:function(){return window.Javatari?1===Javatari.SCREEN_FULLSCREEN_MODE||Javatari.SCREEN_FULLSCREEN_MODE===-1&&this.isBrowserStandaloneMode():this.isBrowserStandaloneMode()},isBrowserStandaloneMode:function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},css:\"html.jt-full-screen, html.jt-full-screen body {   background: black;}html.jt-full-screen .jt-full-screen-hidden {   display: none;}html:not(.jt-full-screen) .jt-full-screen-only {   display: none;}\"},JavatariFullScreenSetup.apply(),jt.Util=new function(){\"use strict\";function a(a,b){return a.name<b.name?-1:a.name>b.name?1:0}function b(a){return a.stopPropagation(),a.cancelable&&a.preventDefault(),!1}this.log=function(a){console.log(\">> jt: \"+a)},this.warning=function(a){console.warn(\">> jt Warning: \"+a)},this.error=function(a){console.error(\">> jt Error: \"+a)},this.message=function(a){console.info(a),alert(a)},this.asNormalArray=function(a){return a instanceof Array?a:this.arrayCopy(a,0,new Array(a.length))},this.arrayFill=function(a,b,c,d){if(a.fill)return a.fill(b,c,d);void 0===c&&(c=0);for(var e=(void 0===d?a.length:d)-1;e>=c;e-=1)a[e]=b;return a},this.arrayFillSegment=function(a,b,c,d){for(var e=c;e-- >b;)a[e]=d;return a},this.arrayCopy=function(a,b,c,d,e){d=d||0;for(var f=e?b+e:a.length;b<f;)c[d++]=a[b++];return c},this.arrayAdd=function(a,b){return a[a.length]=b,a},this.arrayRemoveAllElement=function(a,b){for(var c;(c=a.indexOf(b))>=0;)a.splice(c,1);return a},this.arraysConcatAll=function(a){for(var b=0,c=0;c<a.length;++c)b+=a[c].length;var d=new a[0].constructor(b),e=0;for(c=0;c<a.length;++c)this.arrayCopy(a[c],0,d,e),e+=a[c].length;return d},this.arrayRemove=function(a,b){var c=a.indexOf(b);c<0||a.splice(c,1)},this.arraysEqual=function(a,b){var c=a.length;if(c!==b.length)return!1;for(;c--;)if(a[c]!==b[c])return!1;return!0},this.reverseInt8=function(a){return(1&a)<<7|(2&a)<<5|(4&a)<<3|(8&a)<<1|(16&a)>>1|(32&a)>>3|(64&a)>>5|(128&a)>>7},this.int8BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e]);return d},this.byteStringToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0;e<c;e+=1)d[e]=255&a.charCodeAt(e);return d}},this.int32BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e])+String.fromCharCode(a[e]>>8&255)+String.fromCharCode(a[e]>>16&255)+String.fromCharCode(a[e]>>24&255);return d},this.byteStringToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length/4|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e<c;e+=1,f+=4)d[e]=255&a.charCodeAt(f)|(255&a.charCodeAt(f+1))<<8|(255&a.charCodeAt(f+2))<<16|(255&a.charCodeAt(f+3))<<24;return d}},this.storeInt8BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int8BitArrayToByteString(a))},this.restoreStringBase64ToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt8BitArray(atob(a),b)},this.compressInt8BitArrayToStringBase64=function(a,b){return null===a||void 0===a?a:0===a.length?\"\":b<a.length?this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a.slice(0,b))):this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToInt8BitArray=function(a,b,c){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){if(\"\"==a)return[];var d=JSZip.compressions.DEFLATE.uncompress(atob(a));return b&&(c||b.length===d.length)?this.arrayCopy(d,0,b):this.arrayCopy(d,0,new(b?b.constructor:Array)(d.length))}},this.storeInt32BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int32BitArrayToByteString(a))},this.restoreStringBase64ToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt32BitArray(atob(a),b)},this.compressStringToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?a:this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToString=function(a){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?a:this.int8BitArrayToByteString(JSZip.compressions.DEFLATE.uncompress(atob(a)))},this.toHex2=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();return a>=0&&b.length%2?\"0\"+b:b},this.toHex4=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();if(a<0)return b;switch(b.length){case 4:return b;case 3:return\"0\"+b;case 2:return\"00\"+b;case 1:return\"000\"+b;default:return b}},this.escapeHtml=function(a){return a.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#039;\").replace(/\\//g,\"&#047;\").replace(/\\?/g,\"&#063;\").replace(/\\-/g,\"&#045;\").replace(/\\|/g,\"&#0124;\")},this.arrayFind=function(a,b){if(a.find)return a.find(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return a[c]},this.arrayFindIndex=function(a,b){if(a.findIndex)return a.findIndex(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return c;return-1},this.arrayIndexOfSubArray=function(a,b,c,d){var e=b.length,f=a.length,g=d||1;a:for(var h=c;h>=0&&h<f;h+=g){for(var i=0;i<e;i+=1)if(a[h+i]!==b[i])continue a;return h}return-1},this.stringCountOccurrences=function(a,b){for(var c=0,d=0,e=a.length;d<e;++d)a[d]==b&&++c;return c},this.stringStartsWith=function(a,b){return a.startsWith?a.startsWith(b):a.substr(0,b.length)===b},this.stringEndsWith=function(a,b){return a.endsWith?a.endsWith(b):a.substr(a.length-b.length)===b},this.checkContentIsZIP=function(a){if(a&&80===a[0]&&75===a[1])try{return new JSZip(a)}catch(a){}return null},this.getZIPFilesSorted=function(b){var c=b.file(/.+/);return c.sort(a),c},this.checkContentIsGZIP=function(a){if(!a||31!==a[0]||139!==a[1]||8!==a[2])return null;try{var b=a[3],c=2&b,d=4&b,e=8&b,f=16&b,g=10;if(d){var h=a[g++]|a[g++]<<8;g+=h}if(e)for(;0!==a[g++];);if(f)for(;0!==a[g++];);return c&&(g+=2),JSZip.compressions.DEFLATE.uncompress(a.slice(g,a.length-8))}catch(a){return null}},this.leafFilename=function(a){return((a&&a.indexOf(\"/\")>=0?a.split(\"/\").pop():a)||\"\").trim()},this.leafFilenameNoExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?b:b.substr(0,c).trim()},this.leafFilenameOnlyExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?\"\":b.substr(c+1).trim()},this.dump=function(a,b,c,d){var e=\"\",f=b||0;d=d||1;for(var g=0;g<d;g++){for(var h=0;h<c;h++){var i=a[f++];e+=void 0!=i?i.toString(16,2)+\" \":\"? \"}e+=\"   \"}console.log(e)},this.browserInfo=function(){if(this.browserInfoAvailable)return this.browserInfoAvailable;var a,b=navigator.userAgent,c=b.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];if(/trident/i.test(c[1]))return a=/\\brv[ :]+(\\d+)/g.exec(b)||[],this.browserInfoAvailable={name:\"IE\",version:a[1]||\"\"};if(\"Chrome\"===c[1]&&(a=b.match(/\\bOPR\\/(\\d+)/),null!=a))return this.browserInfoAvailable={name:\"OPERA\",version:a[1]};c=c[2]?[c[1],c[2]]:[navigator.appName,navigator.appVersion,\"-?\"],\nnull!=(a=b.match(/version\\/(\\d+)/i))&&c.splice(1,1,a[1]);var d=c[0].toUpperCase();return this.browserInfoAvailable={name:this.isIOSDevice()||\"NETSCAPE\"===d?\"SAFARI\":d,version:c[1]}},this.userLanguage=function(){return(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage||\"en-US\").trim()},this.isOfficialHomepage=function(){var a=window.location;return a&&\"javatari.org\"===a.hostname.toLowerCase()&&(\"\"===a.port||\"80\"===a.port)},this.isTouchDevice=function(){return\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},this.isMobileDevice=function(){return this.isTouchDevice()&&/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)},this.isIOSDevice=function(){return/ipad|iphone|ipod/i.test(navigator.userAgent)},this.isBrowserStandaloneMode=function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},this.onTapOrMouseDown=function(a,b){this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",b)},this.onTapOrMouseDownWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",d)},this.onTapOrMouseUpWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mouseup\":\"mouseup\",d)},this.onTapOrMouseDownWithBlockUIG=function(a,c){function d(a){if((\"touchstart\"!==a.type||!a.target.jtNeedsUIG)&&(\"touchend\"!==a.type||a.target.jtNeedsUIG))return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart touchend mousedown\":\"mousedown\",d)},this.blockEvent=b,this.addEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.addEventListener(b[e],c,d)},this.removeEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.removeEventListener(b[e],c,d)},this.insertCSS=function(a){var b=document.createElement(\"style\");b.type=\"text/css\",b.innerHTML=a,document.head.appendChild(b)},this.log2=function(a){return Math.log(a)/Math.log(2)},this.exp2=function(a){return Math.pow(2,a)},this.performanceNow=function(){return this.performanceNow.startOffset?Date.now()-this.performanceNow.startOffset:window.performance.now()}},window.performance&&window.performance.now||(jt.Util.performanceNow.startOffset=Date.now()),jt.MD5=function(a){\"use strict\";function b(a){var b=(a>>>0).toString(16);return\"00000000\".substr(0,8-b.length)+b}function c(a){for(var b=[],c=0;c<a.length;c++)b=b.concat(k(a[c]));return b}function d(a){for(var b=[],c=0;c<8;c++)b.push(255&a),a>>>=8;return b}function e(a,b){return a<<b&4294967295|a>>>32-b}function f(a,b,c){return a&b|~a&c}function g(a,b,c){return c&a|~c&b}function h(a,b,c){return a^b^c}function i(a,b,c){return b^(a|~c)}function j(a,b){return a[b+3]<<24|a[b+2]<<16|a[b+1]<<8|a[b]}function k(a){for(var b=[],c=0;c<a.length;c++)if(a.charCodeAt(c)<=127)b.push(a.charCodeAt(c));else for(var d=encodeURIComponent(a.charAt(c)).substr(1).split(\"%\"),e=0;e<d.length;e++)b.push(parseInt(d[e],16));return b}function l(a,c,d,e){for(var f=\"\",g=0,h=0,i=3;i>=0;i--)h=arguments[i],g=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=h,f+=b(g);return f}function m(a){for(var b=new Array(a.length),c=0;c<a.length;c++)b[c]=a[c];return b}function n(a,b){return 4294967295&a+b}function o(){function a(a,b,c,d){var f=v;v=u,u=t,t=n(t,e(n(s,n(a,n(b,c))),d)),s=f}var b=p.length;p.push(128);var c=p.length%64;if(c>56){for(var k=0;k<64-c;k++)p.push(0);c=p.length%64}for(k=0;k<56-c;k++)p.push(0);p=p.concat(d(8*b));var m=1732584193,o=4023233417,q=2562383102,r=271733878,s=0,t=0,u=0,v=0;for(k=0;k<p.length/64;k++){s=m,t=o,u=q,v=r;var w=64*k;a(f(t,u,v),3614090360,j(p,w),7),a(f(t,u,v),3905402710,j(p,w+4),12),a(f(t,u,v),606105819,j(p,w+8),17),a(f(t,u,v),3250441966,j(p,w+12),22),a(f(t,u,v),4118548399,j(p,w+16),7),a(f(t,u,v),1200080426,j(p,w+20),12),a(f(t,u,v),2821735955,j(p,w+24),17),a(f(t,u,v),4249261313,j(p,w+28),22),a(f(t,u,v),1770035416,j(p,w+32),7),a(f(t,u,v),2336552879,j(p,w+36),12),a(f(t,u,v),4294925233,j(p,w+40),17),a(f(t,u,v),2304563134,j(p,w+44),22),a(f(t,u,v),1804603682,j(p,w+48),7),a(f(t,u,v),4254626195,j(p,w+52),12),a(f(t,u,v),2792965006,j(p,w+56),17),a(f(t,u,v),1236535329,j(p,w+60),22),a(g(t,u,v),4129170786,j(p,w+4),5),a(g(t,u,v),3225465664,j(p,w+24),9),a(g(t,u,v),643717713,j(p,w+44),14),a(g(t,u,v),3921069994,j(p,w),20),a(g(t,u,v),3593408605,j(p,w+20),5),a(g(t,u,v),38016083,j(p,w+40),9),a(g(t,u,v),3634488961,j(p,w+60),14),a(g(t,u,v),3889429448,j(p,w+16),20),a(g(t,u,v),568446438,j(p,w+36),5),a(g(t,u,v),3275163606,j(p,w+56),9),a(g(t,u,v),4107603335,j(p,w+12),14),a(g(t,u,v),1163531501,j(p,w+32),20),a(g(t,u,v),2850285829,j(p,w+52),5),a(g(t,u,v),4243563512,j(p,w+8),9),a(g(t,u,v),1735328473,j(p,w+28),14),a(g(t,u,v),2368359562,j(p,w+48),20),a(h(t,u,v),4294588738,j(p,w+20),4),a(h(t,u,v),2272392833,j(p,w+32),11),a(h(t,u,v),1839030562,j(p,w+44),16),a(h(t,u,v),4259657740,j(p,w+56),23),a(h(t,u,v),2763975236,j(p,w+4),4),a(h(t,u,v),1272893353,j(p,w+16),11),a(h(t,u,v),4139469664,j(p,w+28),16),a(h(t,u,v),3200236656,j(p,w+40),23),a(h(t,u,v),681279174,j(p,w+52),4),a(h(t,u,v),3936430074,j(p,w),11),a(h(t,u,v),3572445317,j(p,w+12),16),a(h(t,u,v),76029189,j(p,w+24),23),a(h(t,u,v),3654602809,j(p,w+36),4),a(h(t,u,v),3873151461,j(p,w+48),11),a(h(t,u,v),530742520,j(p,w+60),16),a(h(t,u,v),3299628645,j(p,w+8),23),a(i(t,u,v),4096336452,j(p,w),6),a(i(t,u,v),1126891415,j(p,w+28),10),a(i(t,u,v),2878612391,j(p,w+56),15),a(i(t,u,v),4237533241,j(p,w+20),21),a(i(t,u,v),1700485571,j(p,w+48),6),a(i(t,u,v),2399980690,j(p,w+12),10),a(i(t,u,v),4293915773,j(p,w+40),15),a(i(t,u,v),2240044497,j(p,w+4),21),a(i(t,u,v),1873313359,j(p,w+32),6),a(i(t,u,v),4264355552,j(p,w+60),10),a(i(t,u,v),2734768916,j(p,w+24),15),a(i(t,u,v),1309151649,j(p,w+52),21),a(i(t,u,v),4149444226,j(p,w+16),6),a(i(t,u,v),3174756917,j(p,w+44),10),a(i(t,u,v),718787259,j(p,w+8),15),a(i(t,u,v),3951481745,j(p,w+36),21),m=n(m,s),o=n(o,t),q=n(q,u),r=n(r,v)}return l(r,q,o,m).toUpperCase()}var p=null,q=null;return\"string\"==typeof a?p=k(a):a.constructor==Array?0===a.length?p=a:\"string\"==typeof a[0]?p=c(a):\"number\"==typeof a[0]?p=a:q=typeof a[0]:\"undefined\"!=typeof ArrayBuffer?a instanceof ArrayBuffer?p=m(new Uint8Array(a)):a instanceof Uint8Array||a instanceof Int8Array?p=m(a):a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array||a instanceof Float32Array||a instanceof Float64Array?p=m(new Uint8Array(a.buffer)):q=typeof a:q=typeof a,q&&alert(\"MD5 type mismatch, cannot process \"+q),o()},!function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,\nj+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\0\\0\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(\"undefined\"==typeof a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);\"undefined\"==typeof b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\0\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),\n0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return\"string\"===e?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||\"undefined\"==typeof b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&\"undefined\"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||\"undefined\"==typeof b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=\"undefined\"!=typeof b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";w+=\"\\n\\0\",w+=p||q?\"\\0\\b\":\"\\0\\0\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+\"\u0014\\0\"+w+s(o.length,2)+\"\\0\\0\\0\\0\"+(j===!0?\"\u0010\\0\\0\\0\":\"\\0\\0\\0\\0\")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=\"undefined\"!=typeof a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(a){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;e.append(b),c.blob=0===e.getBlob(\"application/zip\").size}catch(a){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\n\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(k(e.uint8array?a.subarray(c,h):a.slice(c,h))),c=h}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(a){h=!1}if(!h){for(var i=\"\",k=0;k<a.length;k++)i+=String.fromCharCode(a[k]);return i}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(c){try{var b=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,d=new b;return d.append(a),d.getBlob(\"application/zip\")}catch(a){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),\nb.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=!!(16&this.externalFileAttributes)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d!==m||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n)},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\n\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=h[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a^=-1;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ja?a.strstart-(a.w_size-ja):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ia,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ia-(m-f),f=m-ia,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ja)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ha)for(f=a.strstart-a.insert,\na.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+ha-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<ha)););}while(a.lookahead<ja&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sa;if(a.strstart-a.block_start>=a.w_size-ja&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sa:sa}function o(a,b){for(var c,d;;){if(a.lookahead<ja){if(m(a),a.lookahead<ja&&b===H)return sa;if(0===a.lookahead)break}if(c=0,a.lookahead>=ha&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-ja&&(a.match_length=l(a,c)),a.match_length>=ha)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-ha),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ha){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=a.strstart<ha-1?a.strstart:ha-1,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function p(a,b){for(var c,d,e;;){if(a.lookahead<ja){if(m(a),a.lookahead<ja&&b===H)return sa;if(0===a.lookahead)break}if(c=0,a.lookahead>=ha&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=ha-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-ja&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===ha&&a.strstart-a.match_start>4096)&&(a.match_length=ha-1)),a.prev_length>=ha&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ha,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ha),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=ha-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sa}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sa}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<ha-1?a.strstart:ha-1,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ia){if(m(a),a.lookahead<=ia&&b===H)return sa;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=ha&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ia;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ia-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ha?(c=D._tr_tally(a,1,a.match_length-ha),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ha-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fa),this.dyn_dtree=new C.Buf16(2*(2*da+1)),this.bl_tree=new C.Buf16(2*(2*ea+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ga+1),this.heap=new C.Buf16(2*ca+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*ca+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?la:qa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+ha-1)/ha),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ra&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===la)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ma):(i(h,0),i(h,0),i(h,0),\ni(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wa),h.status=qa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ka),m+=31-m%31,h.status=qa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ma)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=na)}else h.status=na;if(h.status===na)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=oa)}else h.status=oa;if(h.status===oa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pa)}else h.status=pa;if(h.status===pa&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qa)):h.status=qa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===ra&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==ra){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ua||o===va)&&(h.status=ra),o===sa||o===ua)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ta&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra?d(a,O):(a.state=null,b===qa?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=29,ba=256,ca=ba+1+aa,da=30,ea=19,fa=2*ca+1,ga=15,ha=3,ia=258,ja=ia+ha+1,ka=32,la=42,ma=69,na=73,oa=91,pa=103,qa=113,ra=666,sa=1,ta=2,ua=3,va=4,wa=3,xa=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xa(0,0,0,0,n),new xa(4,4,8,4,o),new xa(4,5,16,8,o),new xa(4,6,32,32,o),new xa(4,4,16,16,p),new xa(8,16,32,32,p),new xa(8,16,128,128,p),new xa(8,32,128,256,p),new xa(32,128,258,1024,p),new xa(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg=\"invalid literal/length code\",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg=\"invalid distance code\",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,ra)}function k(a){if(sa){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sa=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){\nvar c,e,f,g,h,i,j,m,n,o,p,q,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa=0,Ba=new r.Buf8(4),Ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xa=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=la;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg=\"invalid window size\",c.mode=la;break}c.dmax=1<<wa,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=la;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=la;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Ca[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid code lengths set\",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have<c.nlen+c.ndist;){for(;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qa,n-=qa,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid literal/lengths set\",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg=\"invalid distances set\",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(ra&&0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.lencode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg=\"invalid literal/length code\",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<<c.distbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.distcode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg=\"invalid distance code\",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[oa++];while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=la;break}m=0,n=0}c.mode=ja;case ja:\nif(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=la;break}m=0,n=0}c.mode=ka;case ka:xa=D;break a;case la:xa=G;break a;case ma:return H;case na:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<la&&(c.mode<ia||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=ma,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===ba||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xa===C&&(xa=I),xa)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,aa=19,ba=20,ca=21,da=22,ea=23,fa=24,ga=25,ha=26,ia=27,ja=28,ka=29,la=30,ma=31,na=32,oa=852,pa=592,qa=15,ra=qa,sa=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?ga[a]:ga[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ia[d]=c,a=0;a<1<<_[d];a++)ha[c++]=d;for(ha[c-1]=d,e=0,d=0;16>d;d++)for(ja[d]=e,a=0;a<1<<aa[d];a++)ga[e++]=d;for(e>>=7;R>d;d++)for(ja[d]=e<<7,a=0;a<1<<aa[d]-7;a++)ga[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)ea[2*a+1]=8,a++,f[8]++;for(;255>=a;)ea[2*a+1]=9,a++,f[9]++;for(;279>=a;)ea[2*a+1]=7,a++,f[7]++;for(;287>=a;)ea[2*a+1]=8,a++,f[8]++;for(l(ea,Q+1,f),a=0;R>a;a++)fa[2*a+1]=5,fa[2*a]=i(a,5);ka=new na(ea,_,P+1,Q,U),la=new na(fa,aa,0,R,U),ma=new na(new Array(0),ba,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=ha[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ia[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=aa[i],0!==j&&(d-=ja[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),\nt(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*ca[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*ca[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pa||(m(),pa=!0),a.l_desc=new oa(a.dyn_ltree,ka),a.d_desc=new oa(a.dyn_dtree,la),a.bl_desc=new oa(a.bl_tree,ma),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,ea),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ea,fa)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ha[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],aa=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],ba=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],da=512,ea=new Array(2*(Q+2));d(ea);var fa=new Array(2*R);d(fa);var ga=new Array(da);d(ga);var ha=new Array(N-M+1);d(ha);var ia=new Array(O);d(ia);var ja=new Array(R);d(ja);var ka,la,ma,na=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},oa=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pa=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),jt.EmbeddedFiles={get:function(a){var b=this.compressedContent[a];if(void 0!==b)return{name:a,content:jt.Util.uncompressStringBase64ToInt8BitArray(b)};var c=this.diffsContent[a];if(void 0!==c){var d=this.get(c.based);if(void 0!==d){var e=d.content;for(var f in c.diffs)for(var g=c.diffs[f],h=0;h<g.length;++h)e[(0|f)+h]=g[h];return{name:a,content:e}}}},embedFileCompressedContent:function(a,b){this.compressedContent[a]=b},embedFileDiff:function(a,b){this.diffsContent[a]=b},compressedContent:{},diffsContent:{}},jt.MultiDownloader=function(a,b,c,d){\"use strict\";function e(a){if(a){var b=a.url.trim().split(/\\s*\\|\\s*/);a.filesToLoad=b.length,a.filesContent=new Array(a.filesToLoad);for(var c=0;c<b.length;++c){var d=b[c];\"@\"===d[0]?f(a,c,d):g(a,c,d)}}}function f(a,b,c){jt.Util.log(\"Reading Embedded file: \"+c);var d=jt.EmbeddedFiles.get(c.substr(1));void 0!==d?h(a,b,d.content):i(a,\"Embedded file not found!\")}function g(a,b,c,e){var f=k(c)?l(c):c,g=new XMLHttpRequest;g.open(\"GET\",f,!0),g.responseType=\"arraybuffer\",g.timeout=void 0!==d?d:s,g.onload=function(){200===g.status?h(a,b,new Uint8Array(g.response)):g.onerror()},g.onerror=g.ontimeout=function(){i(a,\"\"+g.status+\" \"+g.statusText)},jt.Util.log(\"Reading file from: \"+c),g.send()}function h(a,b,c){a.filesContent[b]=c,--a.filesToLoad>0||(a.success=!0,a.content=jt.Util.arraysConcatAll(a.filesContent),a.onSuccess&&a.onSuccess(a),j())}function i(a,b){a.success=!1,a.error=b;var d=\"Could not load file: \"+a.url+\"\\nError: \"+b;a.onError?(jt.Util.error(d),a.onError(a)):c||jt.Util.message(d),j()}function j(){if(!q){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(q=!0,n(),d=0;d<a.length;d++)if(a[d]&&!a[d].success)return void(c&&c(a));b&&b(a)}}function k(a){return a&&(0===a.indexOf(\"http:\")||0===a.indexOf(\"https:\"))}function l(a){return(Javatari.PROXY_DOWNLOADER||\"\")+a}function m(){Javatari.room.isLoading||(p=window.setTimeout(function(){p=null,o=!0,Javatari.room.setLoading(!0)},r))}function n(){p&&(window.clearTimeout(p),p=null),o&&(o=!1,Javatari.room.setLoading(!1))}this.start=function(){if(a&&0!==a.length){m();for(var b=0;b<a.length;b++)e(a[b])}j()};var o=!1,p=null,q=!1,r=1e3,s=15e3},jt.MultiFileReader=function(a,b,c,d){\"use strict\";function e(a){if(a){jt.Util.log(\"Reading file: \"+a.name);var b=new FileReader;b.onload=function(b){a.success=!0,a.content=new Uint8Array(b.target.result),f()},b.onerror=function(b){a.success=!1,a.error=b.target.error.name,f()},b.readAsArrayBuffer(a)}}function f(){if(!g){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(g=!0,d=0;d<a.length;d++)if(a[d]&&!a[d].success)return c&&c(a,a[d].error),a;b&&b(a)}}this.start=function(){if(a&&0!==a.length){d||(d=h);for(var g=0,i=0;i<a.length;i++)g+=a[i].size;if(g>d){var j=\"Maximum total size limit exceeded: \"+(d/1024|0)+\"KB\";return void(c&&c(a,j,!0))}for(i=0;i<a.length;i++)e(a[i]);f()}else b(a)};var g=!1,h=5898240},jt.VideoStandard={NTSC:{name:\"NTSC\",desc:\"NTSC 60Hz\",totalWidth:228,totalHeight:262,defaultOriginYPct:10.8,defaultHeightPct:85.2,targetFPS:60,pulldowns:{60:{standard:\"NTSC\",frequency:60,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},120:{standard:\"NTSC\",frequency:120,linesPerCycle:131,firstStepCycleLinesAdjust:0,cadence:[0,1],steps:2},50:{standard:\"NTSC\",frequency:50,linesPerCycle:314,firstStepCycleLinesAdjust:2,cadence:[1,1,1,1,2],steps:5},100:{standard:\"NTSC\",frequency:100,linesPerCycle:157,firstStepCycleLinesAdjust:2,cadence:[0,1,0,1,1,0,1,0,1,1],steps:10},TIMER:{standard:\"NTSC\",frequency:62.5,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}},PAL:{name:\"PAL\",desc:\"PAL 50Hz\",totalWidth:228,totalHeight:312,defaultOriginYPct:13.5,defaultHeightPct:77.3,targetFPS:50,pulldowns:{50:{standard:\"PAL\",frequency:50,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},100:{standard:\"PAL\",frequency:100,linesPerCycle:156,firstStepCycleLinesAdjust:1,cadence:[0,1],steps:2},60:{standard:\"PAL\",frequency:60,linesPerCycle:261,firstStepCycleLinesAdjust:-1,cadence:[0,1,1,1,1,1],steps:6},120:{standard:\"PAL\",frequency:120,linesPerCycle:130,firstStepCycleLinesAdjust:5,cadence:[0,0,1,0,1,0,0,1,0,1,0,1],steps:12},TIMER:{standard:\"PAL\",frequency:50,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}}},jt.VideoSignal=function(){\"use strict\";this.connectMonitor=function(a){this.monitor=a},this.setVideoStandard=function(a){this.monitor&&this.monitor.setVideoStandard(a)},this.nextLine=function(a,b){return this.monitor.nextLine(a,b)},this.finishFrame=function(){this.monitor.refresh()},this.signalOff=function(){this.monitor&&this.monitor.videoSignalOff()},this.showOSD=function(a,b){this.monitor&&this.monitor.showOSD(a,b)},this.toggleShowInfo=function(){this.monitor.toggleShowInfo()},this.monitor=null},jt.AudioSignal=function(a,b,c,d){\"use strict\";function e(){if(n>0){if(p<=0)return void(n=0);g(),--n,--p}}function f(){var a=s*Javatari.AUDIO_SIGNAL_BUFFER_RATIO+k*Javatari.AUDIO_SIGNAL_ADD_FRAMES|0;r.length=a,a>o&&jt.Util.arrayFill(r,0,o,a),o=a,t.bufferSize=o,q=o-2,j.flush()}function g(){r[l]=b.nextSample()*d,++l>=o&&(l=0)}function h(){r[l]=0,++l>=o&&(l=0)}function i(a,b){if(b)for(var c=a;c>0;c-=1)h();else for(var d=a;d>0;d-=1)g();p-=a}var j=this;this.flush=function(){l=0,m=0,p=q},this.setFps=function(a){k=c/a|0,f()},this.audioFinishFrame=function(){if(n>0)for(;n>0;)e();n=k},this.retrieveSamples=function(a,b){\nvar c=q-p,d=a-c;d>0&&(d>p&&(d=p),i(d,b)),t.start=m;var e=c+d;return p+=e,m+=e,m>=o&&(m-=o),t},this.audioClockPulse=e,this.getSampleRate=function(){return c},this.toString=function(){return\"AudioSignal \"+a},this.setAudioMonitorBufferSize=function(a){s=a,f()},this.name=a;var k,l=0,m=0,n=0,o=0,p=0,q=0,r=jt.Util.arrayFill(new Array(o),0),s=0,t={buffer:r,bufferSize:o,start:0}},jt.M6502=function(){\"use strict\";function a(){return Jb(function(){Cb(Ba>127),Ba=Ba<<1&255,zb(Ba),Ab(Ba)})}function b(){return Jb(function(){Ja=0})}function c(){return Jb(function(){Ga=0})}function d(){return Jb(function(){Ha=0})}function e(){return Jb(function(){Fa=0})}function f(){return Jb(function(){Ca=Ca-1&255,zb(Ca),Ab(Ca)})}function g(){return Jb(function(){Da=Da-1&255,zb(Da),Ab(Da)})}function h(){return Jb(function(){Ca=Ca+1&255,zb(Ca),Ab(Ca)})}function i(){return Jb(function(){Da=Da+1&255,zb(Da),Ab(Da)})}function j(){return Jb(function(){Ja=1&Ba,Ba>>>=1,zb(Ba),Ea=0})}function k(){return Jb(function(){})}function l(){return Jb(function(){var a=Ba>127;Ba=255&(Ba<<1|Ja),Cb(a),zb(Ba),Ab(Ba)})}function m(){return Jb(function(){var a=1&Ba;Ba=Ba>>>1|Ja<<7,Cb(a),zb(Ba),Ab(Ba)})}function n(){return Jb(function(){Ja=1})}function o(){return Jb(function(){Ga=1})}function p(){return Jb(function(){Ha=1})}function q(){return Jb(function(){Ca=Ba,zb(Ca),Ab(Ca)})}function r(){return Jb(function(){Da=Ba,zb(Da),Ab(Da)})}function s(){return Jb(function(){Ca=Aa,zb(Ca),Ab(Ca)})}function t(){return Jb(function(){Ba=Ca,zb(Ba),Ab(Ba)})}function u(){return Jb(function(){Aa=Ca})}function v(){return Jb(function(){Ba=Da,zb(Ba),Ab(Ba)})}function w(){return[_a,function(){Ib(\"KIL/HLT/JAM\")},function(){Ka--}]}function x(a){return a(function(){Ib(\"NOP/DOP\")})}function y(a){return a(function(){if(Ga){var a=Ma,b=(15&Ba)+(15&a)+Ja;b>9&&(b+=6);var c=(Ba>>4)+(a>>4)+(b>15)<<4;zb(Ba+a+Ja&255),Ab(c),Bb((Ba^c)&~(Ba^a)&128),c>159&&(c+=96),Cb(c>255),Ba=255&(c|15&b)}else{var d=Ba+Ma+Ja;Cb(d>255),Bb((Ba^d)&(Ma^d)&128),Ba=255&d,zb(Ba),Ab(Ba)}})}function z(a){return a(function(){Ba&=Ma,zb(Ba),Ab(Ba)})}function A(a){return a(function(){var a=Ma;zb(Ba&a),Bb(64&a),Ab(a)})}function B(a){return a(function(){var a=Ba-Ma&255;Cb(Ba>=Ma),zb(a),Ab(a)})}function C(a){return a(function(){var a=Ca-Ma&255;Cb(Ca>=Ma),zb(a),Ab(a)})}function D(a){return a(function(){var a=Da-Ma&255;Cb(Da>=Ma),zb(a),Ab(a)})}function E(a){return a(function(){Ba^=Ma,zb(Ba),Ab(Ba)})}function F(a){return a(function(){Ba=Ma,zb(Ba),Ab(Ba)})}function G(a){return a(function(){Ca=Ma,zb(Ca),Ab(Ca)})}function H(a){return a(function(){Da=Ma,zb(Da),Ab(Da)})}function I(a){return a(function(){Ba|=Ma,zb(Ba),Ab(Ba)})}function J(a){return a(function(){if(Ga){var a=Ma,b=(15&Ba)-(15&a)-(1-Ja),c=(Ba>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=Ba-a-(1-Ja);Cb(256&~d),Bb((Ba^a)&(Ba^d)&128),zb(255&d),Ab(d),Ba=255&(c<<4|15&b)}else a=255&~Ma,d=Ba+a+Ja,Cb(d>255),Bb((Ba^d)&(a^d)&128),Ba=255&d,zb(Ba),Ab(Ba)})}function K(a){return a(function(){Ib(\"ANC\"),Ba&=Ma,zb(Ba),Ea=Ja=128&Ba?1:0})}function L(a){return a(function(){Ib(\"ANE\")})}function M(a){return a(function(){Ib(\"ARR\");var a=Ba&Ma,b=Ja?128:0;a=a>>>1|b,Ba=a,zb(a),Ab(a);var c=96&Ba;96==c?(Ja=1,Fa=0):0==c?(Ja=0,Fa=0):32==c?(Ja=0,Fa=1):64==c&&(Ja=1,Fa=1)})}function N(a){return a(function(){Ib(\"ASR\");var a=Ba&Ma;Ja=1&a,a>>>=1,Ba=a,zb(a),Ea=0})}function O(a){return a(function(){Ib(\"LAS\");var a=Aa&Ma;Ba=a,Ca=a,Aa=a,zb(a),Ab(a)})}function P(a){return a(function(){Ib(\"LAX\");var a=Ma;Ba=a,Ca=a,zb(a),Ab(a)})}function Q(a){return a(function(){Ib(\"LXA\");var a=Ba&Ma;Ba=a,Ca=a,zb(a),Ab(a)})}function R(a){return a(function(){Ib(\"SBX\");var a=Ba&Ca,b=Ma,c=a-b&255;Ca=c,Cb(a>=b),zb(c),Ab(c)})}function S(a){return a(function(){Ma=Ba})}function T(a){return a(function(){Ma=Ca})}function U(a){return a(function(){Ma=Da})}function V(a){return a(function(){Ib(\"SAX\"),Ma=Ba&Ca})}function W(a){return a(function(){Ib(\"SHA\"),Ma=Ba&Ca&(Oa>>>8)+1&255})}function X(a){return a(function(){Ib(\"SHS\");var a=Ba&Ca;Aa=a,Ma=a&(Oa>>>8)+1&255})}function Y(a){return a(function(){Ib(\"SHX\"),Ma=Ca&(Oa>>>8)+1&255})}function Z(a){return a(function(){Ib(\"SHY\"),Ma=Da&(Oa>>>8)+1&255})}function $(a){return a(function(){Cb(Ma>127);var a=Ma<<1&255;Ma=a,zb(a),Ab(a)})}function _(a){return a(function(){var a=Ma-1&255;Ma=a,zb(a),Ab(a)})}function aa(a){return a(function(){var a=Ma+1&255;Ma=a,zb(a),Ab(a)})}function ba(a){return a(function(){Ja=1&Ma,Ma>>>=1,zb(Ma),Ea=0})}function ca(a){return a(function(){var a=Ma>127,b=255&(Ma<<1|Ja);Ma=b,Cb(a),zb(b),Ab(b)})}function da(a){return a(function(){var a=1&Ma,b=Ma>>>1|Ja<<7;Ma=b,Cb(a),zb(b),Ab(b)})}function ea(a){return a(function(){Ib(\"DCP\");var a=Ma-1&255;Ma=a,a=Ba-a,Cb(a>=0),zb(a),Ab(a)})}function fa(a){return a(function(){if(Ib(\"ISB\"),Ma=Ma+1&255,Ga){var a=Ma,b=(15&Ba)-(15&a)-(1-Ja),c=(Ba>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=Ba-a-(1-Ja);Cb(256&~d),Bb((Ba^a)&(Ba^d)&128),zb(255&d),Ab(d),Ba=255&(c<<4|15&b)}else a=255&~Ma,d=Ba+a+Ja,Cb(d>255),Bb((Ba^d)&(a^d)&128),Ba=255&d,zb(Ba),Ab(Ba)})}function ga(a){return a(function(){Ib(\"RLA\");var a=Ma,b=Ja;Cb(128&a),a=255&(a<<1|b),Ma=a,Ba&=a,zb(a),Ab(a)})}function ha(a){return a(function(){Ib(\"RRA\");var a=Ma,b=Ja?128:0;if(Cb(1&a),a=a>>>1|b,Ma=a,Ga){var c=Ma,d=(15&Ba)+(15&c)+Ja;d>9&&(d+=6);var e=(Ba>>4)+(c>>4)+(d>15)<<4;zb(Ba+c+Ja&255),Ab(e),Bb((Ba^e)&~(Ba^c)&128),e>159&&(e+=96),Cb(e>255),Ba=255&(e|15&d)}else{var f=Ba+Ma+Ja;Cb(f>255),Bb((Ba^f)&(Ma^f)&128),Ba=255&f,zb(Ba),Ab(Ba)}})}function ia(a){return a(function(){Ib(\"SLO\");var a=Ma;Cb(128&a),a=a<<1&255,Ma=a,a|=Ba,Ba=a,zb(a),Ab(a)})}function ja(a){return a(function(){Ib(\"SRE\");var a=Ma;Cb(1&a),a>>>=1,Ma=a,a=255&(Ba^a),Ba=a,zb(a),Ab(a)})}function ka(){return[_a,bb,function(){Fb(Ba)},ab]}function la(){return[_a,bb,function(){Fb(Gb())},ab]}function ma(){return[_a,bb,Eb,function(){Ba=Db(),zb(Ba),Ab(Ba)},ab]}function na(){return[_a,bb,Eb,function(){Hb(Db())},ab]}function oa(){return[_a,db,Eb,function(){Fb(za>>>8&255)},function(){Fb(255&za)},eb,function(){za=Na,ab()}]}function pa(){return[_a,sb,function(){va.debug&&va.breakpoint(\"BRK \"+Ma),Fb(za>>>8&255)},function(){Fb(255&za)},function(){Fb(Gb())},function(){Na=wa.read(Ua)},function(){Na|=wa.read(Ua+1)<<8},function(){za=Na,ab()}]}function qa(){return[_a,bb,Eb,function(){Hb(Db())},function(){Na=Db()},function(){Na|=Db()<<8},function(){za=Na,ab()}]}function ra(){return[_a,bb,Eb,function(){Na=Db()},function(){Na|=Db()<<8},function(){za=Na,sb()},ab]}function sa(){return[_a,db,eb,function(){za=Na,ab()}]}function ta(){return[_a,pb,qb,jb,function(){rb(),kb()},function(){za=Oa,ab()}]}function ua(a,b){var c;return c=a===Za?function(){return Ia===b}:a===Xa?function(){return Ea===b}:a===$a?function(){return Ja===b}:function(){return Fa===b},[_a,cb,function(){c()?(bb(),xb()):ab()},function(){Sa?(bb(),yb()):ab()},ab]}var va=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){ya&&(Ka++,xa[Ka]())},this.connectBus=function(a){wa=a},this.setRDY=function(a){ya=a},this.reset=function(){Ha=1,Ka=-1,xa=[_a],za=wa.read(Ta)|wa.read(Ta+1)<<8,this.setRDY(!0)};var wa,xa,ya=!1,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=-1,La=-1,Ma=0,Na=0,Oa=0,Pa=!1,Qa=0,Ra=0,Sa=0,Ta=65532,Ua=65534,Va=0,Wa=1,Xa=7,Ya=6,Za=1,$a=0;this.debug=!1,this.trace=!1;var _a=function(){La=wa.read(za),xa=cc[La],Ka=0,za++},ab=_a,bb=function(){wa.read(za)},cb=function(){Ra=wa.read(za),za++},db=function(){Na=wa.read(za),za++},eb=function(){Na|=wa.read(za)<<8,za++},fb=function(){Na=wa.read(Oa)},gb=function(){Na|=wa.read(Oa)<<8},hb=function(){Oa=wa.read(za),za++},ib=function(){Oa|=wa.read(za)<<8,za++},jb=function(){Oa=wa.read(Qa)},kb=function(){Oa|=wa.read(Qa)<<8},lb=function(){var a=(255&Oa)+Ca;Pa=a>255,Oa=65280&Oa|255&a},mb=function(){var a=(255&Oa)+Da;Pa=a>255,Oa=65280&Oa|255&a},nb=function(){var a=(255&Oa)+1;Pa=a>255,Oa=65280&Oa|255&a},ob=function(){Pa&&(Oa=Oa+256&65535)},pb=function(){Qa=wa.read(za),za++},qb=function(){\nQa|=wa.read(za)<<8,za++},rb=function(){var a=(255&Qa)+1;Qa=65280&Qa|255&a},sb=function(){Ma=wa.read(za),za++},tb=function(){Ma=wa.read(Na)},ub=function(){Ma=wa.read(Oa)},vb=function(){wa.write(Na,Ma)},wb=function(){wa.write(Oa,Ma)},xb=function(){var a=255&za,b=a+Ra&255;Sa=Ra>127?b>a?-256:0:b<a?256:0,za=65280&za|b},yb=function(){za=za+Sa&65535},zb=function(a){Ia=0===a?1:0},Ab=function(a){Ea=128&a?1:0},Bb=function(a){Fa=a?1:0},Cb=function(a){Ja=a?1:0},Db=function(){return Aa=Aa+1&255,wa.read(256+Aa)},Eb=function(){return wa.read(256+Aa)},Fb=function(a){wa.write(256+Aa,a),Aa=Aa-1&255},Gb=function(){return Ea<<7|Fa<<6|48|Ga<<3|Ha<<2|Ia<<1|Ja},Hb=function(a){Ea=a>>>7,Fa=a>>>6&1,Ga=a>>>3&1,Ha=a>>>2&1,Ia=a>>>1&1,Ja=1&a},Ib=function(a){va.debug&&va.breakpoint(\"Illegal Opcode: \"+a)},Jb=function(a){return[_a,bb,function(){a(),ab()}]},Kb=function(a){return[_a,sb,function(){a(),ab()}]},Lb=function(a){return[_a,db,tb,function(){a(),ab()}]},Mb=function(a){return[_a,db,eb,tb,function(){a(),ab()}]},Nb=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},tb,function(){a(),ab()}]},Ob=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},function(){Pa?ub():(a(),ab())},function(){a(),ab()}]}},Pb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),ub()},function(){a(),ab()}]}},Qb=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},function(){Pa?ub():(a(),ab())},function(){a(),ab()}]},Rb=function(a){return[_a,db,function(){a(),vb()},ab]},Sb=function(a){return[_a,db,eb,function(){a(),vb()},ab]},Tb=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},function(){a(),vb()},ab]},Ub=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},function(){a(),wb()},ab]}},Vb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),a(),wb()},ab]}},Wb=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},function(){a(),wb()},ab]},Xb=function(a){return[_a,db,tb,vb,function(){a(),vb()},ab]},Yb=function(a){return[_a,db,eb,tb,vb,function(){a(),vb()},ab]},Zb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),ub()},wb,function(){a(),wb()},ab]}},$b=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},ub,wb,function(){a(),wb()},ab]}},_b=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},tb,vb,function(){a(),vb()},ab]},ac=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},ub,wb,function(){a(),wb()},ab]},bc=new Array(256),cc=new Array(256);bc[0]=\"BRK\",cc[0]=pa(),bc[1]=\"ORA\",cc[1]=I(Nb),bc[2]=\"uKIL\",cc[2]=w(),bc[3]=\"uSLO\",cc[3]=ia(_b),bc[4]=\"uNOP\",cc[4]=x(Lb),bc[5]=\"ORA\",cc[5]=I(Lb),bc[6]=\"ASL\",cc[6]=$(Xb),bc[7]=\"uSLO\",cc[7]=ia(Xb),bc[8]=\"PHP\",cc[8]=la(),bc[9]=\"ORA\",cc[9]=I(Kb),bc[10]=\"ASL\",cc[10]=a(),bc[11]=\"uANC\",cc[11]=K(Kb),bc[12]=\"uNOP\",cc[12]=x(Mb),bc[13]=\"ORA\",cc[13]=I(Mb),bc[14]=\"ASL\",cc[14]=$(Yb),bc[15]=\"uSLO\",cc[15]=ia(Yb),bc[16]=\"BPL\",cc[16]=ua(Xa,0),bc[17]=\"ORA\",cc[17]=I(Qb),bc[18]=\"uKIL\",cc[18]=w(),bc[19]=\"uSLO\",cc[19]=ia(ac),bc[20]=\"uNOP\",cc[20]=x(Pb(Va)),bc[21]=\"ORA\",cc[21]=I(Pb(Va)),bc[22]=\"ASL\",cc[22]=$(Zb(Va)),bc[23]=\"uSLO\",cc[23]=ia(Zb(Va)),bc[24]=\"CLC\",cc[24]=b(),bc[25]=\"ORA\",cc[25]=I(Ob(Wa)),bc[26]=\"uNOP\",cc[26]=x(Jb),bc[27]=\"uSLO\",cc[27]=ia($b(Wa)),bc[28]=\"uNOP\",cc[28]=x(Ob(Va)),bc[29]=\"ORA\",cc[29]=I(Ob(Va)),bc[30]=\"ASL\",cc[30]=$($b(Va)),bc[31]=\"uSLO\",cc[31]=ia($b(Va)),bc[32]=\"JSR\",cc[32]=oa(),bc[33]=\"AND\",cc[33]=z(Nb),bc[34]=\"uKIL\",cc[34]=w(),bc[35]=\"uRLA\",cc[35]=ga(_b),bc[36]=\"BIT\",cc[36]=A(Lb),bc[37]=\"AND\",cc[37]=z(Lb),bc[38]=\"ROL\",cc[38]=ca(Xb),bc[39]=\"uRLA\",cc[39]=ga(Xb),bc[40]=\"PLP\",cc[40]=na(),bc[41]=\"AND\",cc[41]=z(Kb),bc[42]=\"ROL\",cc[42]=l(),bc[43]=\"uANC\",cc[43]=K(Kb),bc[44]=\"BIT\",cc[44]=A(Mb),bc[45]=\"AND\",cc[45]=z(Mb),bc[46]=\"ROL\",cc[46]=ca(Yb),bc[47]=\"uRLA\",cc[47]=ga(Yb),bc[48]=\"BMI\",cc[48]=ua(Xa,1),bc[49]=\"AND\",cc[49]=z(Qb),bc[50]=\"uKIL\",cc[50]=w(),bc[51]=\"uRLA\",cc[51]=ga(ac),bc[52]=\"uNOP\",cc[52]=x(Pb(Va)),bc[53]=\"AND\",cc[53]=z(Pb(Va)),bc[54]=\"ROL\",cc[54]=ca(Zb(Va)),bc[55]=\"uRLA\",cc[55]=ga(Zb(Va)),bc[56]=\"SEC\",cc[56]=n(),bc[57]=\"AND\",cc[57]=z(Ob(Wa)),bc[58]=\"uNOP\",cc[58]=x(Jb),bc[59]=\"uRLA\",cc[59]=ga($b(Wa)),bc[60]=\"uNOP\",cc[60]=x(Ob(Va)),bc[61]=\"AND\",cc[61]=z(Ob(Va)),bc[62]=\"ROL\",cc[62]=ca($b(Va)),bc[63]=\"uRLA\",cc[63]=ga($b(Va)),bc[64]=\"RTI\",cc[64]=qa(),bc[65]=\"EOR\",cc[65]=E(Nb),bc[66]=\"uKIL\",cc[66]=w(),bc[67]=\"uSRE\",cc[67]=ja(_b),bc[68]=\"uNOP\",cc[68]=x(Lb),bc[69]=\"EOR\",cc[69]=E(Lb),bc[70]=\"LSR\",cc[70]=ba(Xb),bc[71]=\"uSRE\",cc[71]=ja(Xb),bc[72]=\"PHA\",cc[72]=ka(),bc[73]=\"EOR\",cc[73]=E(Kb),bc[74]=\"LSR\",cc[74]=j(),bc[75]=\"uASR\",cc[75]=N(Kb),bc[76]=\"JMP\",cc[76]=sa(),bc[77]=\"EOR\",cc[77]=E(Mb),bc[78]=\"LSR\",cc[78]=ba(Yb),bc[79]=\"uSRE\",cc[79]=ja(Yb),bc[80]=\"BVC\",cc[80]=ua(Ya,0),bc[81]=\"EOR\",cc[81]=E(Qb),bc[82]=\"uKIL\",cc[82]=w(),bc[83]=\"uSRE\",cc[83]=ja(ac),bc[84]=\"uNOP\",cc[84]=x(Pb(Va)),bc[85]=\"EOR\",cc[85]=E(Pb(Va)),bc[86]=\"LSR\",cc[86]=ba(Zb(Va)),bc[87]=\"uSRE\",cc[87]=ja(Zb(Va)),bc[88]=\"CLI\",cc[88]=d(),bc[89]=\"EOR\",cc[89]=E(Ob(Wa)),bc[90]=\"uNOP\",cc[90]=x(Jb),bc[91]=\"uSRE\",cc[91]=ja($b(Wa)),bc[92]=\"uNOP\",cc[92]=x(Ob(Va)),bc[93]=\"EOR\",cc[93]=E(Ob(Va)),bc[94]=\"LSR\",cc[94]=ba($b(Va)),bc[95]=\"uSRE\",cc[95]=ja($b(Va)),bc[96]=\"RTS\",cc[96]=ra(),bc[97]=\"ADC\",cc[97]=y(Nb),bc[98]=\"uKIL\",cc[98]=w(),bc[99]=\"uRRA\",cc[99]=ha(_b);bc[100]=\"uNOP\";cc[100]=x(Lb),bc[101]=\"ADC\",cc[101]=y(Lb),bc[102]=\"ROR\",cc[102]=da(Xb),bc[103]=\"uRRA\",cc[103]=ha(Xb),bc[104]=\"PLA\",cc[104]=ma(),bc[105]=\"ADC\",cc[105]=y(Kb),bc[106]=\"ROR\",cc[106]=m(),bc[107]=\"uARR\",cc[107]=M(Kb),bc[108]=\"JMP\",cc[108]=ta(),bc[109]=\"ADC\",cc[109]=y(Mb),bc[110]=\"ROR\",cc[110]=da(Yb),bc[111]=\"uRRA\",cc[111]=ha(Yb),bc[112]=\"BVS\",cc[112]=ua(Ya,1),bc[113]=\"ADC\",cc[113]=y(Qb),bc[114]=\"uKIL\",cc[114]=w(),bc[115]=\"uRRA\",cc[115]=ha(ac),bc[116]=\"uNOP\",cc[116]=x(Pb(Va)),bc[117]=\"ADC\",cc[117]=y(Pb(Va)),bc[118]=\"ROR\",cc[118]=da(Zb(Va)),bc[119]=\"uRRA\",cc[119]=ha(Zb(Va)),bc[120]=\"SEI\",cc[120]=p(),bc[121]=\"ADC\",cc[121]=y(Ob(Wa)),bc[122]=\"uNOP\",cc[122]=x(Jb),bc[123]=\"uRRA\",cc[123]=ha($b(Wa)),bc[124]=\"uNOP\",cc[124]=x(Ob(Va)),bc[125]=\"ADC\",cc[125]=y(Ob(Va)),bc[126]=\"ROR\",cc[126]=da($b(Va)),bc[127]=\"uRRA\",cc[127]=ha($b(Va)),bc[128]=\"uNOP\",cc[128]=x(Kb),bc[129]=\"STA\",cc[129]=S(Tb),bc[130]=\"uNOP\",cc[130]=x(Kb),bc[131]=\"uSAX\",cc[131]=V(Tb),bc[132]=\"STY\",cc[132]=U(Rb),bc[133]=\"STA\",cc[133]=S(Rb),bc[134]=\"STX\",cc[134]=T(Rb),bc[135]=\"uSAX\",cc[135]=V(Rb),bc[136]=\"DEY\",cc[136]=g(),bc[137]=\"uNOP\",cc[137]=x(Kb),bc[138]=\"TXA\",cc[138]=t(),bc[139]=\"uANE\",cc[139]=L(Kb),bc[140]=\"STY\",cc[140]=U(Sb),bc[141]=\"STA\",cc[141]=S(Sb),bc[142]=\"STX\",cc[142]=T(Sb),bc[143]=\"uSAX\",cc[143]=V(Sb),bc[144]=\"BCC\",cc[144]=ua($a,0),bc[145]=\"STA\",cc[145]=S(Wb),bc[146]=\"uKIL\",cc[146]=w(),bc[147]=\"uSHA\",cc[147]=W(Wb),bc[148]=\"STY\",cc[148]=U(Vb(Va)),bc[149]=\"STA\",cc[149]=S(Vb(Va)),bc[150]=\"STX\",cc[150]=T(Vb(Wa)),bc[151]=\"uSAX\",cc[151]=V(Vb(Wa)),bc[152]=\"TYA\",cc[152]=v(),bc[153]=\"STA\",cc[153]=S(Ub(Wa)),bc[154]=\"TXS\",cc[154]=u(),bc[155]=\"uSHS\",cc[155]=X(Ub(Wa)),bc[156]=\"uSHY\",cc[156]=Z(Ub(Va)),bc[157]=\"STA\",cc[157]=S(Ub(Va)),bc[158]=\"uSHX\",cc[158]=Y(Ub(Wa)),bc[159]=\"uSHA\",cc[159]=W(Ub(Wa)),bc[160]=\"LDY\",cc[160]=H(Kb),bc[161]=\"LDA\",cc[161]=F(Nb),bc[162]=\"LDX\",cc[162]=G(Kb),bc[163]=\"uLAX\",cc[163]=P(Nb),bc[164]=\"LDY\",cc[164]=H(Lb),bc[165]=\"LDA\",cc[165]=F(Lb),bc[166]=\"LDX\",cc[166]=G(Lb),bc[167]=\"uLAX\",cc[167]=P(Lb),bc[168]=\"TAY\",cc[168]=r(),bc[169]=\"LDA\",cc[169]=F(Kb),bc[170]=\"TAX\",cc[170]=q(),bc[171]=\"uLXA\",cc[171]=Q(Kb),bc[172]=\"LDY\",cc[172]=H(Mb),bc[173]=\"LDA\",cc[173]=F(Mb),bc[174]=\"LDX\",cc[174]=G(Mb),bc[175]=\"uLAX\",cc[175]=P(Mb),bc[176]=\"BCS\",cc[176]=ua($a,1),bc[177]=\"LDA\",cc[177]=F(Qb),bc[178]=\"uKIL\",cc[178]=w(),bc[179]=\"uLAX\",cc[179]=P(Qb),bc[180]=\"LDY\",cc[180]=H(Pb(Va)),bc[181]=\"LDA\",cc[181]=F(Pb(Va)),bc[182]=\"LDX\",cc[182]=G(Pb(Wa)),bc[183]=\"uLAX\",cc[183]=P(Pb(Wa)),bc[184]=\"CLV\",\ncc[184]=e(),bc[185]=\"LDA\",cc[185]=F(Ob(Wa)),bc[186]=\"TSX\",cc[186]=s(),bc[187]=\"uLAS\",cc[187]=O(Ob(Wa)),bc[188]=\"LDY\",cc[188]=H(Ob(Va)),bc[189]=\"LDA\",cc[189]=F(Ob(Va)),bc[190]=\"LDX\",cc[190]=G(Ob(Wa)),bc[191]=\"uLAX\",cc[191]=P(Ob(Wa)),bc[192]=\"CPY\",cc[192]=D(Kb),bc[193]=\"CMP\",cc[193]=B(Nb),bc[194]=\"uNOP\",cc[194]=x(Kb),bc[195]=\"uDCP\",cc[195]=ea(_b),bc[196]=\"CPY\",cc[196]=D(Lb),bc[197]=\"CMP\",cc[197]=B(Lb),bc[198]=\"DEC\",cc[198]=_(Xb),bc[199]=\"uDCP\",cc[199]=ea(Xb),bc[200]=\"INY\";cc[200]=i();bc[201]=\"CMP\",cc[201]=B(Kb),bc[202]=\"DEX\",cc[202]=f(),bc[203]=\"uSBX\",cc[203]=R(Kb),bc[204]=\"CPY\",cc[204]=D(Mb),bc[205]=\"CMP\",cc[205]=B(Mb),bc[206]=\"DEC\",cc[206]=_(Yb),bc[207]=\"uDCP\",cc[207]=ea(Yb),bc[208]=\"BNE\",cc[208]=ua(Za,0),bc[209]=\"CMP\",cc[209]=B(Qb),bc[210]=\"uKIL\",cc[210]=w(),bc[211]=\"uDCP\",cc[211]=ea(ac),bc[212]=\"uNOP\",cc[212]=x(Pb(Va)),bc[213]=\"CMP\",cc[213]=B(Pb(Va)),bc[214]=\"DEC\",cc[214]=_(Zb(Va)),bc[215]=\"uDCP\",cc[215]=ea(Zb(Va)),bc[216]=\"CLD\",cc[216]=c(),bc[217]=\"CMP\",cc[217]=B(Ob(Wa)),bc[218]=\"uNOP\",cc[218]=x(Jb),bc[219]=\"uDCP\",cc[219]=ea($b(Wa)),bc[220]=\"uNOP\",cc[220]=x(Ob(Va)),bc[221]=\"CMP\",cc[221]=B(Ob(Va)),bc[222]=\"DEC\",cc[222]=_($b(Va)),bc[223]=\"uDCP\",cc[223]=ea($b(Va)),bc[224]=\"CPX\",cc[224]=C(Kb),bc[225]=\"SBC\",cc[225]=J(Nb),bc[226]=\"uNOP\",cc[226]=x(Kb),bc[227]=\"uISB\",cc[227]=fa(_b),bc[228]=\"CPX\",cc[228]=C(Lb),bc[229]=\"SBC\",cc[229]=J(Lb),bc[230]=\"INC\",cc[230]=aa(Xb),bc[231]=\"uISB\",cc[231]=fa(Xb),bc[232]=\"newINX\",cc[232]=h(),bc[233]=\"SBC\",cc[233]=J(Kb),bc[234]=\"NOP\",cc[234]=k(),bc[235]=\"SBC\",cc[235]=J(Kb),bc[236]=\"CPX\",cc[236]=C(Mb),bc[237]=\"SBC\",cc[237]=J(Mb),bc[238]=\"INC\",cc[238]=aa(Yb),bc[239]=\"uISB\",cc[239]=fa(Yb),bc[240]=\"BEQ\",cc[240]=ua(Za,1),bc[241]=\"SBC\",cc[241]=J(Qb),bc[242]=\"uKIL\",cc[242]=w(),bc[243]=\"uISB\",cc[243]=fa(ac),bc[244]=\"uNOP\",cc[244]=x(Pb(Va)),bc[245]=\"SBC\",cc[245]=J(Pb(Va)),bc[246]=\"INC\",cc[246]=aa(Zb(Va)),bc[247]=\"uISB\",cc[247]=fa(Zb(Va)),bc[248]=\"SED\",cc[248]=o(),bc[249]=\"SBC\",cc[249]=J(Ob(Wa)),bc[250]=\"uNOP\",cc[250]=x(Jb),bc[251]=\"uISB\",cc[251]=fa($b(Wa)),bc[252]=\"uNOP\",cc[252]=x(Ob(Va)),bc[253]=\"SBC\",cc[253]=J(Ob(Va)),bc[254]=\"INC\",cc[254]=aa($b(Va)),bc[255]=\"uISB\",cc[255]=fa($b(Va)),this.saveState=function(){return{PC:za,A:Ba,X:Ca,Y:Da,SP:Aa,N:Ea,V:Fa,D:Ga,I:Ha,Z:Ia,C:Ja,T:Ka,o:La,R:0|ya,d:Ma,AD:Na,BA:Oa,BC:0|Pa,IA:Qa,bo:Ra,boa:Sa}},this.loadState=function(a){za=a.PC,Ba=a.A,Ca=a.X,Da=a.Y,Aa=a.SP,Ea=a.N,Fa=a.V,Ga=a.D,Ha=a.I,Ia=a.Z,Ja=a.C,Ka=a.T,La=a.o,ya=!!a.R,Ma=a.d,Na=a.AD,Oa=a.BA,Pa=!!a.BC,Qa=a.IA,Ra=a.bo,Sa=a.boa,xa=cc[La]},this.toString=function(){return\"CPU  PC: \"+za.toString(16)+\"  op: \"+La.toString()+\"  T: \"+Ka+\"  data: \"+Ma+\"\\n A: \"+Ba.toString(16)+\"  X: \"+Ca.toString(16)+\"  Y: \"+Da.toString(16)+\"  SP: \"+Aa.toString(16)+\"     N\"+Ea+\"  V\"+Fa+\"  D\"+Ga+\"  I\"+Ha+\"  Z\"+Ia+\"  C\"+Ja+\"  \"},this.breakpoint=function(a){if(jt.Util.log(a),this.trace){var b=\"CPU Breakpoint!  \"+(a?\"(\"+a+\")\":\"\")+\"\\n\\n\"+this.toString();jt.Util.message(b)}},this.runCycles=function(a){for(var b=performance.now(),c=0;c<a;c++)this.clockPulse();var d=performance.now();jt.Util.message(\"Done running \"+a+\" cycles in \"+(d-b)+\" ms.\")}},jt.Ram=function(){\"use strict\";function a(){for(var a=b.length-1;a>=0;a--)b[a]=256*Math.random()|0}this.powerOn=function(){},this.powerOff=function(){},this.read=function(a){return b[a&c]},this.write=function(a,d){b[a&c]=d},this.powerFry=function(){for(var a=1-f+2*Math.random()*f,c=a*d,g=0;g<c;g++)b[128*Math.random()|0]&=256*Math.random()|0;var h=a*e;for(g=0;g<h;g++)b[128*Math.random()|0]|=1<<(8*Math.random()|0)},this.saveState=function(){return{b:jt.Util.storeInt8BitArrayToStringBase64(b)}},this.loadState=function(a){b=jt.Util.restoreStringBase64ToInt8BitArray(a.b,b)};var b=new Array(128),c=127,d=120,e=25,f=.3;a()},jt.Pia=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.clockPulse=function(){--h<=0&&a()},this.connectBus=function(a){g=a},this.read=function(a){var b=a&u;return 4===b||6===b?(c(),o):0===b?k:2===b?m:1===b?l:3===b?n:5===b||7===b?p:0},this.write=function(a,c){var f=a&u;return 4===f?(q=c,void b(c,1)):5===f?(r=c,void b(c,8)):6===f?(s=c,void b(c,64)):7===f?(t=c,void b(c,1024)):2===f?void d(c):3===f?(n=c,void e(\">>>> Ineffective Write to PIA SWBCNT: \"+c)):0===f?void e(\">>>> Unsupported Write to PIA SWCHA: \"+c):1===f?void e(\">>>> Unsupported Write to PIA SWACNT \"+c):0};var a=function(){--o<0?(p|=192,o=255,h=i=1):h=i},b=function(b,c){o=b,p&=63,h=i=j=c,a()},c=function(){p&=191,1===i&&(h=i=j)},d=function(a){m=203&m|34&a},e=function(a){self.debug&&jt.Util.log(a)},f=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case f.JOY0_UP:return void(b?k&=239:k|=16);case f.JOY0_DOWN:return void(b?k&=223:k|=32);case f.PADDLE1_BUTTON:case f.JOY0_LEFT:return void(b?k&=191:k|=64);case f.PADDLE0_BUTTON:case f.JOY0_RIGHT:return void(b?k&=127:k|=128);case f.JOY1_UP:return void(b?k&=254:k|=1);case f.JOY1_DOWN:return void(b?k&=253:k|=2);case f.JOY1_LEFT:return void(b?k&=251:k|=4);case f.JOY1_RIGHT:return void(b?k&=247:k|=8);case f.RESET:return void(b?m&=254:m|=1);case f.SELECT:return void(b?m&=253:m|=2)}if(b)switch(a){case f.BLACK_WHITE:return 0==(8&m)?m|=8:m&=247,void g.getTia().getVideoOutput().showOSD(0!=(8&m)?\"COLOR\":\"B/W\",!0);case f.DIFFICULTY0:return 0==(64&m)?m|=64:m&=191,void g.getTia().getVideoOutput().showOSD(0!=(64&m)?\"P1 Expert\":\"P1 Novice\",!0);case f.DIFFICULTY1:return 0==(128&m)?m|=128:m&=127,void g.getTia().getVideoOutput().showOSD(0!=(128&m)?\"P2 Expert\":\"P2 Novice\",!0)}},this.controlsStateReport=function(a){a[f.BLACK_WHITE]=0===(8&m),a[f.DIFFICULTY0]=0!==(64&m),a[f.DIFFICULTY1]=0!==(128&m),a[f.SELECT]=0===(2&m),a[f.RESET]=0===(1&m)},this.saveState=function(){return{t:h,c:i,l:j,SA:k,SAC:l,SB:m,SBC:n,IT:o,IS:p,T1:q,T8:r,T6:s,T2:t}},this.loadState=function(a){h=a.t,i=a.c,j=a.l,l=a.SAC,m=a.SB,n=a.SBC,o=a.IT,p=a.IS,q=a.T1,r=a.T8,s=a.T6,t=a.T2},this.debug=!1;var g,h=1024,i=1024,j=1024,k=255,l=0,m=11,n=0,o=256*Math.random()|0,p=0,q=0,r=0,s=0,t=0,u=7},function(){\"use strict\";for(var a=[0,4210752,7105644,9474192,11579568,13158600,14474460,16053492,17476,1074276,2393220,3448992,4241592,5296336,6088936,6880508,10352,1328260,2645144,3963052,5016764,6070476,6862044,7915756,6276,1586328,3166380,4745408,6062288,7378144,8431852,9747708,136,2105500,3947696,5789888,7368912,8947936,10526956,11842812,6029432,7610508,8928416,10246320,11563200,12616912,13671644,14725356,7864392,9445472,10763384,12081292,13398176,14451892,15506628,16560340,8650772,9969712,11287628,12605544,13660284,14715028,15507624,16561340,8912896,10231836,11550776,12606544,13661288,14716028,15508624,16562340,8132608,9451548,11031608,12349520,13404264,14457980,15512720,16566436,6040576,7883804,9463864,11306064,12622952,13939836,15256720,16572580,2898944,4742172,6585400,8428624,9745512,11325564,12641424,13958308,15360,2120736,4226112,6069340,7648372,9228428,10806436,12123320,14356,1858612,3701840,5281900,6861956,8178844,9495732,10812616,12332,1855564,3436648,5016708,6596764,7913652,8967372,10284256,10308,1591396,3172484,4490400,5807288,7124176,8178920,9232636],b=[0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,22656,2125972,3966120,5807292,7384268,8700124,10277100,11591932,23620,2127964,3969140,5811340,7389344,8705200,10283204,11599060,13424,2117768,3958944,5801140,7379144,8695004,10273004,11588860,1336320,3440672,5281852,7123032,8701040,10279044,11856028,13171888,1310832,3416200,5258400,7100596,8679624,10257628,11836652,13152508,6052864,7631904,9210940,10789976,12105840,13158532,14474396,15527088,6029424,7610500,8928404,10246312,11563188,12616900,13671632,14725344,7355392,8935452,10515512,11832400,13149288,14465148,15518864,16572580,7340120,8921196,10501248,11819156,13136036,14451892,15506628,16560340,7348224,8928284,10508344,11826256,13142120,14459004,15512720,16566436,8388668,9707604,11025516,12343424,13398164,14451880,15506616,16560328,8912896,10231840,11549756,12605528,13660272,14713988,15506588,16560304,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113],c=new Uint32Array(256),d=new Uint32Array(256),e=0,f=a.length;e<f;e++)c[2*e]=c[2*e+1]=a[e]+4278190080,\nd[2*e]=d[2*e+1]=b[e]+4278190080;a=b=void 0,jt.TiaPalettes={NTSC:c,PAL:d}}(),jt.TiaAudio=function(){\"use strict\";function a(){e||(e=new jt.AudioSignal(\"TiaAudio\",c,k,j)),d.connectAudioSignal(e)}function b(){e&&d.disconnectAudioSignal(e)}var c=this;this.connectAudioSocket=function(a){d=a},this.cartridgeInserted=function(a){f=a&&a.needsAudioClock()?a:null},this.audioClockPulse=function(){d.audioClockPulse()},this.getChannel0=function(){return h},this.getChannel1=function(){return i},this.powerOn=function(){this.reset(),a()},this.powerOff=function(){b()},this.reset=function(){h.setVolume(0),i.setVolume(0),g=0},this.nextSample=function(){f&&f.audioClockPulse();var a=h.nextSample()-i.nextSample();return a!==g&&(a=(9*a+g)/10,g=a),a};var d,e,f,g=0,h=new jt.TiaAudioChannel,i=new jt.TiaAudioChannel,j=.4,k=31440},jt.TiaAudioChannel=function(){\"use strict\";this.nextSample=function(){return--s<=0&&(s+=r,t=o()),1===t?p:0},this.setVolume=function(a){p=a/E},this.setDivider=function(a){r!==a&&(s=s/r*a,r=a)},this.setControl=function(b){q!==b&&(q=b,o=0===b||11===b?a:1===b?c:2===b?k:3===b?l:4===b||5===b?f:6===b||10===b?j:7===b||9===b?d:8===b?e:12===b||13===b?h:14===b?m:15===b?n:a)};var a=function(){return 1},b=function(){return z[y]},c=function(){return 15===++y&&(y=0),z[y]},d=function(){return 31===++A&&(A=0),B[A]},e=function(){var a=1&x,b=1&(x>>4^a);return x>>>=1,0===b?x&=255:x|=256,a},f=function(){return 1===r?1:u=u?0:1},g=function(){return v},h=function(){return 0===--w&&(w=3,v=v?0:1),v},i=function(){return D[C]},j=function(){return 31===++C&&(C=0),D[C]},k=function(){return i()!==j()?c():b()},l=function(){return d()?c():b()},m=function(){return i()!=j()?h():g()},n=function(){return d()?h():g()},o=a,p=0,q=0,r=1,s=1,t=0,u=1,v=1,w=3,x=511,y=14,z=[1,1,1,1,0,0,0,1,0,0,1,1,0,1,0],A=30,B=[1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0],C=30,D=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],E=15},jt.Tia=function(pCpu,pPia,audioSocket){\"use strict\";function init(){generateObjectsLineSprites(),generateObjectsCopiesOffsets()}function renderLineTo(a){var b,c=a>LINE_WIDTH?LINE_WIDTH:a;if(vBlankOn)for(var d=renderClock;d<c;++d)linePixels[d]=vBlankColor;else{for(var e=collisions,f=renderClock-HBLANK_DURATION,g=c-HBLANK_DURATION;f<g;++f){var h=0,i=collisionsPossible;playfieldPriority&&(playfieldEnabled&&(1&(f<80?playfieldPatternL>>(f>>2):playfieldPatternR>>(f-80>>2))?h=playfieldColor:i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),player0Enabled&&(b=f-player0Pixel,b<0&&(b+=160),playerLineSprites[player0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player0Color):i&=P0C),missile0Enabled&&(b=f-missile0Pixel,b<0&&(b+=160),missileBallLineSprites[missile0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile0Color):i&=M0C),player1Enabled&&(b=f-player1Pixel,b<0&&(b+=160),playerLineSprites[player1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player1Color):i&=P1C),missile1Enabled&&(b=f-missile1Pixel,b<0&&(b+=160),missileBallLineSprites[missile1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile1Color):i&=M1C),playfieldPriority||(playfieldEnabled&&(f<80?playfieldPatternL>>(f>>2)&1?h||(h=playfieldLeftColor):i&=PFC:playfieldPatternR>>(f-80>>2)&1?h||(h=playfieldRightColor):i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),linePixels[f+HBLANK_DURATION]=h||playfieldBackground,e|=i}debugNoCollisions||(collisions=e)}}function changeAt(a){vBlankOn||(a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock)}function changeAtClock(){changeAt(clock)}function changeAtClockPlus(a){changeAt(clock+a)}function changePlayfieldAtClock(){if(debug&&debugPixel(DEBUG_PF_GR_COLOR),clock<renderClock-1)return changeAtClock();var a=3&clock;changeAtClockPlus(a<3?4-a:5)}function changeVBlankAtClockPlus1(){var a=clock+1;a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock}function updateToClock(){vBlankOn||clock>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(clock),renderClock=clock)}function augmentCollisionsPossible(){collisionsPossible=65534,player0Enabled||(collisionsPossible&=P0C),player1Enabled||(collisionsPossible&=P1C),missile0Enabled||(collisionsPossible&=M0C),missile1Enabled||(collisionsPossible&=M1C),playfieldEnabled||(collisionsPossible&=PFC),ballEnabled||(collisionsPossible&=BLC)}function playfieldUpdateSprite(){playfieldPatternL=PF2<<12|jt.Util.reverseInt8(PF1)<<4|(240&PF0)>>4,playfieldUpdateSpriteR()}function playfieldUpdateSpriteR(){playfieldPatternR=playfieldReflected?jt.Util.reverseInt8(PF0)<<16|PF1<<8|jt.Util.reverseInt8(PF2):playfieldPatternL,0!==playfieldPatternL||0!==playfieldPatternR?(playfieldEnabled=!0,augmentCollisionsPossible()):(playfieldEnabled=!1,collisionsPossible&=PFC)}function ballSetEnabled(a){a?(ballEnabled=!0,augmentCollisionsPossible()):(ballEnabled=!1,collisionsPossible&=BLC)}function player0SetShape(a){if(NUSIZ0!==a){var b=NUSIZ0^a,c=NUSIZ0;NUSIZ0=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player0Alt){var f=e-player0Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];if(h!==g)if(player0Enabled&&changeAtClockPlus(2),player0Alt=player0Pixel>=80?1:2,player0LineSpritePointer+=20,player0AltFrom=f,player0AltLength=playerCopyLengthPerShape[d],192&g)player0AltCopyOffset=191&g;else if(clock<HBLANK_DURATION&&hMoveHitBlank)player0AltCopyOffset=128;else{var i=playerPixelSizePerShape[d];player0AltCopyOffset=playerScanStartPerShape[d]+g*i+(1&f),player0AltLength-=(192&h?0:h)*i}}player0UpdateSprite(2)}if(55&b){if(!missile0Alt&&(f=e-missile0Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],h=missileScanOffsetsShape[160*((48&a)>>1|d)+f],h!==g)){missile0Enabled&&changeAtClockPlus(2),missile0Alt=missile0Pixel>=80?1:2,missile0LineSpritePointer+=20,missile0AltFrom=f;var j=(48&a)>>4;missile0AltLength=4+(1<<j),192&g?missile0AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile0AltCopyOffset=128:(missile0AltCopyOffset=4+(g<<j)+(1&f),missile0AltLength-=(192&h?0:h)<<j)}missile0UpdateSprite(2)}}}function player0SetSprite(a){debug&&debugPixel(DEBUG_P0_GR_COLOR),GRP0d!==a&&(GRP0d=a,VDELP0||player0UpdateSprite(1)),GRP1!==GRP1d&&(GRP1=GRP1d,VDELP1&&player1UpdateSprite(1))}function player0UpdateSprite(a){var b=VDELP0?GRP0:GRP0d;if(b){var c=((REFP0<<11|b<<3|7&NUSIZ0)<<6)+(player0Alt?20:0);player0Enabled&&player0LineSpritePointer===c||(changeAtClockPlus(a),player0LineSpritePointer=c,player0Alt&&player0DefineAlt()),player0Enabled||(player0Enabled=!0,augmentCollisionsPossible())}else player0Enabled&&(changeAtClockPlus(a),player0Enabled=!1,collisionsPossible&=P0C)}function player1SetShape(a){if(NUSIZ1!==a){var b=NUSIZ1^a,c=NUSIZ1;NUSIZ1=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player1Alt){var f=e-player1Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];h!==g&&(player1Enabled&&changeAtClockPlus(2),player1Alt=player1Pixel>=80?1:2,player1LineSpritePointer+=40,player1AltFrom=f,player1AltLength=playerCopyLengthPerShape[d],192&g?player1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?player1AltCopyOffset=128:(player1AltCopyOffset=playerScanStartPerShape[d]+g*playerPixelSizePerShape[d]+(1&f),player1AltLength-=(192&h?0:h)*playerPixelSizePerShape[d]))}player1UpdateSprite(2)}if(55&b){if(!missile1Alt&&(f=e-missile1Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],h=missileScanOffsetsShape[160*((48&a)>>1|d)+f],h!==g)){missile1Enabled&&changeAtClockPlus(2),missile1Alt=missile1Pixel>=80?1:2,missile1LineSpritePointer+=40,missile1AltFrom=f;var i=(48&a)>>4;\nmissile1AltLength=4+(1<<i),192&g?missile1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile1AltCopyOffset=128:(missile1AltCopyOffset=4+(g<<i)+(1&f),missile1AltLength-=(192&h?0:h)<<i)}missile1UpdateSprite(2)}}}function player1SetSprite(a){debug&&debugPixel(DEBUG_P1_GR_COLOR),GRP1d!==a&&(GRP1d=a,VDELP1||player1UpdateSprite(1)),GRP0!==GRP0d&&(GRP0=GRP0d,VDELP0&&player0UpdateSprite(1)),ENABL!==ENABLd&&(ENABL=ENABLd,VDELBL&&changeAtClockPlus(1),ballSetEnabled(ENABL))}function player1UpdateSprite(a){var b=VDELP1?GRP1:GRP1d;if(b){var c=((REFP1<<11|b<<3|7&NUSIZ1)<<6)+(player1Alt?40:0);player1Enabled&&player1LineSpritePointer===c||(changeAtClockPlus(a),player1LineSpritePointer=c,player1Alt&&player1DefineAlt()),player1Enabled||(player1Enabled=!0,augmentCollisionsPossible())}else player1Enabled&&(changeAtClockPlus(a),player1Enabled=!1,collisionsPossible&=P1C)}function missile0UpdateSprite(a){var b=(((48&NUSIZ0)>>1|7&NUSIZ0)<<6)+(missile0Alt?20:0);missile0LineSpritePointer!==b&&(missile0Enabled?(changeAtClockPlus(a),missile0LineSpritePointer=b,missile0Alt&&missile0DefineAlt()):missile0LineSpritePointer=b)}function missile0SetEnabled(a){a?(missile0Enabled=!0,augmentCollisionsPossible(),missile0Alt&&missile0DefineAlt()):(missile0Enabled=!1,collisionsPossible&=M0C)}function missile0SetResetToPlayer(a){RESMP0!==(2&a)&&(ENAM0?(changeAtClock(),missile0SetEnabled(!(RESMP0=2&a))):RESMP0=2&a,RESMP0||(missile0Pixel=player0Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ0],missile0Pixel>=160&&(missile0Pixel-=160)))}function missile1UpdateSprite(a){var b=(((48&NUSIZ1)>>1|7&NUSIZ1)<<6)+(missile1Alt?40:0);missile1LineSpritePointer!==b&&(missile1Enabled?(changeAtClockPlus(a),missile1LineSpritePointer=b,missile1Alt&&missile1DefineAlt()):missile1LineSpritePointer=b)}function missile1SetEnabled(a){a?(missile1Enabled=!0,augmentCollisionsPossible(),missile1Alt&&missile1DefineAlt()):(missile1Enabled=!1,collisionsPossible&=M1C)}function missile1SetResetToPlayer(a){RESMP1!==(2&a)&&(ENAM1?(changeAtClock(),missile1SetEnabled(!(RESMP1=2&a))):RESMP1=2&a,RESMP1||(missile1Pixel=player1Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ1],missile1Pixel>=160&&(missile1Pixel-=160)))}function player0DefineAlt(){var a=player0AltFrom<<16|player0AltLength<<8|player0AltCopyOffset,b=player0LineSpritePointer-20>>6;if(player0AltControl[b]!==a){for(var c=player0LineSpritePointer-20,d=0;d<20;++d)playerLineSprites[player0LineSpritePointer+d]=playerLineSprites[c+d];var e=player0AltFrom;if(128&player0AltCopyOffset)for(var f=0;f<player0AltLength;++f)playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=player0AltCopyOffset,h=player0AltCopyOffset+player0AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player0LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player0AltControl[b]=a}}function player1DefineAlt(){var a=player1AltFrom<<16|player1AltLength<<8|player1AltCopyOffset,b=player1LineSpritePointer-40>>6;if(player1AltControl[b]!==a){for(var c=player1LineSpritePointer-40,d=0;d<20;++d)playerLineSprites[player1LineSpritePointer+d]=playerLineSprites[c+d];var e=player1AltFrom;if(128&player1AltCopyOffset)for(var f=0;f<player1AltLength;++f)playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=player1AltCopyOffset,h=player1AltCopyOffset+player1AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player1LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player1AltControl[b]=a}}function missile0DefineAlt(){var a=missile0AltFrom<<16|missile0AltLength<<8|missile0AltCopyOffset,b=missile0LineSpritePointer-20>>6;if(missile0AltControl[b]!==a){for(var c=missile0LineSpritePointer-20,d=0;d<20;++d)missileBallLineSprites[missile0LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile0AltFrom;if(128&missile0AltCopyOffset)for(var f=0;f<missile0AltLength;++f)missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=missile0AltCopyOffset,h=missile0AltCopyOffset+missile0AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile0LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile0AltControl[b]=a}}function missile1DefineAlt(){var a=missile1AltFrom<<16|missile1AltLength<<8|missile1AltCopyOffset,b=missile1LineSpritePointer-40>>6;if(missile1AltControl[b]!==a){for(var c=missile1LineSpritePointer-40,d=0;d<20;++d)missileBallLineSprites[missile1LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile1AltFrom;if(128&missile1AltCopyOffset)for(var f=0;f<missile1AltLength;++f)missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=missile1AltCopyOffset,h=missile1AltCopyOffset+missile1AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile1LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile1AltControl[b]=a}}function getRESxPixel(){if(clock>=HBLANK_DURATION+(hMoveHitBlank?7:0))return clock-HBLANK_DURATION;if(hMoveHitBlank){if(clock>=HBLANK_DURATION)return-6;var a=clock-hMoveHitClock-4>>2;return a>8?-6:a>1?-(a-2):-(158+a)}return-158}function checkLateHMOVE(){hMoveLateHit?(hMoveLateHit=!1,hMoveHitBlank=hMoveLateHitBlank,performHMOVE()):hMoveHitBlank=!1}function updateExtendedHBLANK(){hMoveHitBlank!==(linePixels[HBLANK_DURATION]===hBlankColor)&&(hMoveHitBlank?linePixels[HBLANK_DURATION]=linePixels[HBLANK_DURATION+1]=linePixels[HBLANK_DURATION+2]=linePixels[HBLANK_DURATION+3]=linePixels[HBLANK_DURATION+4]=linePixels[HBLANK_DURATION+5]=linePixels[HBLANK_DURATION+6]=linePixels[HBLANK_DURATION+7]=hBlankColor:changeClock=HBLANK_DURATION),hMoveHitBlank&&(renderClock=HBLANK_DURATION+8)}function endObjectsAltStatusMidLine(){1===player0Alt&&(player0Enabled&&changeAtClock(),player0Alt=0,player0LineSpritePointer-=20),1===player1Alt&&(player1Enabled&&changeAtClock(),player1Alt=0,player1LineSpritePointer-=40),1===missile0Alt&&(missile0Enabled&&changeAtClock(),missile0Alt=0,missile0LineSpritePointer-=20),1===missile1Alt&&(missile1Enabled&&changeAtClock(),missile1Alt=0,missile1LineSpritePointer-=40)}function endObjectsAltStatusEndOfLine(){2===player0Alt&&(player0Alt=0,player0LineSpritePointer-=20),2===player1Alt&&(player1Alt=0,player1LineSpritePointer-=40),2===missile0Alt&&(missile0Alt=0,missile0LineSpritePointer-=20),2===missile1Alt&&(missile1Alt=0,missile1LineSpritePointer-=40)}function vSyncSet(a){debug?(debugPixel(VSYNC_COLOR),changeAtClock(),vSyncOn=0!==(2&a),vBlankColor=vSyncOn?VSYNC_COLOR:DEBUG_VBLANK_COLOR):vSyncOn=0!==(2&a)}function generateObjectsLineSprites(){function a(a,b,c){for(var d=0;d<8;++d)a[c+d]=b>>d&1}function b(a,b,c){for(var d=0;d<8;++d)a[c+2*d]=a[c+2*d+1]=b>>d&1}function c(a,b,c){for(var d=0;d<8;++d)a[c+4*d]=a[c+4*d+1]=a[c+4*d+2]=a[c+4*d+3]=b>>d&1}function d(a,b,c,d,e){for(var f=((a<<11|b<<3|c)<<6)+20*d,g=0;g<20;++g)for(var h=0;h<8;++h)e[8*g+h]&&(playerLineSprites[f+g]|=1<<h)}function e(a,b,c,d){for(var e=((a<<3|b)<<6)+20*c,f=0;f<20;++f)for(var g=0;g<8;++g)d[8*f+g]&&(missileBallLineSprites[e+f]|=1<<g)}for(var f=new Uint8Array(160),g=0;g<=1;++g)for(var h=0;h<256;++h){var i=g?h:jt.Util.reverseInt8(h);a(f,i,5),d(g,h,0,0,f),a(f,i,21),d(g,h,1,0,f),a(f,i,37),d(g,h,3,0,f),a(f,0,21),d(g,h,2,0,f),a(f,i,69),d(g,h,6,0,f),a(f,0,37),d(g,h,4,0,f),a(f,0,69),f[5]=0,b(f,i,6),d(g,h,5,0,f),c(f,i,6),d(g,h,7,0,f),c(f,0,6)}jt.Util.arrayFill(f,0);for(var j=0;j<4;++j)i=(1<<(1<<j))-1,\na(f,i,4),e(j,0,0,f),e(j,5,0,f),e(j,7,0,f),a(f,i,20),e(j,1,0,f),a(f,i,36),e(j,3,0,f),a(f,0,20),e(j,2,0,f),a(f,i,68),e(j,6,0,f),a(f,0,36),e(j,4,0,f),a(f,0,4),a(f,0,68)}function generateObjectsCopiesOffsets(){var a=new Uint8Array(40);a[0]=0,a[1]=1,a[2]=2,a[3]=3,jt.Util.arrayFill(playerCopyOffsetsReset,128),jt.Util.arrayFill(playerScanOffsetsShape,128);for(var b=0;b<13;++b){var c=b-a[b];playerCopyOffsetsReset[0+b]=c,playerCopyOffsetsReset[160+b]=c,playerCopyOffsetsReset[160+b+16]=c,playerCopyOffsetsReset[320+b]=c,playerCopyOffsetsReset[320+b+32]=c,playerCopyOffsetsReset[480+b]=c,playerCopyOffsetsReset[480+b+16]=c,playerCopyOffsetsReset[480+b+32]=c,playerCopyOffsetsReset[640+b]=c,playerCopyOffsetsReset[640+b+64]=c,playerCopyOffsetsReset[960+b]=c,playerCopyOffsetsReset[960+b+32]=c,playerCopyOffsetsReset[960+b+64]=c,c=b<5?64|b:b-5,playerScanOffsetsShape[0+b]=c,playerScanOffsetsShape[160+b]=c,playerScanOffsetsShape[160+b+16]=c,playerScanOffsetsShape[320+b]=c,playerScanOffsetsShape[320+b+32]=c,playerScanOffsetsShape[480+b]=c,playerScanOffsetsShape[480+b+16]=c,playerScanOffsetsShape[480+b+32]=c,playerScanOffsetsShape[640+b]=c,playerScanOffsetsShape[640+b+64]=c,playerScanOffsetsShape[960+b]=c,playerScanOffsetsShape[960+b+32]=c,playerScanOffsetsShape[960+b+64]=c}for(b=0;b<22;b++)c=b-a[b],playerCopyOffsetsReset[800+b]=c,c=b<6?64|b:b-6>>1,playerScanOffsetsShape[800+b]=c;for(b=0;b<38;b++)c=b-a[b],playerCopyOffsetsReset[1120+b]=c,c=b<6?64|b:b-6>>2,playerScanOffsetsShape[1120+b]=c;jt.Util.arrayFill(missileCopyOffsetsReset,128),jt.Util.arrayFill(missileScanOffsetsShape,128);for(var d=0;d<=3;++d){var e=4+(1<<d);for(b=0;b<e;++b)c=b-a[b],missileCopyOffsetsReset[8*d*160+0+b]=c,missileCopyOffsetsReset[8*d*160+160+b]=c,missileCopyOffsetsReset[8*d+160+b+16]=c,missileCopyOffsetsReset[8*d*160+320+b]=c,missileCopyOffsetsReset[8*d+320+b+32]=c,missileCopyOffsetsReset[8*d*160+480+b]=c,missileCopyOffsetsReset[8*d+480+b+16]=c,missileCopyOffsetsReset[8*d*160+480+b+32]=c,missileCopyOffsetsReset[8*d*160+640+b]=c,missileCopyOffsetsReset[8*d+640+b+64]=c,missileCopyOffsetsReset[8*d*160+800+b]=c,missileCopyOffsetsReset[8*d*160+960+b]=c,missileCopyOffsetsReset[8*d+960+b+32]=c,missileCopyOffsetsReset[8*d*160+960+b+64]=c,missileCopyOffsetsReset[8*d*160+1120+b]=c,c=b<4?64|b:b-4>>d,missileScanOffsetsShape[8*d*160+0+b]=c,missileScanOffsetsShape[8*d*160+160+b]=c,missileScanOffsetsShape[8*d+160+b+16]=c,missileScanOffsetsShape[8*d*160+320+b]=c,missileScanOffsetsShape[8*d+320+b+32]=c,missileScanOffsetsShape[8*d*160+480+b]=c,missileScanOffsetsShape[8*d+480+b+16]=c,missileScanOffsetsShape[8*d*160+480+b+32]=c,missileScanOffsetsShape[8*d*160+640+b]=c,missileScanOffsetsShape[8*d+640+b+64]=c,missileScanOffsetsShape[8*d*160+800+b]=c,missileScanOffsetsShape[8*d*160+960+b]=c,missileScanOffsetsShape[8*d+960+b+32]=c,missileScanOffsetsShape[8*d*160+960+b+64]=c,missileScanOffsetsShape[8*d*160+1120+b]=c}}var self=this;this.powerOn=function(){jt.Util.arrayFill(linePixels,VBLANK_COLOR),jt.Util.arrayFill(debugPixels,0),audioSignal.getChannel0().setVolume(0),audioSignal.getChannel1().setVolume(0),initLatchesAtPowerOn(),hMoveLateHit=!1,changeClock=changeClockPrevLine=-1,audioSignal.powerOn(),powerOn=!0},this.powerOff=function(){powerOn=!1,videoSignal.signalOff(),audioSignal.powerOff()},this.frame=function(){do{clock=0,changeClock=-1,renderClock=HBLANK_DURATION,debug&&(debugLevel>=4?jt.Util.arrayFill(linePixels,4278190080):debugLevel>=2&&debugLevel<4&&(changeClock=0)),checkLateHMOVE(),bus.clockPulse(),cpu.setRDY(!0);for(var a=0;a<22;++a)clock+=3,bus.clockPulse();updateExtendedHBLANK();for(var b=0;b<27;++b)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),endObjectsAltStatusMidLine();for(var c=0;c<26;++c)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),finishLine()}while(!videoSignal.nextLine(linePixels,vSyncOn));videoSignal.finishFrame()},this.connectBus=function(a){bus=a},this.getVideoOutput=function(){return videoSignal},this.getAudioOutput=function(){return audioSignal},this.setVideoStandard=function(a){videoSignal.setVideoStandard(a),palette=jt.TiaPalettes[a.name]},this.debug=function(a){debugLevel=a>4?0:a,debug=0!==debugLevel,videoSignal.showOSD(debug?\"Debug Level \"+debugLevel:\"Debug OFF\",!0),pia.debug=debug,debug?debugSetColors():debugRestoreColors()},this.getDebugNoCollisions=function(){return debugNoCollisions},this.read=function(a){switch(a&READ_ADDRESS_MASK){case 0:return updateToClock(),(1024&collisions)>>3|(16384&collisions)>>8;case 1:return updateToClock(),(8192&collisions)>>6|(512&collisions)>>3;case 2:return updateToClock(),(4096&collisions)>>5|(2048&collisions)>>5;case 3:return updateToClock(),(256&collisions)>>1|(128&collisions)>>1;case 4:return updateToClock(),(32&collisions)<<2|(16&collisions)<<2;case 5:return updateToClock(),(8&collisions)<<4|(4&collisions)<<4;case 6:return updateToClock(),(2&collisions)<<6;case 7:return updateToClock(),(32768&collisions)>>8|64&collisions;case 8:return INPT0;case 9:return INPT1;case 10:return INPT2;case 11:return INPT3;case 12:return INPT4;case 13:return INPT5;default:return 0}},this.write=function(a,b){switch(a&WRITE_ADDRESS_MASK){case 0:return void vSyncSet(b);case 1:return void vBlankSet(b);case 2:return cpu.setRDY(!1),void(debug&&debugPixel(DEBUG_WSYNC_COLOR));case 9:return void(COLUBK===b||debug||(changeAtClock(),COLUBK=b,playfieldBackground=palette[b]));case 13:return void(PF0!==(240&b)&&(changePlayfieldAtClock(),PF0=240&b,playfieldUpdateSprite()));case 14:return void(PF1!==b&&(changePlayfieldAtClock(),PF1=b,playfieldUpdateSprite()));case 15:return void(PF2!==b&&(changePlayfieldAtClock(),PF2=b,playfieldUpdateSprite()));case 8:return void(COLUPF===b||debug||((playfieldEnabled&&!playfieldScoreMode||ballEnabled)&&changeAtClock(),COLUPF=b,ballColor=palette[b],playfieldScoreMode||(playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)));case 10:return void(CTRLPF!==b&&playfieldSetShape(b));case 20:return void hitRESBL();case 31:return void(ENABLd!==(2&b)&&(ENABLd=2&b,VDELBL||(changeAtClock(),ballSetEnabled(ENABLd))));case 39:return void(VDELBL!==(1&b)&&(VDELBL=1&b,ENABL!==ENABLd&&(changeAtClock(),ballSetEnabled(VDELBL?ENABL:ENABLd))));case 4:return void player0SetShape(b);case 6:return void(COLUP0===b||debug||(COLUP0=b,(player0Enabled||missile0Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player0Color=missile0Color=palette[b],playfieldScoreMode&&(playfieldLeftColor=player0Color)));case 11:return void(REFP0!==(b>>3&1)&&(REFP0=b>>3&1,player0UpdateSprite(0)));case 16:return void hitRESP0();case 27:return void player0SetSprite(b);case 37:return void(VDELP0!==(1&b)&&(VDELP0=1&b,GRP0!==GRP0d&&player0UpdateSprite(0)));case 5:return void player1SetShape(b);case 7:return void(COLUP1===b||debug||(COLUP1=b,(player1Enabled||missile1Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player1Color=missile1Color=palette[b],playfieldScoreMode&&(playfieldRightColor=player1Color)));case 12:return void(REFP1!==(b>>3&1)&&(REFP1=b>>3&1,player1UpdateSprite(0)));case 17:return void hitRESP1();case 28:return void player1SetSprite(b);case 38:return void(VDELP1!==(1&b)&&(VDELP1=1&b,GRP1!==GRP1d&&player1UpdateSprite(0)));case 18:return void hitRESM0();case 29:return void(ENAM0!==(2&b)&&(ENAM0=2&b,RESMP0||(changeAtClock(),missile0SetEnabled(ENAM0))));case 40:return void missile0SetResetToPlayer(b);case 19:return void hitRESM1();case 30:return void(ENAM1!==(2&b)&&(ENAM1=2&b,RESMP1||(changeAtClock(),missile1SetEnabled(ENAM1))));case 41:return void missile1SetResetToPlayer(b);case 32:return void(HMP0=(b>127?-16:0)+(b>>4));case 33:return void(HMP1=(b>127?-16:0)+(b>>4));case 34:return void(HMM0=(b>127?-16:0)+(b>>4));case 35:return void(HMM1=(b>127?-16:0)+(b>>4));case 36:return void(HMBL=(b>127?-16:0)+(b>>4));case 42:return void hitHMOVE();case 43:return void(HMP0=HMP1=HMM0=HMM1=HMBL=0);case 44:return changeAtClock(),void(collisions=0);case 21:return void(AUDC0!==b&&(AUDC0=b,\naudioSignal.getChannel0().setControl(15&b)));case 22:return void(AUDC1!==b&&(AUDC1=b,audioSignal.getChannel1().setControl(15&b)));case 23:return void(AUDF0!==b&&(AUDF0=b,audioSignal.getChannel0().setDivider((31&b)+1)));case 24:return void(AUDF1!==b&&(AUDF1=b,audioSignal.getChannel1().setDivider((31&b)+1)));case 25:return void(AUDV0!==b&&(AUDV0=b,audioSignal.getChannel0().setVolume(15&b)));case 26:return void(AUDV1!==b&&(AUDV1=b,audioSignal.getChannel1().setVolume(15&b)))}};var finishLine=function(){changeClock>=0?(renderLineTo(LINE_WIDTH),changeClockPrevLine=changeClock):changeClockPrevLine>=0&&(renderLineTo(changeClockPrevLine),changeClockPrevLine=-1),endObjectsAltStatusEndOfLine(),paddle0Position>=0&&!paddleCapacitorsGrounded&&(INPT0<128&&++paddle0CapacitorCharge>=paddle0Position&&(INPT0|=128),INPT1<128&&++paddle1CapacitorCharge>=paddle1Position&&(INPT1|=128)),debugLevel>=1&&processDebugPixelsInLine()},playfieldSetShape=function(a){if(CTRLPF!==a){var b=7&a;b!==(7&CTRLPF)&&(playfieldEnabled&&changeAtClock(),b=0!==(1&a),playfieldReflected!==b&&(playfieldReflected=b,playfieldUpdateSpriteR()),b=0!==(2&a),playfieldScoreMode!==b&&(playfieldScoreMode=b,debug||(b?(playfieldLeftColor=player0Color,playfieldRightColor=player1Color):playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)),playfieldPriority=0!==(4&a)),b=48&a,b!==(48&CTRLPF)&&(ballEnabled&&changeAtClock(),ballLineSpritePointer=b>>1<<6),CTRLPF=a}},hitRESP0=function(){debug&&debugPixel(DEBUG_P0_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player0Pixel!==b){player0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player0Pixel;d<0&&(d+=160),player0Pixel=b;var e=7&NUSIZ0;if(player0Alt){if(d<=playerCopyLengthPerShape[e])return}else player0LineSpritePointer+=20;var f=c-b;f<-100&&(f+=160),player0Alt=b>=80?1:2,player0AltFrom=f>=0?f:160+f,player0AltLength=playerCopyLengthPerShape[e]-f,player0AltCopyOffset=playerCopyOffsetsReset[160*e+d],player0Enabled&&player0DefineAlt()}},hitRESP1=function(){debug&&debugPixel(DEBUG_P1_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player1Pixel!==b){player1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player1Pixel;d<0&&(d+=160),player1Pixel=b;var e=7&NUSIZ1;if(player1Alt){if(d<=playerCopyLengthPerShape[e])return}else player1LineSpritePointer+=40;var f=c-b;f<-100&&(f+=160),player1Alt=b>=80?1:2,player1AltFrom=f>=0?f:160+f,player1AltLength=playerCopyLengthPerShape[e]-f,player1AltCopyOffset=playerCopyOffsetsReset[160*e+d],player1Enabled&&player1DefineAlt()}},hitRESM0=function(){debug&&debugPixel(DEBUG_M0_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(missile0Pixel!==b){missile0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile0Pixel;if(d<0&&(d+=160),missile0Pixel=b,missile0Alt){if(d<=4+(1<<((48&NUSIZ0)>>4)))return}else missile0LineSpritePointer+=20;var e=c-b;e<-100&&(e+=160),missile0Alt=b>=80?1:2,missile0AltFrom=e>=0?e:160+e,missile0AltLength=4+(1<<((48&NUSIZ0)>>4))-e,missile0AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ0)>>1|7&NUSIZ0)+d],missile0Enabled&&missile0DefineAlt()}},hitRESM1=function(){debug&&debugPixel(DEBUG_M1_COLOR);var a=getRESxPixel(),b=a>=1?a:-a;if(missile1Pixel!==b){missile1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile1Pixel;if(d<0&&(d+=160),missile1Pixel=b,missile1Alt){if(d<=4+(1<<((48&NUSIZ1)>>4)))return}else missile1LineSpritePointer+=40;var e=c-b;e<-100&&(e+=160),missile1Alt=b>=80?1:2,missile1AltFrom=e>=0?e:160+e,missile1AltLength=4+(1<<((48&NUSIZ1)>>4))-e,missile1AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ1)>>1|7&NUSIZ1)+d],missile1Enabled&&missile1DefineAlt()}},hitRESBL=function(){debug&&debugPixel(DEBUG_BL_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;ballPixel!==b&&(ballEnabled&&changeAtClock(),ballPixel=b)},hitHMOVE=function(){return debug&&debugPixel(DEBUG_HMOVE_COLOR),clock<HBLANK_DURATION?(hMoveHitClock=clock,hMoveHitBlank=!0,void performHMOVE()):void(clock<219||(hMoveHitClock=160-clock,hMoveLateHit=!0,hMoveLateHitBlank=clock>=225))},performHMOVE=function(){var a,b=!1;a=hMoveHitBlank?HMP0:HMP0+8,0!==a&&(player0Pixel-=a,player0Pixel>=160?player0Pixel-=160:player0Pixel<0&&(player0Pixel+=160),player0Enabled&&(b=!0)),a=hMoveHitBlank?HMP1:HMP1+8,0!==a&&(player1Pixel-=a,player1Pixel>=160?player1Pixel-=160:player1Pixel<0&&(player1Pixel+=160),player1Enabled&&(b=!0)),a=hMoveHitBlank?HMM0:HMM0+8,0!==a&&(missile0Pixel-=a,missile0Pixel>=160?missile0Pixel-=160:missile0Pixel<0&&(missile0Pixel+=160),missile0Enabled&&(b=!0)),a=hMoveHitBlank?HMM1:HMM1+8,0!==a&&(missile1Pixel-=a,missile1Pixel>=160?missile1Pixel-=160:missile1Pixel<0&&(missile1Pixel+=160),missile1Enabled&&(b=!0)),a=hMoveHitBlank?HMBL:HMBL+8,0!==a&&(ballPixel-=a,ballPixel>=160?ballPixel-=160:ballPixel<0&&(ballPixel+=160),ballEnabled&&(b=!0)),b&&(changeClock=hMoveHitBlank?HBLANK_DURATION+8:HBLANK_DURATION)},vBlankSet=function(a){var b=0!==(2&a);vBlankOn!==b&&(changeVBlankAtClockPlus1(),vBlankOn=b),0!==(64&a)?controlsButtonsLatched=!0:(controlsButtonsLatched=!1,controlsJOY0ButtonPressed?INPT4&=127:INPT4|=128,controlsJOY1ButtonPressed?INPT5&=127:INPT5|=128),0!=(128&a)?(paddleCapacitorsGrounded=!0,paddle0CapacitorCharge=paddle1CapacitorCharge=0,INPT0&=127,INPT1&=127,INPT2&=127,INPT3&=127):paddleCapacitorsGrounded=!1},initLatchesAtPowerOn=function(){collisions=0,INPT0=INPT1=INPT2=INPT3=0,INPT4=INPT5=128},debugPixel=function(a){debugPixels[clock]=a},processDebugPixelsInLine=function(){if(jt.Util.arrayFillSegment(linePixels,0,HBLANK_DURATION+(hMoveHitBlank?8:0),hBlankColor),debugLevel>=3&&videoSignal.monitor.currentLine()%10==0)for(var a=0;a<LINE_WIDTH;a++)debugPixels[a]||(a<HBLANK_DURATION?a%6!=0&&66!=a&&63!=a||(debugPixels[a]=DEBUG_MARKS_COLOR):(a-HBLANK_DURATION-1)%6==0&&(debugPixels[a]=DEBUG_MARKS_COLOR));if(debugLevel>=2)for(a=0;a<LINE_WIDTH;a++)debugPixels[a]&&(linePixels[a]=debugPixels[a],debugPixels[a]=0)},debugSetColors=function(){player0Color=DEBUG_P0_COLOR,player1Color=DEBUG_P1_COLOR,missile0Color=DEBUG_M0_COLOR,missile1Color=DEBUG_M1_COLOR,ballColor=DEBUG_BL_COLOR,playfieldColor=playfieldLeftColor=playfieldRightColor=DEBUG_PF_COLOR,playfieldBackground=DEBUG_BK_COLOR,hBlankColor=debugLevel>=1?DEBUG_HBLANK_COLOR:HBLANK_COLOR,vBlankColor=debugLevel>=1?DEBUG_VBLANK_COLOR:VBLANK_COLOR},debugRestoreColors=function(){hBlankColor=HBLANK_COLOR,vBlankColor=VBLANK_COLOR,playfieldBackground=palette[0],jt.Util.arrayFill(linePixels,hBlankColor),changeAtClock()},info=function(a){console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},debugInfo=function(a){debug&&console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case controls.JOY0_BUTTON:return void(b?(controlsJOY0ButtonPressed=!0,INPT4&=127):(controlsJOY0ButtonPressed=!1,controlsButtonsLatched||(INPT4|=128)));case controls.JOY1_BUTTON:return void(b?(controlsJOY1ButtonPressed=!0,INPT5&=127):(controlsJOY1ButtonPressed=!1,controlsButtonsLatched||(INPT5|=128)))}if(b)switch(a){case controls.DEBUG:return void self.debug(debugLevel+1);case controls.SHOW_INFO:return void videoSignal.toggleShowInfo();case controls.NO_COLLISIONS:debugNoCollisions=!debugNoCollisions,videoSignal.showOSD(debugNoCollisions?\"No Collisions: ON\":\"No Collisions: OFF\",!0)}},this.controlValueChanged=function(a,b){switch(a){case controls.PADDLE0_POSITION:return void(paddle0Position=b);case controls.PADDLE1_POSITION:return void(paddle1Position=b)}},this.saveState=function(){return{ccp:changeClockPrevLine,lpx:jt.Util.storeInt32BitArrayToStringBase64(linePixels),vs:vSyncOn,vb:vBlankOn,pfe:playfieldEnabled,pfl:playfieldPatternL,pfr:playfieldPatternR,pfc:playfieldColor,pflc:playfieldLeftColor,pfrc:playfieldRightColor,pfb:playfieldBackground,pfrl:playfieldReflected,pfsc:playfieldScoreMode,pfp:playfieldPriority,be:ballEnabled,bx:ballPixel,blp:ballLineSpritePointer,bc:ballColor,p0e:player0Enabled,p0x:player0Pixel,p0lp:player0LineSpritePointer,p0a:player0Alt,\np0af:player0AltFrom,p0al:player0AltLength,p0ao:player0AltCopyOffset,p0c:player0Color,p1e:player1Enabled,p1x:player1Pixel,p1lp:player1LineSpritePointer,p1a:player1Alt,p1af:player1AltFrom,p1al:player1AltLength,p1ao:player1AltCopyOffset,p1c:player1Color,m0e:missile0Enabled,m0x:missile0Pixel,m0lp:missile0LineSpritePointer,m0a:missile0Alt,m0af:missile0AltFrom,m0al:missile0AltLength,m0ao:missile0AltCopyOffset,m0c:missile0Color,m1e:missile1Enabled,m1x:missile1Pixel,m1lp:missile1LineSpritePointer,m1a:missile1Alt,m1af:missile1AltFrom,m1al:missile1AltLength,m1ao:missile1AltCopyOffset,m1c:missile1Color,hmh:hMoveHitBlank,hmc:hMoveHitClock,hmlh:hMoveLateHit,hmlb:hMoveLateHitBlank,co:collisions,cop:collisionsPossible,CTRLPF:CTRLPF,COLUPF:COLUPF,COLUBK:COLUBK,PF0:PF0,PF1:PF1,PF2:PF2,ENABL:ENABL,ENABLd:ENABLd,VDELBL:VDELBL,NUSIZ0:NUSIZ0,COLUP0:COLUP0,REFP0:REFP0,GRP0:GRP0,GRP0d:GRP0d,VDELP0:VDELP0,NUSIZ1:NUSIZ1,COLUP1:COLUP1,REFP1:REFP1,GRP1:GRP1,GRP1d:GRP1d,VDELP1:VDELP1,ENAM0:ENAM0,RESMP0:RESMP0,ENAM1:ENAM1,RESMP1:RESMP1,HMP0:HMP0,HMP1:HMP1,HMM0:HMM0,HMM1:HMM1,HMBL:HMBL,AUDC0:AUDC0,AUDC1:AUDC1,AUDF0:AUDF0,AUDF1:AUDF1,AUDV0:AUDV0,AUDV1:AUDV1}},this.loadState=function(a){changeClockPrevLine=a.ccp,jt.Util.restoreStringBase64ToInt32BitArray(a.lpx,linePixels),vSyncOn=a.vs,vBlankOn=a.vb,playfieldEnabled=a.pfe,playfieldPatternL=0|a.pfl,playfieldPatternR=0|a.pfr,playfieldColor=0|a.pfc,playfieldLeftColor=0|a.pflc,playfieldRightColor=0|a.pfrc,playfieldBackground=0|a.pfb,playfieldReflected=a.pfrl,playfieldScoreMode=a.pfsc,playfieldPriority=a.pfp,ballEnabled=a.be,ballPixel=0|a.bx,ballLineSpritePointer=0|a.blp,ballColor=0|a.bc,player0Enabled=a.p0e,player0Pixel=0|a.p0x,player0LineSpritePointer=0|a.p0lp,player0Alt=0|a.p0a,player0AltFrom=0|a.p0af,player0AltLength=0|a.p0al,player0AltCopyOffset=0|a.p0ao,jt.Util.arrayFill(player0AltControl,0),player0Color=0|a.p0c,player1Enabled=a.p1e,player1Pixel=0|a.p1x,player1LineSpritePointer=0|a.p1lp,player1Alt=0|a.p1a,player1AltFrom=0|a.p1af,player1AltLength=0|a.p1al,player1AltCopyOffset=0|a.p1ao,jt.Util.arrayFill(player1AltControl,0),player1Color=0|a.p1c,missile0Enabled=a.m0e,missile0Pixel=0|a.m0x,missile0LineSpritePointer=0|a.m0lp,missile0Alt=0|a.m0a,missile0AltFrom=0|a.m0af,missile0AltLength=0|a.m0al,missile0AltCopyOffset=0|a.m0ao,jt.Util.arrayFill(missile0AltControl,0),missile0Color=0|a.m0c,missile1Enabled=a.m1e,missile1Pixel=0|a.m1x,missile1LineSpritePointer=0|a.m1lp,missile1Alt=0|a.m1a,missile1AltFrom=0|a.m1af,missile1AltLength=0|a.m1al,missile1AltCopyOffset=0|a.m1ao,jt.Util.arrayFill(missile1AltControl,0),missile1Color=0|a.m1c,hMoveHitBlank=a.hmh,hMoveHitClock=0|a.hmc,hMoveLateHit=a.hmlh,hMoveLateHitBlank=a.hmlb,collisions=0|a.co,collisionsPossible=0|a.cop,CTRLPF=0|a.CTRLPF,COLUPF=0|a.COLUPF,COLUBK=0|a.COLUBK,PF0=0|a.PF0,PF1=0|a.PF1,PF2=0|a.PF2,ENABL=0|a.ENABL,ENABLd=0|a.ENABLd,VDELBL=0|a.VDELBL,NUSIZ0=0|a.NUSIZ0,COLUP0=0|a.COLUP0,REFP0=0|a.REFP0,GRP0=0|a.GRP0,GRP0d=0|a.GRP0d,VDELP0=0|a.VDELP0,NUSIZ1=0|a.NUSIZ1,COLUP1=0|a.COLUP1,REFP1=0|a.REFP1,GRP1=0|a.GRP1,GRP1d=0|a.GRP1d,VDELP1=0|a.VDELP1,ENAM0=0|a.ENAM0,RESMP0=0|a.RESMP0,ENAM1=0|a.ENAM1,RESMP1=0|a.RESMP1,HMP0=0|a.HMP0,HMP1=0|a.HMP1,HMM0=0|a.HMM0,HMM1=0|a.HMM1,HMBL=0|a.HMBL,AUDC0=0|a.AUDC0,audioSignal.getChannel0().setControl(15&AUDC0),AUDC1=0|a.AUDC1,audioSignal.getChannel1().setControl(15&AUDC1),AUDF0=0|a.AUDF0,audioSignal.getChannel0().setDivider((31&AUDF0)+1),AUDF1=0|a.AUDF1,audioSignal.getChannel1().setDivider((31&AUDF1)+1),AUDV0=0|a.AUDV0,audioSignal.getChannel0().setVolume(15&AUDV0),AUDV1=0|a.AUDV1,audioSignal.getChannel1().setVolume(15&AUDV1),debug&&debugSetColors()};var HBLANK_DURATION=68,LINE_WIDTH=228,VBLANK_COLOR=4278190080,HBLANK_COLOR=4261412864,VSYNC_COLOR=4292730333,DEBUG_P0_COLOR=4278190335,DEBUG_P0_RES_COLOR=4280427195,DEBUG_P0_GR_COLOR=4279308663,DEBUG_P1_COLOR=4294901760,DEBUG_P1_RES_COLOR=4290454050,DEBUG_P1_GR_COLOR=4285993233,DEBUG_M0_COLOR=4284901119,DEBUG_M1_COLOR=4294927974,DEBUG_PF_COLOR=4282681412,DEBUG_PF_GR_COLOR=4281589043,DEBUG_BK_COLOR=4281549875,DEBUG_BL_COLOR=4278255615,DEBUG_MARKS_COLOR=4280295456,DEBUG_HBLANK_COLOR=4282664004,DEBUG_VBLANK_COLOR=4280953386,DEBUG_WSYNC_COLOR=4287103112,DEBUG_HMOVE_COLOR=4294967295,DEBUG_ALT_COLOR=4289374720,READ_ADDRESS_MASK=15,WRITE_ADDRESS_MASK=63,P0C=-63489,P1C=-34689,M0C=-17521,M1C=-8781,PFC=-4395,BLC=-2199,cpu=pCpu,pia=pPia,bus,powerOn=!1,clock,changeClock,changeClockPrevLine,renderClock,linePixels=new Uint32Array(LINE_WIDTH),vSyncOn=!1,vBlankOn=!1,vBlankColor=VBLANK_COLOR,hBlankColor=HBLANK_COLOR,playfieldEnabled=!1,playfieldPatternL=0,playfieldPatternR=0,playfieldColor=4278190080,playfieldLeftColor=4278190080,playfieldRightColor=4278190080,playfieldBackground=4278190080,playfieldReflected=!1,playfieldScoreMode=!1,playfieldPriority=!1,ballEnabled=!1,ballPixel=0,ballLineSpritePointer=0,ballColor=4278190080,player0Enabled=!1,player0Pixel=0,player0LineSpritePointer=0,player0Alt=0,player0AltFrom=0,player0AltLength=0,player0AltCopyOffset=0,player0AltControl=new Uint32Array(4096),player0Color=4278190080,player1Enabled=!1,player1Pixel=0,player1LineSpritePointer=0,player1Alt=0,player1AltFrom=0,player1AltLength=0,player1AltCopyOffset=0,player1AltControl=new Uint32Array(4096),player1Color=4278190080,missile0Enabled=!1,missile0Pixel=0,missile0LineSpritePointer=0,missile0Alt=0,missile0AltFrom=0,missile0AltLength=0,missile0AltCopyOffset=0,missile0AltControl=new Uint32Array(32),missile0Color=4278190080,missile1Enabled=!1,missile1Pixel=0,missile1LineSpritePointer=0,missile1Alt=0,missile1AltFrom=0,missile1AltLength=0,missile1AltCopyOffset=0,missile1AltControl=new Uint32Array(32),missile1Color=4278190080,hMoveHitBlank=!1,hMoveHitClock=0,hMoveLateHit=!1,hMoveLateHitBlank=!1,collisions=0,collisionsPossible=0,debug=!1,debugLevel=0,debugNoCollisions=!1,debugPixels=new Uint32Array(LINE_WIDTH),controlsButtonsLatched=!1,controlsJOY0ButtonPressed=!1,controlsJOY1ButtonPressed=!1,paddleCapacitorsGrounded=!1,paddle0Position=-1,paddle0CapacitorCharge=0,paddle1Position=-1,paddle1CapacitorCharge=0,playerLineSprites=new Uint8Array(262144),missileBallLineSprites=new Uint8Array(2048),playerCopyLengthPerShape=new Uint8Array([13,13,13,13,13,22,13,38]),playerScanStartPerShape=new Uint8Array([5,5,5,5,5,6,5,6]),playerPixelSizePerShape=new Uint8Array([1,1,1,1,1,2,1,4]),playerCopyOffsetsReset=new Uint8Array(1280),playerScanOffsetsShape=new Uint8Array(1280),missileCopyOffsetsReset=new Uint8Array(5120),missileScanOffsetsShape=new Uint8Array(5120),objectsLineSpritePointerDeltaToSingleCopy=new Uint16Array([0,64,128,192,256,0,384,0]),missileCenterOffsetsPerPlayerSize=new Uint8Array([5,5,5,5,5,10,5,18]),videoSignal=new jt.VideoSignal,palette,audioSignal=new jt.TiaAudio(audioSocket),INPT0=0,INPT1=0,INPT2=0,INPT3=0,INPT4=0,INPT5=0,CTRLPF=0,COLUPF=0,COLUBK=0,PF0=0,PF1=0,PF2=0,ENABL=0,ENABLd=0,VDELBL=0,NUSIZ0=0,COLUP0=0,REFP0=0,GRP0=0,GRP0d=0,VDELP0=0,NUSIZ1=0,COLUP1=0,REFP1=0,GRP1=0,GRP1d=0,VDELP1=0,ENAM0=0,RESMP0=0,ENAM1=0,RESMP1=0,HMP0=0,HMP1=0,HMM0=0,HMM1=0,HMBL=0,AUDC0=0,AUDC1=0,AUDF0=0,AUDF1=0,AUDV0=0,AUDV1=0;init(),self.eval=function(code){return eval(code)}},jt.Clock=function(clockPulse){\"use strict\";this.go=function(){running||(useRequestAnimationFrame=vSynch&&cyclesPerSecond===jt.Clock.HOST_NATIVE_FPS,running=!0,useRequestAnimationFrame?animationFrame=requestAnimationFrame(pulse):interval=setInterval(pulse,cycleTimeMs))},this.pause=function(){running=!1,animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),interval&&(clearInterval(interval),interval=null)},this.isRunning=function(){return running},this.getFrequency=function(){return cyclesPerSecond},this.setFrequency=function(a){running?(this.pause(),internalSetFrequency(a),this.go()):internalSetFrequency(a)},this.setVSynch=function(a){running?(this.pause(),vSynch=a,this.go()):vSynch=a};var internalSetFrequency=function(a){cyclesPerSecond=a,cycleTimeMs=1e3/a},pulse=function(){animationFrame=null,\nclockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0},jt.Clock.HOST_NATIVE_FPS=Javatari.SCREEN_FORCE_HOST_NATIVE_FPS,jt.Clock.detectHostNativeFPSAndCallback=function(a){if(Javatari.SCREEN_VSYNCH_MODE===-1)return jt.Util.warning(\"Video native V-Synch disabled in configuration\"),void(a&&a(jt.Clock.HOST_NATIVE_FPS));if(jt.Clock.HOST_NATIVE_FPS!==-1)return jt.Util.warning(\"Host video frequency forced in configuration: \"+jt.Clock.HOST_NATIVE_FPS),void(a&&a(jt.Clock.HOST_NATIVE_FPS));var b=0,c=[],d=0,e=0,f=0,g=0,h=0,i=.06,j=function(){if(e>=10||f>=10||g>=10||h>=10)return jt.Clock.HOST_NATIVE_FPS=e>=10?60:f>=10?50:g>=10?120:100,jt.Util.log(\"Video native frequency detected: \"+jt.Clock.HOST_NATIVE_FPS+\"Hz\"),void(a&&a(jt.Clock.HOST_NATIVE_FPS));if(b++,b<=50){var k=jt.Util.performanceNow(),l=k-d;c[c.length]=l,d=k,l>=1e3/60*(1-i)&&l<=1e3/60*(1+i)&&e++,l>=20*(1-i)&&l<=20*(1+i)&&f++,l>=1e3/120*(1-i)&&l<=1e3/120*(1+i)&&g++,l>=10*(1-i)&&l<=10*(1+i)&&h++,requestAnimationFrame(j)}else jt.Clock.HOST_NATIVE_FPS=-1,jt.Util.warning(\"Could not detect video native frequency. V-Synch DISABLED!\"),a&&a(jt.Clock.HOST_NATIVE_FPS)};j()},jt.Bus=function(a,b,c,d){\"use strict\";function e(e){f=a,g=b,h=c,i=d,f.connectBus(e),g.connectBus(e),h.connectBus(e)}this.powerOn=function(){l=0,j||(g.getVideoOutput().showOSD(\"NO CARTRIDGE INSERTED!\",!0),l=256*Math.random()|0),null!=j&&j.powerOn(),i.powerOn(),h.powerOn(),f.powerOn(),g.powerOn()},this.powerOff=function(){g.powerOff(),f.powerOff(),h.powerOff(),i.powerOff()},this.setCartridge=function(a){j=a,j&&(l=0,j.connectBus(this)),k=j&&j.needsBusMonitoring()},this.getCartridge=function(){return j},this.getTia=function(){return g},this.clockPulse=function(){h.clockPulse(),f.clockPulse()},this.read=function(a){return k&&j.monitorBusBeforeRead(a,l),(a&m)===n?j?l=j.read(a):l:l=(a&o)===p?i.read(a):(a&s)===t?h.read(a):63&l|g.read(a)},this.write=function(a,b){k&&j.monitorBusBeforeWrite(a,b),l=b,(a&q)===r?g.write(a,b):(a&o)===p?i.write(a,b):(a&s)===t?h.write(a,b):j&&j.write(a,b)};var f,g,h,i,j,k=!1,l=0,m=4096,n=4096,o=4736,p=128,q=4224,r=0,s=4736,t=640;e(this)},jt.AtariConsole=function(){\"use strict\";function init(){mainComponentsCreate(),socketsCreate(),self.setDefaults()}function videoFrame(){userPaused&&userPauseMoreFrames--<=0||(videoStandardAutoDetectionInProgress&&videoStandardAutoDetectionTry(),tia.frame())}function vSynchToggleMode(){return vSynchMode===-1?void self.showOSD(\"V-Synch is DISABLED / UNSUPPORTED\",!0,!0):(vSynchMode=vSynchMode?0:1,updateVideoSynchronization(),self.showOSD(\"V-Synch: \"+(vSynchMode?\"ON\":\"OFF\"),!0),Javatari.userPreferences.current.vSynch=vSynchMode,Javatari.userPreferences.setDirty(),void Javatari.userPreferences.save())}function updateVideoSynchronization(){videoPulldown=1===vSynchMode?videoStandard.pulldowns[jt.Clock.HOST_NATIVE_FPS]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER,videoPulldownStep=videoPulldown.steps,mainVideoClockUpdateSpeed()}function mainVideoClockUpdateSpeed(){var a=videoPulldown.frequency;mainVideoClock.setVSynch(vSynchMode>0),mainVideoClock.setFrequency(a*(alternateSpeed||speedControl)|0),audioSocket.setFps(a)}function CartridgeSocket(){this.insert=function(a,b){b&&self.powerIsOn&&self.powerOff(),setCartridge(a),b&&!self.powerIsOn&&self.powerOn()},this.inserted=function(){return getCartridge()},this.cartridgeInserted=function(a,b){tia.getAudioOutput().cartridgeInserted(a,b),consoleControlsSocket.cartridgeInserted(a,b),saveStateSocket.cartridgeInserted(a,b),tia.getVideoOutput().monitor.cartridgeInserted(a,b)},this.loadCartridgeData=function(a,b,c){},this.saveCartridgeDataFile=function(a){}}function ConsoleControlsSocket(){this.setDefaults=function(){self.setDefaults()},this.connectControls=function(b){a=b},this.cartridgeInserted=function(b,c){a&&a.cartridgeInserted(b,c)},this.controlStateChanged=function(a,b){self.controlStateChanged(a,b),pia.controlStateChanged(a,b),tia.controlStateChanged(a,b),tia.getVideoOutput().monitor.controlStateChanged(a,b)},this.controlValueChanged=function(a,b){tia.controlValueChanged(a,b)},this.controlsStateReport=function(a){self.controlsStateReport(a),pia.controlsStateReport(a)},this.controlsStatesRedefined=function(){tia.getVideoOutput().monitor.controlsStatesRedefined()},this.firePowerAndUserPauseStateUpdate=function(){a.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused),tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused)},this.releaseControllers=function(){a.releaseControllers()},this.controlsClockPulse=function(){a.controlsClockPulse()},this.getControlReport=function(a){switch(a){case jt.ConsoleControls.VIDEO_STANDARD:return{label:videoStandardIsAuto?\"Auto\":videoStandard.name,active:!videoStandardIsAuto};case jt.ConsoleControls.VSYNCH:return{label:vSynchMode===-1?\"DISABL\":vSynchMode?\"ON\":\"OFF\",active:1===vSynchMode};case jt.ConsoleControls.NO_COLLISIONS:return{label:tia.getDebugNoCollisions()?\"ON\":\"OFF\",active:tia.getDebugNoCollisions()};default:return{label:\"Unknown\",active:!1}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD(\"State \"+c+\" saved\",!0):self.showOSD(\"State \"+c+\" save failed\",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD(\"State \"+c+\" load failed, wrong version\",!0):(self.powerIsOn||self.powerOn(),loadState(d),void self.showOSD(\"State \"+c+\" loaded\",!0)):void self.showOSD(\"State \"+c+\" not found\",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD(\"State Cartridge saved\",!0):self.showOSD(\"State file save failed\",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD(\"State file load failed, wrong version\",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD(\"State file loaded\",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.powerOn=function(){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),consoleControlsSocket.firePowerAndUserPauseStateUpdate(),mainVideoClock.isRunning()||mainVideoClock.go()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.releaseControllers(),consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||this.powerOn()},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){\nvar c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){if(!systemPaused&&(consoleControlsSocket.controlsClockPulse(),self.powerIsOn)){if(1===videoPulldown.steps)videoFrame();else{var a=videoPulldown.cadence[--videoPulldownStep];for(0===videoPulldownStep&&(videoPulldownStep=videoPulldown.steps);a>0;)a--,videoFrame()}audioSocket.audioFinishFrame()}},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b){this.getVideoOutput().showOSD(a,b)},this.vSynchSetSupported=function(a){vSynchMode=a?null===Javatari.userPreferences.current.vSynch?Javatari.SCREEN_VSYNCH_MODE:Javatari.userPreferences.current.vSynch:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization()),self.showOSD((videoStandardIsAuto?\"AUTO: \":\"\")+videoStandard.name,!1)},setVideoStandardAuto=function(){videoStandardIsAuto=!0,self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries<VIDEO_STANDARD_AUTO_DETECTION_FRAMES||(a?setVideoStandard(a):self.showOSD(\"AUTO: FAILED\",!1),videoStandardAutoDetectionInProgress=!1)},setVideoStandardForced=function(a){videoStandardIsAuto=!1,setVideoStandard(a)},powerFry=function(){ram.powerFry()},cycleCartridgeFormat=function(){},saveState=function(){return{t:tia.saveState(),p:pia.saveState(),r:ram.saveState(),c:cpu.saveState(),ca:getCartridge()&&getCartridge().saveState(),vs:videoStandard.name}},loadState=function(a){mainVideoClockUpdateSpeed(),tia.loadState(a.t),pia.loadState(a.p),ram.loadState(a.r),cpu.loadState(a.c),setCartridge(a.ca&&jt.CartridgeCreator.recreateCartridgeFromSaveState(a.ca,getCartridge())),setVideoStandard(jt.VideoStandard[a.vs]),consoleControlsSocket.controlsStatesRedefined()};this.setDefaults=function(){setVideoStandardAuto(),speedControl=1,alternateSpeed=null,mainVideoClockUpdateSpeed(),tia.debug(0)};var mainComponentsCreate=function(){self.mainVideoClock=mainVideoClock=new jt.Clock(self.videoClockPulse),cpu=new jt.M6502,pia=new jt.Pia,tia=new jt.Tia(cpu,pia),self.tia=tia,ram=new jt.Ram,bus=new jt.Bus(cpu,tia,pia,ram)},socketsCreate=function(){consoleControlsSocket=new ConsoleControlsSocket,cartridgeSocket=new CartridgeSocket,saveStateSocket=new SaveStateSocket,audioSocket=new AudioSocket,tia.getAudioOutput().connectAudioSocket(audioSocket)};this.powerIsOn=!1;var isLoading=!1,userPaused=!1,userPauseMoreFrames=0,systemPaused=!1,speedControl=1,alternateSpeed=!1,mainVideoClock,cpu,pia,tia,ram,bus,videoStandard,videoPulldown,videoPulldownStep,consoleControlsSocket,cartridgeSocket,saveStateSocket,audioSocket,videoStandardIsAuto=!1,videoStandardAutoDetectionInProgress=!1,videoStandardAutoDetectionTries=0,vSynchMode=-1,VIDEO_STANDARD_AUTO_DETECTION_FRAMES=90,SPEEDS=[.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.25,1.5,2,3,5,10],SPEED_FAST=10,SPEED_SLOW=.3,controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){if(a===controls.FAST_SPEED)return void(b&&alternateSpeed!==SPEED_FAST?(alternateSpeed=SPEED_FAST,mainVideoClockUpdateSpeed(),self.showOSD(\"FAST FORWARD\",!0)):b||alternateSpeed!==SPEED_FAST||(alternateSpeed=null,mainVideoClockUpdateSpeed(),self.showOSD(null,!0)));if(a===controls.SLOW_SPEED)return void(b&&alternateSpeed!==SPEED_SLOW?(alternateSpeed=SPEED_SLOW,mainVideoClockUpdateSpeed(),self.showOSD(\"SLOW MOTION\",!0)):b||alternateSpeed!==SPEED_SLOW||(alternateSpeed=null,mainVideoClockUpdateSpeed(),self.showOSD(null,!0)));if(b)switch(a){case controls.POWER:self.powerIsOn?self.powerOff():self.userPowerOn();break;case controls.POWER_OFF:self.powerIsOn&&self.powerOff();break;case controls.POWER_FRY:powerFry();break;case controls.PAUSE:return self.userPause(!userPaused,!1),void self.getVideoOutput().showOSD(userPaused?\"PAUSE\":\"RESUME\",!0);case controls.PAUSE_AUDIO_ON:return self.userPause(!userPaused,!0),void self.getVideoOutput().showOSD(userPaused?\"PAUSE with AUDIO ON\":\"RESUME\",!0);case controls.FRAME:return void(userPaused&&(userPauseMoreFrames=1));case controls.INC_SPEED:case controls.DEC_SPEED:case controls.NORMAL_SPEED:case controls.MIN_SPEED:var c=SPEEDS.indexOf(speedControl);a===controls.INC_SPEED&&c<SPEEDS.length-1?++c:a===controls.DEC_SPEED&&c>0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD(\"Speed: \"+(100*speedControl|0)+\"%\",!0),mainVideoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(a.to),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(a.from),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:self.showOSD(null,!0),videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat()}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.runFramesAtTopSpeed=function(a){mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c<a;c++)self.videoClockPulse();var d=jt.Util.performanceNow()-b;jt.Util.log(\"Done running \"+a+\" frames in \"+(0|d)+\" ms\"),jt.Util.log((a/(d/1e3)).toFixed(2)+\"  frames/sec\"),mainVideoClock.go()},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:\"J_UP\",mask:1,n:\"UP\"},J_DOWN:{button:\"J_DOWN\",mask:2,n:\"DOWN\"},J_LEFT:{button:\"J_LEFT\",mask:4,n:\"LEFT\"},J_RIGHT:{button:\"J_RIGHT\",mask:8,n:\"RIGHT\"},J_A:{button:\"J_A\",mask:16,n:\"A\"},J_B:{button:\"J_B\",mask:32,n:\"B\"},J_AB:{button:\"J_AB\",mask:48,n:\"AB\"},J_X:{button:\"J_X\",n:\"X\"},J_Y:{button:\"J_Y\",n:\"Y\"},J_L:{button:\"J_L\",n:\"L\"},J_R:{button:\"J_R\",n:\"R\"},J_BACK:{button:\"J_BACK\",\nn:\"BACK\"},J_START:{button:\"J_START\",n:\"START\"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_POSITION:31,PADDLE1_POSITION:32,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,SAVE_STATE_0:{to:0},SAVE_STATE_1:{to:1},SAVE_STATE_2:{to:2},SAVE_STATE_3:{to:3},SAVE_STATE_4:{to:4},SAVE_STATE_5:{to:5},SAVE_STATE_6:{to:6},SAVE_STATE_7:{to:7},SAVE_STATE_8:{to:8},SAVE_STATE_9:{to:9},SAVE_STATE_10:{to:10},SAVE_STATE_11:{to:11},SAVE_STATE_12:{to:12},LOAD_STATE_0:{from:0},LOAD_STATE_1:{from:1},LOAD_STATE_2:{from:2},LOAD_STATE_3:{from:3},LOAD_STATE_4:{from:4},LOAD_STATE_5:{from:5},LOAD_STATE_6:{from:6},LOAD_STATE_7:{from:7},LOAD_STATE_8:{from:8},LOAD_STATE_9:{from:9},LOAD_STATE_10:{from:10},LOAD_STATE_11:{from:11},LOAD_STATE_12:{from:12},SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){\"use strict\";this.source=a,this.content=b,c?this.info=c:this.info=jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){\"use strict\";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))},data:\"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\"\n},jt.Cartridge=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.getDataDesc=function(){return null},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a,b){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.saveState=function(){},this.loadState=function(a){},this.rom=null},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=new Array(4096);for(var e=a.content.length,f=0;f<d.length;f+=e)jt.Util.arrayCopy(a.content,0,d,f,e)}this.read=function(a){return d[a&e]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d)};var d,e=4095;a&&c(this)},jt.Cartridge4K.prototype=jt.Cartridge.base,jt.Cartridge4K.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge4K;return c.loadState(a),c},jt.Cartridge2K_CV=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=new Array(4096);for(var d=a.content.length,f=0;f<e.length;f+=d)jt.Util.arrayCopy(a.content,0,e,f,d)}this.read=function(a){var b=d(a);return b<1024?f[b]:e[b]},this.write=function(a,b){var c=d(a);c>=1024&&c<=2047&&(f[c-1024]=b)};var d=function(a){return a&g};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),ra:jt.Util.compressInt8BitArrayToStringBase64(f)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,f)};var e,f=jt.Util.arrayFill(new Array(1024),0),g=4095;a&&c(this)},jt.Cartridge2K_CV.prototype=jt.Cartridge.base,jt.Cartridge2K_CV.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge2K_CV;return c.loadState(a),c},jt.CartridgeBankedByMaskedRange=function(a,b,c,d,e){\"use strict\";function f(f){f.rom=a,f.format=b,h=a.content;var g=h.length/q;i=c,j=i+g-1,l=e,null==d||void 0==d?(o=!1,k=!0):(o=!!d,k=!1),m=d!==!1?jt.Util.arrayFill(new Array(l),0):null}this.read=function(a){var b=g(a);return o&&b>=l&&b<2*l?m[b-l]:h[n+b]},this.write=function(a,b){var c=g(a);c<l&&(o||k)&&(o||(o=!0),m[c]=b)};var g=function(a){var b=a&p;return b>=i&&b<=j&&(n=q*(b-i)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(h),bo:n,bb:i,es:l,tb:j,s:0|o,sa:0|k,e:m&&jt.Util.compressInt8BitArrayToStringBase64(m)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),h=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,h),n=a.bo,i=a.bb,l=a.es,j=a.tb,o=!!a.s,k=!!a.sa,m=a.e&&jt.Util.uncompressStringBase64ToInt8BitArray(a.e,m)};var h,i,j,k,l,m,n=0,o=!1,p=4095,q=4096;a&&f(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.recreateFromSaveState=function(a,b){var c=b||new jt.CartridgeBankedByMaskedRange;return c.loadState(a),c},jt.Cartridge8K_E0=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return b<1024?e[f+b]:b<2048?e[g+b-1024]:b<3072?e[h+b-2048]:e[4096+b]},this.write=function(a,b){d(a)};var d=function(a){var b=a&i;return b>=4064&&b<=4087&&(b<=4071?f=1024*(b-4064):b<=4079?g=1024*(b-4072):b<=4087&&(h=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),s0:f,s1:g,s2:h}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.s0,g=a.s1,h=a.s2};var e,f=0,g=0,h=0,i=4095;a&&c(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_E0;return c.loadState(a),c},jt.Cartridge64K_F0=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return e[f+b]},this.write=function(a,b){d(a)};var d=function(a){var b=a&g;return b==j&&(f+=i,f>=h&&(f=0)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.bo};var e,f=0,g=4095,h=65536,i=4096,j=4080;a&&c(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_F0;return c.loadState(a),c},jt.Cartridge8K_FE=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return e[f+b]},this.write=function(a,b){d(a)};var d=function(a){return 0!==(8192&a)?0!==f&&(f=0):f!=h&&(f=h),a&g};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.bo};var e,f=0,g=4095,h=4096;a&&c(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_FE;return c.loadState(a),c},jt.Cartridge16K_E7=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return b>=2304&&b<=2559?h[j+b-2304]:i&&b>=1024&&b<=2047?h[b-1024]:b<n?e[f+b]:e[o+b]},this.write=function(a,b){var c=d(a);c>=2048&&c<=2303?h[j+c-2048]=b:i&&c<=1023&&(h[c]=b)};var d=function(a){var b=a&k;return b>=4064&&b<=4075&&(b<=4070?f=m*(b-4064):4071==b?i=!0:b<=4075&&(j=g+p*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:f,rs:i,ro:j,ra:jt.Util.compressInt8BitArrayToStringBase64(h)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.bo,i=a.rs,j=a.ro,h=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,h)};var e,f=0,g=1024,h=jt.Util.arrayFill(new Array(2048),0),i=!1,j=g,k=4095,l=16384,m=2048,n=2048,o=l-m-n,p=256;a&&c(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge16K_E7;return c.loadState(a),c},jt.Cartridge10K_DPCa=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,m=a.content}this.powerOn=function(){y=p,z=0},this.connectBus=function(a){l=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=d(a);return b<=63||b>=2048&&b<=2111?f(255&b):m[r+b]},this.write=function(a,b){var c=d(a);(c>=64&&c<=127||c>=2112&&c<=2175)&&g(255&c,b)},this.audioClockPulse=function(){if((z+y|0)>(0|z))for(var a=5;a<=7;a++)x[a]&&(t[a]--,255==(255&t[a])&&h(a,65280&t[a]|u[a]),j(a),A||(A=!0));z+=y,A&&(e(),l.setVolume(B))};var d=function(a){var b=a&o;return 4088===b?r=0:4089===b&&(r=4096),b},e=function(){B=n[(x[5]?4&w[5]:0)|(x[6]?2&w[6]:0)|(x[7]?1&w[7]:0)],A=!1},f=function(a){var b;return a>=0&&a<=3?(k(),s):a>=4&&a<=7?(A&&e(),B):a>=8&&a<=15?(b=m[q-t[a-8]],i(a-8),b):a>=16&&a<=23?(b=m[q-t[a-16]]&w[a-16],i(a-16),b):a>=24&&a<=31?(b=m[q-t[a-24]]&w[a-24],i(a-24),b=240&b|15&b):a>=32&&a<=39?(b=m[q-t[a-32]]&w[a-32],i(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=m[q-t[a-40]]&w[a-40],i(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=m[q-t[a-48]]&w[a-48],i(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?w[a-56]:0},g=function(a,b){\nif(a>=64&&a<=71){var c=a-64;return u[c]=b,void((255&t[c])===u[c]&&(w[c]=255))}return a>=72&&a<=79?(v[a-72]=b,void(w[a-72]=0)):a>=80&&a<=87?void h(a-80,65280&t[a-80]|255&b):a>=88&&a<=91?void h(a-88,255&t[a-88]|(7&b)<<8):92==a?void h(4,255&t[4]|(7&b)<<8):a>=93&&a<=95?(h(a-88,(255&t[a-88])+((7&b)<<8)),void(x[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(s=0))},h=function(a,b){t[a]=b},i=function(a){var b=t[a]-1;b<0&&(b=2047),h(a,b),j(a)},j=function(a){var b=255&t[a];b==u[a]?w[a]=255:b==v[a]&&(w[a]=0)},k=function(){s=255&(s<<1|1&~(s>>7^s>>5^s>>4^s>>3)),255===s&&(s=0)};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(m),bo:r,rn:s,fp:jt.Util.compressInt8BitArrayToStringBase64(t),fs:jt.Util.compressInt8BitArrayToStringBase64(u),fe:jt.Util.compressInt8BitArrayToStringBase64(v),fm:jt.Util.compressInt8BitArrayToStringBase64(w),a:jt.Util.compressInt8BitArrayToStringBase64(x)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,m),r=a.bo,s=a.rn,t=jt.Util.uncompressStringBase64ToInt8BitArray(a.fp,t),u=jt.Util.uncompressStringBase64ToInt8BitArray(a.fs,u),v=jt.Util.uncompressStringBase64ToInt8BitArray(a.fe,v),w=jt.Util.uncompressStringBase64ToInt8BitArray(a.fm,w),x=jt.Util.uncompressStringBase64ToInt8BitArray(a.a,x)};var l,m,n=[0,5,5,10,5,10,10,15],o=4095,p=.62,q=10239,r=0,s=0,t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=jt.Util.arrayFill(new Array(8),0),y=p,z=0,A=!0,B=0;a&&c(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge10K_DPCa;return c.loadState(a),c},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){\"use strict\";function d(d){d.rom=a,d.format=b,n=a.content,p=c||0,q=p;var e=(n.length-p)/x;o=r+e-1}var e=this;this.connectBus=function(a){l=a},this.connectSaveStateSocket=function(a){m=a},this.read=function(a){var b,c=f(a);if(b=c>=256&&c<512?s[c-256]:n[q+c],c!==y)return b;if(0===u){var d=s[z];if(1===d||2===d)return g(d),64|b}return 0===u?191&b:(j(),0!==u?64|b:191&b)},this.write=function(a,b){var c=f(a);c<256&&(s[c]=b)};var f=function(a){var b=a&w;return b>=r&&b<=o&&(q=p+x*(b-r)),b},g=function(a){u=a,t=Date.now(),1===a?h():2===a&&i()},h=function(){if(l.getTia().getVideoOutput().showOSD(\"Reading from Cartridge Flash Memory...\",!0),m){var a=m.getMedia().loadResource(k());a&&(v=jt.Util.uncompressStringBase64ToInt8BitArray(a,v))}jt.Util.arrayCopy(v,0,s)},i=function(){l.getTia().getVideoOutput().showOSD(\"Writing to Cartridge Flash Memory...\",!0),jt.Util.arrayCopy(s,0,v),m&&m.getMedia().saveResource(k(),jt.Util.compressInt8BitArrayToStringBase64(v))},j=function(){Date.now()-t>1100&&(t=Date.now(),u=0,s[z]=0,l.getTia().getVideoOutput().showOSD(\"Done.\",!0),m&&m.externalStateChange())},k=function(){return\"hfm\"+e.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(n),rs:p,bo:q,tb:o,e:jt.Util.compressInt8BitArrayToStringBase64(s),ho:u,ht:t}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),n=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,n),p=a.rs||0,q=a.bo,o=a.tb,s=jt.Util.uncompressStringBase64ToInt8BitArray(a.e,s),u=a.ho||0,t=Date.now()};var l,m,n,o,p=0,q=0,r=4085,s=jt.Util.arrayFill(new Array(256),0),t=Date.now(),u=0,v=jt.Util.arrayFill(new Array(256),0),w=4095,x=4096,y=4084,z=255;a&&d(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge24K_28K_32K_FA2;return c.loadState(a),c},jt.CartridgeBankedByBusMonitoring=function(a,b){\"use strict\";this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content,e=(d.length-i)/i-1,f=d.length-2*i}this.read=function(a){var b=a&h;return b>=j?d[f+b]:d[g+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=e&&(g=c*i)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:g,sm:e,fo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),g=a.bo,e=a.sm,f=a.fo};var d,e,f,g=0,h=4095,i=2048,j=2048;a&&c(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3F;return c.loadState(a),c},jt.Cartridge8K_512K_3E=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content,f=(e.length-m)/m-1,g=e.length-2*m}this.read=function(a){var b=d(a);return b>=n?e[g+b]:j>=0&&b<1024?k[j+b]||0:e[i+b]},this.write=function(a,b){if(!(j<0)){var c=d(a);c>=1024&&c<=2047&&(k[j+c-1024]=b)}};var d=function(a){return a&l};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=f&&(i=c*m,j=-1))}if(62===a){var d=255&b;j=d*h}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:i,sm:f,fo:g,ro:j,ra:jt.Util.compressInt8BitArrayToStringBase64(k)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),i=a.bo,f=a.sm,g=a.fo,j=a.ro,k=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,k)};var e,f,g,h=1024,i=0,j=-1,k=jt.Util.arrayFill(new Array(h),0),l=4095,m=2048,n=2048;a&&c(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3E;return c.loadState(a),c},jt.Cartridge8K_256K_SB=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content,e=d.length/h-1}this.read=function(a){return d[f+(a&g)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048===(6144&a)){var b=127&a;b>e||(f=b*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:f,m:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),f=a.bo,e=a.m};var d,e,f=0,g=4095,h=4096;a&&c(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_256K_SB;return c.loadState(a),c},jt.Cartridge8K_64K_AR=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=jt.Util.arrayFill(new Array(4*M)),o()}this.powerOn=function(){h(0),E=0},this.connectBus=function(a){d=a},this.read=function(a){return f<M?e[q+f]:e[r+f-M]},this.write=function(a,b){r===N&&f>=K&&f<K+256&&i(f-K)},this.performBankSwitchOnMonitoredAccess=function(a){return f=a&Q,a&=8191,8184==a?void h(t):w>0?void(a!==v&&(v=a,0===--w&&(a&R)===S&&(f<M?e[q+f]=t:r<N&&(e[r+f-M]=t)))):void((a&R)===S&&f<=255&&(t=f,u&&(v=a,w=5)))};var d,e,f,g,h=function(a){var b=a>>2&7;switch(b){case 0:q=2*M,r=N;break;case 1:q=0*M,r=N;break;case 2:q=2*M,r=0*M;break;case 3:q=0*M,r=2*M;break;case 4:q=2*M,r=N;break;case 5:q=1*M,r=N;break;case 6:q=2*M,r=1*M;break;case 7:q=1*M,r=2*M;break;default:throw new Error(\"Invalid bank configuration\")}w=0,u=0!==(2&a),x=0===(1&a)},i=function(b){for(var c=!1;;){if(E>a.content.length-1){\nif(c)return 0===b?d.getTia().getVideoOutput().showOSD(\"Could not load Tape from Start. Not a Start Tape ROM!\",!0):d.getTia().getVideoOutput().showOSD(\"Could not find next Part to load in Tape!\",!0),void n(!1);E=0,c=!0}if(jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,E)===b)return 0===b?d.getTia().getVideoOutput().showOSD(\"Loaded Tape from Start\",!0):d.getTia().getVideoOutput().showOSD(\"Loaded next Part from Tape\",!0),void j();E+=O}},j=function(){k(),l(),m()},k=function(){jt.Util.arrayCopy(a.content,E+4*M,s,0,s.length),y=s[1]<<8|255&s[0],z=s[2],A=s[3],B=s[4],C=s[5],D=s[7]<<8|255&s[6],g=jt.Util.arrayFill(new Array(A),0),jt.Util.arrayCopy(s,16,g,0,A)},l=function(){jt.Util.arrayFillSegment(e,7*L,8*L-1,0);for(var b=E,c=0,d=g.length;c<d;c++){var f=g[c],h=(3&f)*M,i=(f>>2)*L;h+i+255<N&&jt.Util.arrayCopy(a.content,b,e,h+i,L),b+=L}E+=O},m=function(){e[N+G-63488]=z,e[N+F-63488]=C,e[N+I-63488]=256*Math.random()|0,e[N+H-63488]=255&y,e[N+H+1-63488]=y>>8&255,n(!0)},n=function(a){e[N+J-63488]=a?1:0},o=function(){var a=jt.Util.uncompressStringBase64ToInt8BitArray(P);jt.Util.arrayCopy(a,0,e,N,M)},p=256,q=0,r=0,s=jt.Util.arrayFill(new Array(p),0),t=0,u=!1,v=-1,w=0,x=!1,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=64256,G=64257,H=64258,I=64260,J=64261,K=3072,L=256,M=8*L,N=3*M,O=4*M+p,P=\"7dSxCsIwEAbgv6niGkeddPVZ8kCOXc43yCIokkGIUN+gLxAoZHTxHRxjYq2xk7vSIPS75bb7uYNTuOJWu/bod3iU42BzUTiBe9sTzSjToBnNBVxfQz/nQ+2NhA2a05KYmhhjmxhoQZymxGil8gpeesOdyioW5DN25yxsiri3chQOUO1WeCSI/hPx9AJ/m/576KROMUhlfdE4dQ+AfJoPNBikgOZdLw==\",Q=4095,R=4096,S=4096;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e)},a&&c(this)},jt.Cartridge8K_64K_AR.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_64K_AR.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_64K_AR;return c.loadState(a),c},jt.Cartridge8K_64K_AR.HEADER_SIZE=256,jt.Cartridge8K_64K_AR.PAGE_SIZE=256,jt.Cartridge8K_64K_AR.BANK_SIZE=8*jt.Cartridge8K_64K_AR.PAGE_SIZE,jt.Cartridge8K_64K_AR.PART_SIZE=4*jt.Cartridge8K_64K_AR.BANK_SIZE+jt.Cartridge8K_64K_AR.HEADER_SIZE,jt.Cartridge8K_64K_AR.peekPartNoOnTape=function(a,b){return a[b+4*jt.Cartridge8K_64K_AR.BANK_SIZE+5]},jt.Cartridge8K_64K_AR.checkTape=function(a){return 0===jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,0)||(jt.Util.warning(\"Wrong Supercharger Tape Part ROM! Please load a Full Tape ROM file\"),!1)},jt.Cartridge64K_X07=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){2061===(6159&a)?e=((240&a)>>4)*g:e>=h&&0===(6272&a)&&(e=(0===(64&a)?14:15)*g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),e=a.bo};var d,e=0,f=4095,g=4096,h=14*g;a&&c(this)},jt.Cartridge64K_X07.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge64K_X07.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_X07;return c.loadState(a),c},jt.Cartridge8K_0840=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){var b=6208&a;2048===b?0!==e&&(e=0):2112===b&&e!==g&&(e=g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),e=a.bo};var d,e=0,f=4095,g=4096;a&&c(this)},jt.Cartridge8K_0840.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_0840.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_0840;return c.loadState(a),c},jt.Cartridge8K_UA=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){544===a?0!==e&&(e=0):576===a&&e!==g&&(e=g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),e=a.bo};var d,e=0,f=4095,g=4096;a&&c(this)},jt.Cartridge8K_UA.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_UA.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_UA;return c.loadState(a),c},jt.CartridgeFormats={\"4K\":{name:\"4K\",desc:\"4K Atari\",priority:101,tryFormat:function(a){if(a.content.length>=8&&a.content.length<=4096&&4096%a.content.length===0)return this},createCartridgeFromRom:function(a){return new jt.Cartridge4K(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge4K.recreateFromSaveState(a,b)}},CV:{name:\"CV\",desc:\"2K Commavid +RAM\",priority:102,tryFormat:function(a){if(2048===a.content.length||4096===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge2K_CV(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge2K_CV.recreateFromSaveState(a,b)}},E0:{name:\"E0\",desc:\"8K Parker Bros.\",priority:102,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_E0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_E0.recreateFromSaveState(a,b)}},F0:{name:\"F0\",desc:\"64K Dynacom Megaboy\",priority:101,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_F0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_F0.recreateFromSaveState(a,b)}},FE:{name:\"FE\",desc:\"8K Robotank/Decathlon\",priority:103,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_FE(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_FE.recreateFromSaveState(a,b)}},E7:{name:\"E7\",desc:\"16K M-Network\",priority:102,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge16K_E7(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge16K_E7.recreateFromSaveState(a,b)}},F8:{name:\"F8\",desc:\"8K Atari (+RAM)\",priority:101,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F6:{name:\"F6\",desc:\"16K Atari (+RAM)\",priority:101,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F4:{name:\"F4\",desc:\"32K Atari (+RAM)\",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},FA2cu:{name:\"FA2cu\",desc:\"32K CBS RAM Plus CU Image\",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},recreateCartridgeFromSaveState:function(a,b){\nreturn jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)},cuMagicWord:[30,171,173,16]},FA2:{name:\"FA2\",desc:\"24K/28K/32K CBS RAM Plus\",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)}},FA:{name:\"FA\",desc:\"12K CBS RAM Plus\",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},EF:{name:\"EF\",desc:\"8K-64K H. Runner (+RAM)\",priority:114,tryFormat:function(a){if(a.content.length%4096===0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},DPC:{name:\"DPC\",desc:\"10K DPC Pitfall 2 (Enhanced Audio)\",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge10K_DPCa.recreateFromSaveState(a,b)}},\"3F\":{name:\"3F\",desc:\"8K-512K Tigervision\",priority:112,tryFormat:function(a){if(a.content.length%2048===0&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3F.recreateFromSaveState(a,b)}},\"3E\":{name:\"3E\",desc:\"8K-512K Tigervision (+RAM)\",priority:111,tryFormat:function(a){if(a.content.length%2048===0&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3E.recreateFromSaveState(a,b)}},X07:{name:\"X07\",desc:\"64K AtariAge\",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_X07.recreateFromSaveState(a,b)}},\"0840\":{name:\"0840\",desc:\"8K Econobanking\",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_0840.recreateFromSaveState(a,b)}},UA:{name:\"UA\",desc:\"8K UA Limited\",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_UA.recreateFromSaveState(a,b)}},SB:{name:\"SB\",desc:\"8K-256K Superbanking\",priority:113,tryFormat:function(a){if(a.content.length%4096===0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_256K_SB.recreateFromSaveState(a,b)}},AR:{name:\"AR\",desc:\"8K-64K Arcadia/Starpath/Supercharger\",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE===0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8&&jt.Cartridge8K_64K_AR.checkTape(a))return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_64K_AR.recreateFromSaveState(a,b)}}},jt.CartridgeCreatorImpl=function(){\"use strict\";this.createCartridgeFromRom=function(b){var c=a(b);if(0!==c.length){var d=c[0];return jt.Util.log(\"\"+d.name+\": \"+d.desc+\", priority: \"+d.priority+(d.priorityBoosted?\" (\"+d.priorityBoosted+\")\":\"\")),d.createCartridgeFromRom(b)}},this.recreateCartridgeFromSaveState=function(a,b){var c=jt.CartridgeFormats[a.f];if(!c)throw new Error(\"Unsupported ROM Format: \"+a.f);return b&&b.format!==c&&(b=null),c.recreateCartridgeFromSaveState(a,b)},this.produceInfo=function(a,d){var e=a.content.length,f=jt.MD5(a.content);a.content.length>e&&a.content.splice(e);var g=jt.CartridgeDatabase[f];return g?jt.Util.log(\"\"+g.n+\" (\"+f+\")\"):(g=b(a.source),jt.Util.log(\"Unknown ROM: \"+g.n+\" (\"+f+\")\")),c(g,a.source,f,d),g};var a=function(a){var b,c,e=[];for(var f in jt.CartridgeFormats)try{if(b=jt.CartridgeFormats[f].tryFormat(a),!b)continue;d(b,a.info),e.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}return e.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),e},b=function(a){var b={n:\"Unknown\"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf(\"/\"),e=c.lastIndexOf(\"\\\\\"),f=c.lastIndexOf(\"?\"),g=Math.max(d,Math.max(e,f));g>=0&&g<c.length-1&&(c=c.substring(g+1));var h=c.lastIndexOf(\".\");return h>=0&&(c=c.substring(0,h)),b.n=c.trim()||\"Unknown\",b},c=function(a,b,c,d){a.h=c,a.l||(a.l=e(a.n));var m=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!m.match(k+\"JOYSTICK(S)?\"+l)))if(m.match(k+\"PADDLE(S)?\"+l))a.p=1;else for(var n=0;n<i.length;n++)if(m.match(i[n])){a.p=1;break a}a:if(!a.c)if(m.match(k+\"CRT(_|-)?MODE\"+l))a.c=1;else for(n=0;n<j.length;n++)if(m.match(j[n])){a.c=1;break a}if(d){d=d.trim().toUpperCase();for(var o in jt.CartridgeFormats)if(o.toUpperCase()===d){a.f=o;break}}a:if(!a.f){var p=b.toUpperCase();for(o in jt.CartridgeFormats)if(f(o,m)||f(o,p)){a.f=o;break a}for(o in h)if(g(o,m)){a.f=o;break a}}},d=function(a,b){b.f&&a.name===b.f?a.priorityBoosted=a.priority-m:a.priorityBoosted=void 0},e=function(a){return a.split(/(\\(|\\[)/)[0].trim()},f=function(a,b){return b.match(k+a+l)},g=function(a,b){var c=h[a];if(!c)return!1;for(var d=0;d<c.length;d++)if(b.match(c[d]))return!0;return!1},h={E0:[\"^.*MONTEZUMA.*$\",\"^.*MONTZREV.*$\",\"^.*GYRUS.*$\",\"^.*TOOTH.*PROTECTORS.*$\",\"^.*TOOTHPRO.*$\",\"^.*DEATH.*STAR.*BATTLE.*$\",\"^.*DETHSTAR.*$\",\"^.*JAMES.*BOND.*$\",\"^.*JAMEBOND.*$\",\"^.*SUPER.*COBRA.*$\",\"^.*SPRCOBRA.*$\",\"^.*TUTANKHAM.*$\",\"^.*TUTANK.*$\",\"^.*POPEYE.*$\",\"^.*(SW|STAR.?WARS).*ARCADE.*GAME.*$\",\"^.*SWARCADE.*$\",\"^.*Q.*BERT.*QUBES.*$\",\"^.*QBRTQUBE.*$\",\"^.*FROGGER.?(2|II).*$\",\"^.*DO.*CASTLE.*$\"],FE:[\"^.*ROBOT.*TANK.*$\",\"^.*ROBOTANK.*$\",\"^.*DECATHLON.*$\",\"^.*DECATHLN.*$\"],E7:[\"^.*BUMP.*JUMP.*$\",\"^.*BNJ.*$\",\"^.*BURGER.*TIME.*$\",\"^.*BURGTIME.*$\",\"^.*POWER.*HE.?MAN.*$\",\"^.*HE_MAN.*$\"],\"3F\":[\"^.*POLARIS.*$\",\"^.*RIVER.*PATROL.*$\",\"^.*RIVERP.*$\",\"^.*SPRINGER.*$\",\"^.*MINER.*2049.*$\",\"^.*MNR2049R.*$\",\"^.*MINER.*2049.*VOLUME.*$\",\"^.*MINRVOL2.*$\",\"^.*ESPIAL.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],\"3E\":[\"^.*BOULDER.*DASH.*$\",\"^.*BLDRDASH.*$\"],DPC:[\"^.*PITFALL.*II.*$\"]},i=[\"^.*PADDLES.*$\",\"^.*BREAKOUT.*$\",\"^.*SUPER.*BREAKOUT.*$\",\"^.*SUPERB.*$\",\"^.*WARLORDS.*$\",\"^.*STEEPLE.*CHASE.*$\",\"^.*STEPLCHS.*$\",\"^.*VIDEO.*OLYMPICS.*$\",\"^.*VID(|_)OLYM(|P).*$\",\"^.*CIRCUS.*ATARI.*$\",\"^.*CIRCATRI.*$\",\"^.*KABOOM.*$\",\"^.*BUGS((?!BUNNY).)*\",\"^.*BACHELOR.*PARTY.*$\",\"^.*BACHELOR.*$\",\"^.*BACHELORETTE.*PARTY.*$\",\"^.*BACHLRTT.*$\",\"^.*BEAT.*EM.*EAT.*EM.*$\",\"^.*BEATEM.*$\",\"^.*PHILLY.*FLASHER.*$\",\"^.*PHILLY.*$\",\"^.*JEDI.*ARENA.*$\",\"^.*JEDIAREN.*$\",\"^.*EGGOMANIA.*$\",\"^.*EGGOMANA.*$\",\"^.*PICNIC.*$\",\"^.*PIECE.*O.*CAKE.*$\",\"^.*PIECECKE.*$\",\"^.*BACKGAMMON.*$\",\"^.*BACKGAM.*$\",\"^.*BLACKJACK.*$\",\"^.*BLACK(|_)J.*$\",\"^.*CANYON.*BOMBER.*$\",\"^.*CANYONB.*$\",\"^.*CASINO.*$\",\"^.*DEMONS.*DIAMONDS.*$\",\"^.*DEMONDIM.*$\",\"^.*DUKES.*HAZZARD.*2.*$\",\"^.*STUNT.?2.*$\",\"^.*ENCOUNTER.*L.?5.*$\",\"^.*ENCONTL5.*$\",\"^.*G.*I.*JOE.*COBRA.*STRIKE.*$\",\"^.*GIJOE.*$\",\"^.*GUARDIAN.*$\",\"^.*MARBLE.*CRAZE.*$\",\"^.*MARBCRAZ.*$\",\"^.*MEDIEVAL.*MAYHEM.*$\",\"^.*MONDO.*PONG.*$\",\"^.*NIGHT.*DRIVER.*$\",\"^.*NIGHTDRV.*$\",\"^.*PARTY.*MIX.*$\",\"^.*POKER.*PLUS.*$\",\"^.*PONG.*SPORTS.*$\",\"^.*SCSICIDE.*$\",\"^.*SECRET.*AGENT.*$\",\"^.*SOLAR.*STORM.*$\",\"^.*SOLRSTRM.*$\",\"^.*SPEEDWAY.*$\",\"^.*STREET.*RACER.*$\",\"^.*STRTRACE.*$\",\"^.*STUNT.*CYCLE.*$\",\"^.*STUNT.?1.*$\",\"^.*TAC.?SCAN.*$\",\"^.*MUSIC.*MACHINE.*$\",\"^.*MUSCMACH.*$\",\"^.*VONG.*$\",\"^.*WARPLOCK.*$\"],j=[\"^.*STAR.*CASTLE.*$\",\"^.*SEAWEED.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],k=\"^(|.*?(\\\\W|_|%20))\",l=\"(|(\\\\W|_|%20).*)$\",m=50;\n},jt.CartridgeCreator=new jt.CartridgeCreatorImpl,jt.Images={embedded:!1,count:5,urls:{logo:Javatari.IMAGES_PATH+\"logo.png\",loading:Javatari.IMAGES_PATH+\"loading.gif\",mouseCursor:Javatari.IMAGES_PATH+\"mouse-cursor.png\",panel:Javatari.IMAGES_PATH+\"panel.jpg\",panelSprites:Javatari.IMAGES_PATH+\"panel-sprites.jpg\",controllers:Javatari.IMAGES_PATH+\"controllers.jpg\",iconSprites:Javatari.IMAGES_PATH+\"icon-sprites.png\"}},jt.RecentStoredROMs=function(){function a(){if(!e){try{e=JSON.parse(localStorage.javataristoredromsdata)}catch(a){}e||b()}return e}function b(){d=[],localStorage.javataristoredromsicatalog=JSON.stringify(d),e=[],localStorage.javataristoredromsdata=JSON.stringify(e)}this.getCatalog=function(){if(!d){try{d=JSON.parse(localStorage.javataristoredromsicatalog)}catch(a){}d||b()}return d},this.storeROM=function(b){this.getCatalog();var c=d.find(function(a){return a&&a.h===b.info.h});if(c&&c.n==b.info.n&&c.f==b.info.f)this.lastROMLoadedIndex=d.indexOf(c);else{if(a(),c){var g=d.indexOf(c);d.splice(g,1),e.splice(g,1)}else d.length>=f&&(d=d.slice(0,f-1),e=e.slice(0,f-1));d.unshift({n:b.info.l,h:b.info.h,f:b.info.f});for(var h=0;h<d.length;++h)d[h].i=h;localStorage.javataristoredromsicatalog=JSON.stringify(d),e.unshift(b.saveState(!0)),localStorage.javataristoredromsdata=JSON.stringify(e),this.lastROMLoadedIndex=0,jt.Util.log(\"New ROM stored: \"+b.info.n+\", \"+b.info.h)}localStorage.javataristoredromslastindex=this.lastROMLoadedIndex},this.getROM=function(b){this.lastROMLoadedIndex=b,localStorage.javataristoredromslastindex=b;var c=a()[b];return c?jt.ROM.loadState(c):null};var c=localStorage.javataristoredromslastindex;this.lastROMLoadedIndex=void 0!==c?Number.parseInt(c):-1;var d,e,f=10},jt.FileLoader=function(a){\"use strict\";function b(a,b,d,e,f,g,h){for(var i=0;i<a.length;i++)if(c(a[i],b,d,e,f,g,h))return!0;return!1}function c(a,b,e,f,g,h,i,j){try{i&&!a.content&&(a.content=a.asUint8Array());var k=a.content;if(!j){var l=jt.Util.checkContentIsZIP(k);if(l){for(var m=jt.Util.getZIPFilesSorted(l),n=0;n<m.length;n++)if(c(m[n],b,e,f,g,h,!0,!0))return!0;return!1}}var o=jt.Util.checkContentIsGZIP(k);if(o)return c({name:a.name,content:o},b,e,f,g,h,!1,!0)}catch(a){return jt.Util.error(a),!1}return d(a.name,k,b,e,f,g,h)}function d(a,b,c,d,e,f,g){if(c=c||w.AUTO,(c===w.STATE||c===w.AUTO)&&m.loadStateFile(b))return!0;if((c===w.CART_DATA||c===w.AUTO)&&l.loadCartridgeData(d,a,b))return!0;if(c===w.ROM||c===w.AUTO){var h=new jt.ROM(a,b,null,g);return j.loadROM(h,d,e,f)}return!1}function e(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),this.files&&0!==this.files.length){var b=jt.Util.asNormalArray(this.files);try{n.value=\"\"}catch(a){}var c=k.systemPause(!0),d=function(a){c||k.systemPause(!1)};return b&&b.length>0&&(1===b.length?j.readFromFile(b[0],p,q,r,s,d):j.readFromFiles(b,p,q,r,s,d)),!1}}function f(a){a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.dataTransfer&&(Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect=\"none\":a.ctrlKey?a.dataTransfer.dropEffect=\"copy\":a.altKey&&(a.dataTransfer.dropEffect=\"link\")),t=a.buttons>0?a.buttons:u}function g(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),!Javatari.CARTRIDGE_CHANGE_DISABLED&&a.dataTransfer){var b=k.systemPause(!0),c=a.shiftKey?1:0,d=t&v,e=a.ctrlKey,f=w.AUTO,g=a.dataTransfer&&a.dataTransfer.files,h=function(a){b||k.systemPause(!1)};if(g&&g.length>0)1===g.length?j.readFromFile(g[0],f,c,d,e,h):j.readFromFiles(g,f,c,d,e,h);else{var i=a.dataTransfer.getData(\"text\");i&&i.length>0?j.readFromURL(i,f,c,d,e,h):h()}}}function h(a){jt.Util.message(\"Could not load file(s):\\n\\n\"+a+\"\\n\")}function i(){n=document.createElement(\"input\"),n.id=\"jt-file-loader-input\",n.type=\"file\",n.multiple=!0,n.accept=x.AUTO,n.style.display=\"none\",n.addEventListener(\"change\",e),o.appendChild(n)}var j=this;this.connect=function(a){k=a,l=k.getCartridgeSocket(),m=k.getSavestateSocket()},this.registerForDnD=function(a){a.addEventListener(\"dragover\",f,!1),a.addEventListener(\"drop\",g,!1)},this.registerForFileInputElement=function(a){o=a},this.openFileChooserDialog=function(a,b,c,d){n||i(),n.multiple=y[w[a]||w.AUTO],n.accept=x[w[a]||w.AUTO],p=a,q=c?1:0,r=b,s=d,n.click()},this.openURLChooserDialog=function(a,b,c,d){var e,f=c?1:0;try{e=localStorage&&localStorage[A]}catch(a){}var g=k.systemPause(!0);if(e=prompt(\"Load file from URL:\",e||\"\"),e=e&&e.toString().trim()){try{localStorage[A]=e}catch(a){}this.readFromURL(e,a,f,b,d,function(){g||k.systemPause(!1)})}else g||k.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){jt.Util.log(\"Reading file: \"+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};j.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){h(\"File reading error: \"+a.target.error.name+B),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new jt.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};j.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){h(\"URL reading error: \"+a[0].error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){var g=new jt.MultiFileReader(a,function(a){j.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=B),h(\"File reading error: \"+b),f&&f(!1)});g.start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,c,d,e,f,g){var i;if(i=jt.Util.checkContentIsZIP(a.content))try{var j=jt.Util.getZIPFilesSorted(i);if(b(j,c,d,e,f,g,!0))return}catch(a){jt.Util.error(a)}else if(b([a],c,d,e,f,g,!1))return;h(\"No valid \"+z[c]+\" found.\")},this.loadFromFiles=function(a,c,d,e,f){a=jt.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0}),b(a,c,d,e,f,null,!1)||h(\"No valid \"+z[c]+\" found.\")},this.loadROM=function(b,c,d,e){var f=jt.CartridgeCreator.createCartridgeFromRom(b);return!!f&&(l.insert(f,!d),a.storeROM(b),!0)};var k,l,m,n,o,p,q=0,r=!1,s=!1,t=1,u=1,v=2,w=jt.FileLoader.OPEN_TYPE;this.OPEN_TYPE=w;var x={ROM:\".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\",STATE:\".jst,.JST\",CART_DATA:\".dat,.DAT,.sram,.SRAM\",AUTO:\".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\"},y={ROM:!1,STATE:!1,CART_DATA:!1,AUTO:!1},z={ROM:\"ROM\",STATE:\"Savestate\",CART_DATA:\"Cartridge Data\",AUTO:\"ROM\"},A=\"javatarilasturl\",B=\"\\n\\nIMPORTANT: Directories are not supported for loading!\";Javatari.fileLoader=this},jt.FileLoader.OPEN_TYPE={AUTO:\"AUTO\",ROM:\"ROM\",STATE:\"STATE\",CART_DATA:\"CART_DATA\"},jt.FileDownloader=function(){\"use strict\";function a(){if(\"NONE\"===c)return alert(\"Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage.\"),!0}function b(){c=jt.Util.isIOSDevice()?jt.Util.isBrowserStandaloneMode()?\"NONE\":\"DATA\":\"SAFARI\"===jt.Util.browserInfo().name?\"DATA\":\"BLOB\",\"NONE\"!==c&&(d=document.createElement(\"a\"),d.style.display=\"none\",d.target=\"_blank\",d.href=\"#\",e.appendChild(d))}this.connectPeripherals=function(a){f=a},this.registerForDownloadElement=function(a){e=a},this.startDownloadBinary=function(e,g,h){try{if(c||b(),a())return;var i;if(\"BLOB\"===c){d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href);var j=new Blob([g],{type:\"data:application/octet-stream\"});i=(window.URL||window.webkitURL).createObjectURL(j)}else i=\"data:application/octet-stream;base64,\"+btoa(\"string\"==typeof g?g:jt.Util.int8BitArrayToByteString(g));d.download=e&&e.trim(),d.href=i,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}},this.startDownloadURL=function(e,g,h){try{if(c||b(),a())return;\"BLOB\"===c&&d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href),d.download=e&&e.trim(),\nd.href=g,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}};var c,d,e,f},jt.DOMKeys={},jt.DOMKeys.MOD_SHIFT=16,jt.DOMKeys.LOC_SHIFT=24,jt.DOMKeys.SHIFT=65536,jt.DOMKeys.CONTROL=131072,jt.DOMKeys.ALT=262144,jt.DOMKeys.META=524288,jt.DOMKeys.LOCNONE=0,jt.DOMKeys.LOCLEFT=16777216,jt.DOMKeys.LOCRIGHT=33554432,jt.DOMKeys.LOCNUM=50331648,jt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK=~(jt.DOMKeys.SHIFT|jt.DOMKeys.CONTROL|jt.DOMKeys.ALT|jt.DOMKeys.META),function(a,b,c,d){a.VK_F1={c:112,n:\"F1\"},a.VK_F2={c:113,n:\"F2\"},a.VK_F3={c:114,n:\"F3\"},a.VK_F4={c:115,n:\"F4\"},a.VK_F5={c:116,n:\"F5\"},a.VK_F6={c:117,n:\"F6\"},a.VK_F7={c:118,n:\"F7\"},a.VK_F8={c:119,n:\"F8\"},a.VK_F9={c:120,n:\"F9\"},a.VK_F10={c:121,n:\"F10\"},a.VK_F11={c:122,n:\"F11\"},a.VK_F12={c:123,n:\"F12\"},a.VK_1={c:49,n:\"1\"},a.VK_2={c:50,n:\"2\"},a.VK_3={c:51,n:\"3\"},a.VK_4={c:52,n:\"4\"},a.VK_5={c:53,n:\"5\"},a.VK_6={c:54,n:\"6\"},a.VK_7={c:55,n:\"7\"},a.VK_8={c:56,n:\"8\"},a.VK_9={c:57,n:\"9\"},a.VK_0={c:48,n:\"0\"},a.VK_Q={c:81,n:\"Q\"},a.VK_W={c:87,n:\"W\"},a.VK_E={c:69,n:\"E\"},a.VK_R={c:82,n:\"R\"},a.VK_T={c:84,n:\"T\"},a.VK_Y={c:89,n:\"Y\"},a.VK_U={c:85,n:\"U\"},a.VK_I={c:73,n:\"I\"},a.VK_O={c:79,n:\"O\"},a.VK_P={c:80,n:\"P\"},a.VK_A={c:65,n:\"A\"},a.VK_S={c:83,n:\"S\"},a.VK_D={c:68,n:\"D\"},a.VK_F={c:70,n:\"F\"},a.VK_G={c:71,n:\"G\"},a.VK_H={c:72,n:\"H\"},a.VK_J={c:74,n:\"J\"},a.VK_K={c:75,n:\"K\"},a.VK_L={c:76,n:\"L\"},a.VK_Z={c:90,n:\"Z\"},a.VK_X={c:88,n:\"X\"},a.VK_C={c:67,n:\"C\"},a.VK_V={c:86,n:\"V\"},a.VK_B={c:66,n:\"B\"},a.VK_N={c:78,n:\"N\"},a.VK_M={c:77,n:\"M\"},a.VK_ESCAPE={c:27,n:\"Esc\"},a.VK_ENTER={c:13,n:\"Enter\"},a.VK_SPACE={c:32,n:\"Space\"},a.VK_TAB={c:9,n:\"Tab\"},a.VK_BACKSPACE={c:8,n:\"BackSpc\"},a.VK_CONTEXT={c:93,n:\"Context\"},a.VK_LSHIFT={c:16|b,n:\"L-Shift\"},a.VK_LCONTROL={c:17|b,n:\"L-Control\"},a.VK_LALT={c:18|b,n:\"L-Alt\"},a.VK_LMETA={c:91|b,n:\"L-Meta\"},a.VK_RSHIFT={c:16|c,n:\"R-Shift\"},a.VK_RCONTROL={c:17|c,n:\"R-Control\"},a.VK_RALT={c:18|c,n:\"R-Alt\"},a.VK_RMETA={c:91|c,n:\"R-Meta\"},a.VK_CAPS_LOCK={c:20,n:\"CapsLock\"},a.VK_PRINT_SCREEN={c:44,n:\"PrtScr\"},a.VK_SCROLL_LOCK={c:145,n:\"ScrLck\"},a.VK_PAUSE={c:19,n:\"Pause\"},a.VK_BREAK={c:3,n:\"Break\"},a.VK_INSERT={c:45,n:\"Ins\"},a.VK_DELETE={c:46,n:\"Del\"},a.VK_HOME={c:36,n:\"Home\"},a.VK_END={c:35,n:\"End\"},a.VK_PAGE_UP={c:33,n:\"PgUp\"},a.VK_PAGE_DOWN={c:34,n:\"PgDown\"},a.VK_NUM_INSERT={c:45|d,n:\"Num Ins\"},a.VK_NUM_DELETE={c:46|d,n:\"Num Del\"},a.VK_NUM_HOME={c:36|d,n:\"Num Home\"},a.VK_NUM_END={c:35|d,n:\"Num End\"},a.VK_NUM_PAGE_UP={c:33|d,n:\"Num PgUp\"},a.VK_NUM_PAGE_DOWN={c:34|d,n:\"Num PgDown\"},a.VK_UP={c:38,n:\"Up\"},a.VK_DOWN={c:40,n:\"Down\"},a.VK_LEFT={c:37,n:\"Left\"},a.VK_RIGHT={c:39,n:\"Right\"},a.VK_NUM_UP={c:38|d,n:\"Num Up\"},a.VK_NUM_DOWN={c:40|d,n:\"Num Down\"},a.VK_NUM_LEFT={c:37|d,n:\"Num Left\"},a.VK_NUM_RIGHT={c:39|d,n:\"Num Right\"},a.VK_NUMLOCK={c:144,n:\"NumLock\"},a.VK_NUM_COMMA={c:110|d,n:\"Num ,\"},a.VK_NUM_DIVIDE={c:111|d,n:\"Num /\"},a.VK_NUM_MULTIPLY={c:106|d,n:\"Num *\"},a.VK_NUM_MINUS={c:109|d,n:\"Num -\"},a.VK_NUM_PLUS={c:107|d,n:\"Num +\"},a.VK_NUM_PERIOD={c:194|d,n:\"Num .\"},a.VK_NUM_0={c:96|d,n:\"Num 0\"},a.VK_NUM_1={c:97|d,n:\"Num 1\"},a.VK_NUM_2={c:98|d,n:\"Num 2\"},a.VK_NUM_3={c:99|d,n:\"Num 3\"},a.VK_NUM_4={c:100|d,n:\"Num 4\"},a.VK_NUM_5={c:101|d,n:\"Num 5\"},a.VK_NUM_6={c:102|d,n:\"Num 6\"},a.VK_NUM_7={c:103|d,n:\"Num 7\"},a.VK_NUM_8={c:104|d,n:\"Num 8\"},a.VK_NUM_9={c:105|d,n:\"Num 9\"},a.VK_NUM_CLEAR={c:12|d,n:\"Num Clear\"},a.VK_NUM_ENTER={c:13|d,n:\"Num Enter\"},a.VK_QUOTE={c:222,n:\"'\"},a.VK_BACKQUOTE={c:192,n:\"`\"},a.VK_MINUS={c:189,n:\"-\"},a.VK_EQUALS={c:187,n:\"=\"},a.VK_OPEN_BRACKET={c:219,n:\"[\"},a.VK_CLOSE_BRACKET={c:221,n:\"]\"},a.VK_COMMA={c:188,n:\",\"},a.VK_PERIOD={c:190,n:\".\"},a.VK_SEMICOLON={c:186,n:\";\"},a.VK_SLASH={c:191,n:\"/\"},a.VK_BACKSLASH={c:220,n:\"\\\\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:[\"Alt\",\"F1\"]},a.VK_FF_MINUS={c:173,n:\"-\"},a.VK_FF_EQUALS={c:61,n:\"=\"},a.VK_FF_SEMICOLON={c:59,n:\";\"},a.VK_BR_QUOTE={c:192,n:\"'\"},a.VK_BR_OPEN_BRACKET={c:221,n:\"[\"},a.VK_BR_CLOSE_BRACKET={c:220,n:\"]\"},a.VK_BR_SEMICOLON={c:191,n:\";\"},a.VK_BR_SLASH={c:193,n:\"/\"},a.VK_BR_BACKSLASH={c:226,n:\"\\\\\"},a.VK_BR_CEDILLA={c:186,n:\"Ç\"},a.VK_BR_TILDE={c:222,n:\"~\"},a.VK_BR_ACUTE={c:219,n:\"´\"},a.VK_FF_BR_TILDE={c:176,n:\"~\"},a.VK_VOID={c:-1,n:\"\"}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:\"Esc\",13:\"Enter\",32:\"Space\",9:\"Tab\",8:\"BkSpc\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",91:\"Meta\",93:\"Context\",20:\"Caps\",44:\"PrtScr\",145:\"ScrLck\",19:\"Pause\",3:\"Break\",45:\"Ins\",46:\"Del\",36:\"Home\",35:\"End\",33:\"PgUp\",34:\"PgDown\",38:\"Up\",40:\"Down\",37:\"Left\",39:\"Right\"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<<this.LOC_SHIFT:b|a.location<<this.LOC_SHIFT|(a.shiftKey?this.SHIFT:0)|(a.ctrlKey?this.CONTROL:0)|(a.altKey?this.ALT:0)|(a.metaKey?this.META:0)},jt.DOMKeys.nameForKeyboardEvent=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift(\"Meta\"),a.altKey&&c.unshift(\"Alt\"),a.ctrlKey&&c.unshift(\"Ctrl\"),a.shiftKey&&c.unshift(\"Shift\")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return c},jt.GamepadButtons={GB_1:{b:0,n:\"1\"},GB_2:{b:1,n:\"2\"},GB_3:{b:2,n:\"3\"},GB_4:{b:3,n:\"4\"},GB_L1:{b:4,n:\"L1\"},GB_R1:{b:5,n:\"R1\"},GB_L2:{b:6,n:\"L2\"},GB_R2:{b:7,n:\"R2\"},GB_BACK:{b:8,n:\"BACK\"},GB_START:{b:9,n:\"START\"},GB_S1:{b:10,n:\"S1\"},GB_S2:{b:11,n:\"S2\"},GB_UP:{b:12,n:\"&#9650;\"},GB_DOWN:{b:13,n:\"&#9660;\"},GB_LEFT:{b:14,n:\"&#9668;\"},GB_RIGHT:{b:15,n:\"&#9658;\"},GB_LOGO:{b:16,n:\"LOGO\"},GB_VOID:{b:-1,n:\"Unbound\"}},jt.TouchControls={buttons:[\"T_B\",\"T_A\"]},jt.GamepadConsoleControls=function(a){\"use strict\";function b(a,b){this.index=a,this.update=function(b){return c=b[a],!!c},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return\"object\"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)<l?a=0:a*=f,(b<0?-b:b)<l?b=0:b*=g,0===a&&0===b)return-1;var h=(1-Math.atan2(a,b)/Math.PI)/2;return h+=1/16,h>=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=b.paddleSens*-190,k=b.paddleCenter*-190+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){r=!!navigator.getGamepads,r&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){return r?(++u,u>0&&(u=-2),u===-2?j=k=null:u===-1&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),void i.showOSD(\"Gamepads \"+this.getModeDesc(),!0)):void i.showOSD(\"Joysticks unavailable (not supported by browser)\",!0,!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&u!==-2&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();\nj?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a),j&&c(!0,!0)),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a),k&&c(!1,!0))}};var c=function(a,b){i.showOSD((a^x^w?\"P1\":\"P2\")+\" Gamepad \"+(b?\"connected\":\"disconnected\"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f<g;f++)if(d[f]&&d[f].buttons.length>0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,h.controlValueChanged(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(g!==-1||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var i=!1,j=!1,k=!1,l=!1;switch(g){case 0:i=!0;break;case 1:i=j=!0;break;case 2:j=!0;break;case 3:k=j=!0;break;case 4:k=!0;break;case 5:k=l=!0;break;case 6:l=!0;break;case 7:i=l=!0}a.processKey(e.up.c,i),a.processKey(e.right.c,j),a.processKey(e.down.c,k),a.processKey(e.left.c,l),c.direction=g}var m=b.getButtonDigital(d.button);m!==c.button&&(a.processKey(e.button.c,m),c.button=m),m=b.getButtonDigital(d.buttonT),m!==c.buttonT&&(a.processKey(e.buttonT.c,m),c.buttonT=m);var n=b.getButtonDigital(d.select);n!==c.select&&(h.controlStateChanged(t.SELECT,n),c.select=n);var o=b.getButtonDigital(d.reset);o!==c.reset&&(h.controlStateChanged(t.RESET,o),c.reset=o);var p=b.getButtonDigital(d.pause);p!==c.pause&&(h.controlStateChanged(t.PAUSE,p),c.pause=p);var q=b.getButtonDigital(d.fastSpeed);q!==c.fastSpeed&&(h.controlStateChanged(t.FAST_SPEED,q),c.fastSpeed=q);var r=b.getButtonDigital(d.slowSpeed);r!==c.slowSpeed&&(h.controlStateChanged(t.SLOW_SPEED,r),c.slowSpeed=r)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return\"AUTO\";case 0:return\"AUTO (swapped)\";default:return r?\"DISABLED\":\"NOT SUPPORTED\"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){\"use strict\";function b(){v.classList.toggle(\"jt-poweroff\",!I),v.classList.toggle(\"jt-paused\",J)}function c(){var a=z>0;document.documentElement.classList.toggle(\"jt-touch-active\",a),document.documentElement.classList.toggle(\"jt-dir-big\",B),s.touchControlsActiveUpdate(a,B)}function d(a){if(jt.Util.blockEvent(a),null===D){void 0===t&&i();var b=a.changedTouches[0];D=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==D&&(D=null,h(-1))}function f(a){if(jt.Util.blockEvent(a),null!==D)for(var b=a.changedTouches,c=0;c<b.length;++c)if(b[c].identifier===D)return void g(b[c].pageX,b[c].pageY)}function g(a,b){var c=-1,d=a-t,e=b-u,f=Math.sqrt(d*d+e*e);f>F&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(E!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(w.up.c,c),a.processKey(w.right.c,d),a.processKey(w.down.c,e),a.processKey(w.left.c,f),E=b}}function i(){var a=C.getBoundingClientRect();F=.14*(a.right-a.left)|0,t=((a.left+a.right)/2|0)+window.pageXOffset,u=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(w[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),r.controlStateChanged(I?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.hapticFeedback(),r.controlStateChanged(J?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function o(b){jt.Util.blockEvent(b),J||(a.hapticFeedback(),r.controlStateChanged(J?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1))}function p(){H.reset(),t=u=void 0,D=null,h(-1)}function q(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){r=a},this.connectScreen=function(a){s=a},this.powerOn=function(){this.applyPreferences(),p(),c()},this.powerOff=function(){},this.releaseControllers=function(){p()},this.updateConsolePanelSize=function(a,b,c,d,e){if(v&&d){var f=!e&&(a-b-10)/2<L;v.classList.toggle(\"jt-center\",f),f?v.style.bottom=\"\"+(jt.ScreenGUI.BAR_HEIGHT+c+3)+\"px\":v.style.removeProperty(\"bottom\")}},this.toggleMode=function(){return x?(z++,z>2&&(z=0),p(),this.applyPreferences(),c(),void s.showOSD(\"Touch Controls \"+this.getModeDesc(),!0)):void s.showOSD(\"Touch Controls unavailable. Not a touch device!\",!0,!0)},this.setP1ControlsMode=function(a){A=a,this.applyPreferences()},this.getModeDesc=function(){switch(z){case-1:return\"AUTO\";case 0:return\"DISABLED\";case 1:return\"ENABLED\";case 2:return\"ENABLED (swapped)\"}},this.toggleTouchDirBig=function(){B=!B,K.touch.directionalBig=B,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return B},this.setupTouchControlsIfNeeded=function(a){function c(){function a(a){var c=document.createElement(\"div\");c.classList.add(\"jt-touch-dir-\"+a),b.appendChild(c);var d=document.createElement(\"div\");d.classList.add(\"jt-arrow-\"+a),b.appendChild(d)}var b=document.createElement(\"div\");return b.classList.add(\"jt-touch-dir\"),b.classList.add(\"jt-touch-dir-joy\"),a(\"left\"),a(\"right\"),a(\"up\"),a(\"down\"),b}function g(a,b){var c=document.createElement(\"div\");c.id=\"jt-touch-\"+b,c.classList.add(\"jt-touch-button\"),c.classList.add(\"jt-touch-button-joy\"),c.classList.add(\"jt-touch-button-joy-\"+b),c.jtControl=b,c.addEventListener(\"touchstart\",j),c.addEventListener(\"touchmove\",jt.Util.blockEvent),c.addEventListener(\"touchend\",k),c.addEventListener(\"touchcancel\",k),c.addEventListener(\"mousedown\",j),c.addEventListener(\"mouseup\",k),G[b]=c,a.appendChild(c)}if(!(C||z<=0)){v=document.createElement(\"div\"),v.id=\"jt-touch-speed\";var h=document.createElement(\"div\");h.id=\"jt-touch-pause\",h.addEventListener(\"touchstart\",m),v.appendChild(h);var i=document.createElement(\"div\");i.id=\"jt-touch-fast\",i.addEventListener(\"touchstart\",n),i.addEventListener(\"touchend\",o),v.appendChild(i),a.appendChild(v);var l=document.createElement(\"div\");l.id=\"jt-touch-left\",C=c(),C.addEventListener(\"touchstart\",d),C.addEventListener(\"touchmove\",f),C.addEventListener(\"touchend\",e),C.addEventListener(\"touchcancel\",e),l.appendChild(C),a.appendChild(l),l=document.createElement(\"div\"),l.id=\"jt-touch-right\",g(l,\"buttonT\"),g(l,\"button\"),a.appendChild(l),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){I=a,J=c,v&&b()},this.applyPreferences=function(){B=!!K.touch.directionalBig;var a=2===z?1:0;w=K.joystickKeys[a]};var r,s,t,u,v,w,x=jt.Util.isTouchDevice(),y=jt.Util.isMobileDevice(),z=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:x&&y?1:0,A=!1,B=!1,C=null,D=null,E=-1,F=0,G={},H=new q,I=!1,J=!1,K=Javatari.userPreferences.current,L=84;this.saveState=function(){return{}},this.loadState=function(a){p()}},jt.DOMConsoleControls=function(a){\"use strict\";function b(){l=new jt.GamepadConsoleControls(g),m=new jt.DOMTouchControls(g),g.applyPreferences()}function c(a){B=a,C=B?60/F[B]|0:0,E=C/2|0,D=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return g.processKey(c,b),!1}function e(a,b){y&&(a=o(a),p(a,b))||b!==u[a]&&(h.controlStateChanged(a,b),u[a]=b)}function f(){i.controlsModeStateUpdate()}var g=this;this.connect=function(a){h=a,h.connectControls(this),l.connect(a),m.connect(a)},this.connectPeripherals=function(a){i=a,l.connectScreen(a),m.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener(\"keydown\",this.keyDown),\na.addEventListener(\"keyup\",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){m.setupTouchControlsIfNeeded(a)},this.powerOn=function(){n(),l.powerOn(),m.powerOn(),0===O?q(!1,!1):1===O&&q(!0,!1)},this.powerOff=function(){q(!1,!1),l.powerOff(),m.powerOff()},this.releaseControllers=function(){for(var a in u)u[a]&&(h.controlStateChanged(0|a,!1),u[a]=!1);I=J=M=N=!1,v[t.JOY0_BUTTON]=v[t.JOY1_BUTTON]=!1,m.releaseControllers()},this.getTouchControls=function(){return m},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!x),r(),f()},this.setP1ControlsMode=function(a){x=a,l.setP1ControlsMode(a),m.setP1ControlsMode(a),this.releaseControllers(),s()},this.isP1ControlsMode=function(){return x},this.togglePaddleMode=function(){q(!y,!0),f()},this.isPaddleMode=function(){return y},this.toggleGamepadMode=function(){l.toggleMode(),f()},this.getGamepadModeDesc=function(){return l.getModeDesc()},this.toggleTouchControlsMode=function(){m.toggleMode(),f()},this.toggleTouchDirBig=function(){m.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((B+1)%11),i.showOSD(\"Turbo Fire\"+(B?\" speed: \"+this.getTurboFireSpeedDesc():\": OFF\"),!0),w.turboFireSpeed=B,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return B?B+\"x\":\"OFF\"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:y?\"ON\":\"OFF\",active:y};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:m.isDirBig()?\"ON\":\"OFF\",active:m.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:A?\"ON\":\"OFF\",active:!!A};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!B}}return{label:\"Unknown\",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){m.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(C){if(--D,D===E||0===D){var a=D>0;v[t.JOY0_BUTTON]&&e(t.JOY0_BUTTON,a),v[t.JOY1_BUTTON]&&e(t.JOY1_BUTTON,a)}D<=0&&(D=C)}l.controlsClockPulse(),y&&(J?I||(G-=H,G<0&&(G=0),h.controlValueChanged(t.PADDLE0_POSITION,G)):I&&(G+=H,G>380&&(G=380),h.controlValueChanged(t.PADDLE0_POSITION,G)),N?M||(K-=L,K<0&&(K=0),h.controlValueChanged(t.PADDLE1_POSITION,K)):M&&(K+=L,K>380&&(K=380),h.controlValueChanged(t.PADDLE1_POSITION,K)))},this.toggleHapticFeedback=function(){z?(A=!A,w.hapticFeedback=A,Javatari.userPreferences.setDirty()):i.showOSD(\"Haptic Feedback not available\",!0,!0)},this.hapticFeedback=function(){A&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!A||\"touchstart\"!==a.type&&\"touchend\"!==a.type&&\"touchmove\"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(O>=0)){var b=1===a.rom.info.p;y!==b&&q(b,!1)}},this.processKey=function(b,c){var d=k[b];if(d){if(c===v[d])return;c&&(D=E),v[d]=c}else if(d=j[b],!d)return a.processKey(b,c);e(d,c)},this.applyPreferences=function(){s(),c(w.turboFireSpeed),m.applyPreferences(),l.applyPreferences()};var h,i,j,k,l,m,n=function(){window.onhelp=function(){return!1}},o=function(a){switch(a){case t.JOY0_BUTTON:return t.PADDLE0_BUTTON;case t.JOY1_BUTTON:return t.PADDLE1_BUTTON;default:return a}},p=function(a,b){if(b)switch(a){case t.JOY0_LEFT:return I=!0,!0;case t.JOY0_RIGHT:return J=!0,!0;case t.JOY0_UP:return H<10&&H++,i.showOSD(\"P1 Paddle speed: \"+H,!0),!0;case t.JOY0_DOWN:return H>1&&H--,i.showOSD(\"P1 Paddle speed: \"+H,!0),!0;case t.JOY1_LEFT:return M=!0,!0;case t.JOY1_RIGHT:return N=!0,!0;case t.JOY1_UP:return L<10&&L++,i.showOSD(\"P2 Paddle speed: \"+L,!0),!0;case t.JOY1_DOWN:return L>1&&L--,i.showOSD(\"P2 Paddle speed: \"+L,!0),!0}else switch(a){case t.JOY0_LEFT:return I=!1,!0;case t.JOY0_RIGHT:return J=!1,!0;case t.JOY1_LEFT:return M=!1,!0;case t.JOY1_RIGHT:return N=!1,!0}return!1},q=function(a,b){y!==a&&g.releaseControllers(),y=a,H=L=2,G=K=y?190:-1,h.controlValueChanged(t.PADDLE0_POSITION,G),h.controlValueChanged(t.PADDLE1_POSITION,K),l.setPaddleMode(y),b&&r()},r=function(){i.showOSD(\"Controllers: \"+(y?\"Paddles\":\"Joysticks\")+(x?\", Swapped\":\"\"),!0)},s=function(){var a=jt.DOMKeys;j={},k={},j[P]=t.POWER,j[P|a.ALT]=t.POWER,j[P|a.SHIFT]=t.POWER_FRY,j[P|a.SHIFT|a.ALT]=t.POWER_FRY,j[Q]=t.BLACK_WHITE,j[Q|a.ALT]=t.BLACK_WHITE,j[R]=t.SELECT,j[R|a.ALT]=t.SELECT,j[S]=t.RESET,j[S|a.ALT]=t.RESET,j[T]=t.DIFFICULTY0,j[T|a.ALT]=t.DIFFICULTY0,j[U]=t.DIFFICULTY1,j[U|a.ALT]=t.DIFFICULTY1,j[V]=t.FAST_SPEED,j[V|a.ALT]=t.FAST_SPEED,j[V|a.SHIFT]=t.SLOW_SPEED,j[V|a.SHIFT|a.ALT]=t.SLOW_SPEED,j[W|a.SHIFT|a.ALT]=t.INC_SPEED,j[X|a.SHIFT|a.ALT]=t.DEC_SPEED,j[Y|a.SHIFT|a.ALT]=t.NORMAL_SPEED,j[Z|a.SHIFT|a.ALT]=t.MIN_SPEED,j[$|a.ALT]=t.PAUSE,j[$|a.SHIFT|a.ALT]=t.PAUSE_AUDIO_ON,j[_|a.ALT]=t.FRAME,j[aa|a.ALT]=t.FRAME,j[ca|a.ALT]=t.TRACE,j[da|a.ALT]=t.SHOW_INFO,j[ba|a.ALT]=t.DEBUG,j[ea|a.ALT]=t.NO_COLLISIONS,j[fa|a.ALT]=t.VIDEO_STANDARD,j[ga|a.ALT]=t.VIDEO_STANDARD,j[ha|a.ALT]=t.VSYNCH,j[ia|a.CONTROL]=t.SAVE_STATE_0,j[ja|a.CONTROL]=t.SAVE_STATE_0,j[ia|a.CONTROL|a.ALT]=t.SAVE_STATE_0,j[ja|a.CONTROL|a.ALT]=t.SAVE_STATE_0,j[ka|a.CONTROL]=t.SAVE_STATE_1,j[ka|a.CONTROL|a.ALT]=t.SAVE_STATE_1,j[la|a.CONTROL]=t.SAVE_STATE_2,j[la|a.CONTROL|a.ALT]=t.SAVE_STATE_2,j[ma|a.CONTROL]=t.SAVE_STATE_3,j[ma|a.CONTROL|a.ALT]=t.SAVE_STATE_3,j[na|a.CONTROL]=t.SAVE_STATE_4,j[na|a.CONTROL|a.ALT]=t.SAVE_STATE_4,j[oa|a.CONTROL]=t.SAVE_STATE_5,j[oa|a.CONTROL|a.ALT]=t.SAVE_STATE_5,j[pa|a.CONTROL]=t.SAVE_STATE_6,j[pa|a.CONTROL|a.ALT]=t.SAVE_STATE_6,j[qa|a.CONTROL]=t.SAVE_STATE_7,j[qa|a.CONTROL|a.ALT]=t.SAVE_STATE_7,j[ra|a.CONTROL]=t.SAVE_STATE_8,j[ra|a.CONTROL|a.ALT]=t.SAVE_STATE_8,j[sa|a.CONTROL]=t.SAVE_STATE_9,j[sa|a.CONTROL|a.ALT]=t.SAVE_STATE_9,j[ta|a.CONTROL]=t.SAVE_STATE_10,j[ta|a.CONTROL|a.ALT]=t.SAVE_STATE_10,j[ua|a.CONTROL]=t.SAVE_STATE_11,j[va|a.CONTROL]=t.SAVE_STATE_11,j[ua|a.CONTROL|a.ALT]=t.SAVE_STATE_11,j[va|a.CONTROL|a.ALT]=t.SAVE_STATE_11,j[wa|a.CONTROL]=t.SAVE_STATE_12,j[xa|a.CONTROL]=t.SAVE_STATE_12,j[wa|a.CONTROL|a.ALT]=t.SAVE_STATE_12,j[xa|a.CONTROL|a.ALT]=t.SAVE_STATE_12,j[ia|a.ALT]=t.LOAD_STATE_0,j[ja|a.ALT]=t.LOAD_STATE_0,j[ka|a.ALT]=t.LOAD_STATE_1,j[la|a.ALT]=t.LOAD_STATE_2,j[ma|a.ALT]=t.LOAD_STATE_3,j[na|a.ALT]=t.LOAD_STATE_4,j[oa|a.ALT]=t.LOAD_STATE_5,j[pa|a.ALT]=t.LOAD_STATE_6,j[qa|a.ALT]=t.LOAD_STATE_7,j[ra|a.ALT]=t.LOAD_STATE_8,j[sa|a.ALT]=t.LOAD_STATE_9,j[ta|a.ALT]=t.LOAD_STATE_10,j[ua|a.ALT]=t.LOAD_STATE_11,j[va|a.ALT]=t.LOAD_STATE_11,j[wa|a.ALT]=t.LOAD_STATE_12,j[xa|a.ALT]=t.LOAD_STATE_12;var b=x?1:0,c=x?0:1;j[w.joystickKeys[b].left.c]=t.JOY0_LEFT,j[w.joystickKeys[b].up.c]=t.JOY0_UP,j[w.joystickKeys[b].right.c]=t.JOY0_RIGHT,j[w.joystickKeys[b].down.c]=t.JOY0_DOWN,j[w.joystickKeys[b].button.c]=t.JOY0_BUTTON,j[w.joystickKeys[c].left.c]=t.JOY1_LEFT,j[w.joystickKeys[c].up.c]=t.JOY1_UP,j[w.joystickKeys[c].right.c]=t.JOY1_RIGHT,j[w.joystickKeys[c].down.c]=t.JOY1_DOWN,j[w.joystickKeys[c].button.c]=t.JOY1_BUTTON,k[w.joystickKeys[b].buttonT.c]=t.JOY0_BUTTON,k[w.joystickKeys[c].buttonT.c]=t.JOY1_BUTTON},t=jt.ConsoleControls,u={},v={},w=Javatari.userPreferences.current,x=!1,y=!1,z=!!navigator.vibrate,A=z&&!!w.hapticFeedback,B=0,C=0,D=0,E=0,F=[0,1,2,2.4,3,4,5,6,7.5,10,12],G=0,H=3,I=!1,J=!1,K=0,L=3,M=!1,N=!1,O=Javatari.PADDLES_MODE,P=jt.DOMKeys.VK_F1.c,Q=jt.DOMKeys.VK_F2.c,R=jt.DOMKeys.VK_F11.c,S=jt.DOMKeys.VK_F12.c,T=jt.DOMKeys.VK_F4.c,U=jt.DOMKeys.VK_F9.c,V=jt.DOMKeys.VK_TAB.c,W=jt.DOMKeys.VK_UP.c,X=jt.DOMKeys.VK_DOWN.c,Y=jt.DOMKeys.VK_RIGHT.c,Z=jt.DOMKeys.VK_LEFT.c,$=jt.DOMKeys.VK_P.c,_=jt.DOMKeys.VK_O.c,aa=jt.DOMKeys.VK_F.c,ba=jt.DOMKeys.VK_D.c,ca=jt.DOMKeys.VK_VOID,da=jt.DOMKeys.VK_I.c,ea=jt.DOMKeys.VK_C.c,fa=jt.DOMKeys.VK_V.c,ga=jt.DOMKeys.VK_Q.c,ha=jt.DOMKeys.VK_W.c,ia=jt.DOMKeys.VK_QUOTE.c,ja=jt.DOMKeys.VK_BACKQUOTE.c,ka=jt.DOMKeys.VK_1.c,la=jt.DOMKeys.VK_2.c,ma=jt.DOMKeys.VK_3.c,na=jt.DOMKeys.VK_4.c,oa=jt.DOMKeys.VK_5.c,pa=jt.DOMKeys.VK_6.c,qa=jt.DOMKeys.VK_7.c,ra=jt.DOMKeys.VK_8.c,sa=jt.DOMKeys.VK_9.c,ta=jt.DOMKeys.VK_0.c,ua=jt.DOMKeys.VK_MINUS.c,va=jt.DOMKeys.VK_FF_MINUS.c,wa=jt.DOMKeys.VK_EQUALS.c,xa=jt.DOMKeys.VK_FF_EQUALS.c;\nb(),jt.DOMConsoleControls.hapticFeedback=this.hapticFeedback,jt.DOMConsoleControls.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},jt.ScreenGUI=jt.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},jt.ScreenGUI.html=function(){return'<div id=\"jt-screen-fs\" tabindex=\"0\"> <div id=\"jt-screen-fs-center\" tabindex=\"-1\"> <div id=\"jt-screen-canvas-outer\"> <canvas id=\"jt-screen-canvas\" tabindex=\"-1\"></canvas> <img id=\"jt-canvas-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <div id=\"jt-logo\"> <div id=\"jt-logo-center\"> <img id=\"jt-logo-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <img id=\"jt-logo-image\" draggable=\"false\" src=\"'+jt.Images.urls.logo+'\"> <div id=\"jt-logo-message\"> <div id=\"jt-logo-message-text\"></div> <div id=\"jt-logo-message-ok\"> <div id=\"jt-logo-message-ok-text\"></div> </div> </div> </div> </div> <div id=\"jt-osd\"></div> </div> <div id=\"jt-bar\"> <div id=\"jt-bar-inner\"></div> </div> <div id=\"jt-console-panel\" class=\"jt-console-panel\" tabindex=\"-1\"> </div> </div> <div id=\"jt-screen-scroll-message\"> Swipe up/down on the Screen <br>to hide the browser bars! </div> </div>'},jt.ScreenGUI.htmlConsolePanel='<div id=\"jt-console-panel-p0-diff-label\" class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-p1-diff-label\" class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power-labels\" class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-reset-labels\" class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power\" class=\"jt-console-panel-power jt-console-panel-lever\"></div> <div id=\"jt-console-panel-color\" class=\"jt-console-panel-color jt-console-panel-lever\"></div> <div id=\"jt-console-panel-select\" class=\"jt-console-panel-select jt-console-panel-lever\"></div> <div id=\"jt-console-panel-reset\" class=\"jt-console-panel-reset jt-console-panel-lever\"></div> <div id=\"jt-console-panel-p0-diff\" class=\"jt-console-panel-p0-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-p1-diff\" class=\"jt-console-panel-p1-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-cart-image\" class=\"jt-console-panel-cart-image\"></div> <div id=\"jt-console-panel-cart-load\" class=\"jt-console-panel-cart-load\"></div> <div id=\"jt-console-panel-cart-file\" class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-url\" class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-label\" class=\"jt-console-panel-cart-label\"></div>',jt.ScreenGUI.css=function(){return\"html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: \"+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+\"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646;    /* one behind fsElement */ } html.jt-started #\"+Javatari.SCREEN_ELEMENT_ID+\" { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center {      /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: \"+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible;                    /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url(\"'+jt.Images.urls.iconSprites+'\"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 8px 0 6px; } #jt-bar-select { margin: 0 2px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+\"px; font-size: \"+this.BAR_MENU_ITEM_FONT_SIZE+\"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: \"+this.BAR_MENU_WIDTH+\"px; height: \"+this.BAR_MENU_ITEM_HEIGHT+\"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: \"+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: \"\"; position: absolute; width: 6px; height: 19px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+\"px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -\"+(jt.ConsolePanel.DEFAULT_HEIGHT+2)+\"px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: \"+(jt.ScreenGUI.BAR_HEIGHT+2)+'px; border: none; transform-origin: center bottom; } #jt-screen-fs .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-screen-fs .jt-select-dialog.jt-show { display: block; } #jt-screen-fs .jt-select-dialog .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } #jt-screen-fs .jt-select-dialog ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } #jt-screen-fs .jt-select-dialog li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px;       /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } #jt-screen-fs .jt-select-dialog li.jt-visible { display: block; } #jt-screen-fs .jt-select-dialog li.jt-selected { color: white; background: hsl(358, 67%, 46%); } #jt-screen-fs .jt-select-dialog li.jt-droptarget { color: white; border-color: lightgray; } #jt-screen-fs .jt-select-dialog li.jt-toggle::after { content: \"\"; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } #jt-screen-fs .jt-select-dialog li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up    { border-bottom-color: inherit; } .jt-arrow-down  { border-top-color: inherit; } .jt-arrow-left  { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 310px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: \"Quick Options\"; display: block; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: \"\"; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: \"\"; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: \"\"; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow:  inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: \"\"; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button  { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: \"\"; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused  #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:'+jt.ConsolePanel.DEFAULT_WIDTH+\"px; height:\"+jt.ConsolePanel.DEFAULT_HEIGHT+'px; background: black url(\"'+jt.Images.urls.panel+'\") no-repeat; background-size: 460px 134px; box-shadow: '+jt.ConsolePanel.sameBoxShadowAsScreen()+'; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url(\"'+jt.Images.urls.iconSprites+'\") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: \"\"; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: \"\"; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) {    /* Landscape */ #jt-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { left: calc(-6px - \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px; right: \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px; } } @media only screen and (orientation: portrait) {    /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: \"+(this.BAR_HEIGHT+12)+\"px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) {    /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) {    /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } \";\n},jt.Monitor=function(a){\"use strict\";function b(){n(),m(),e.setVideoStandard(H)}function c(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(10*b)/10}function d(a){var b=a<.5?.5:a;return Math.round(10*b)/10}var e=this;this.connect=function(a){s=a,s.connectMonitor(this)},this.nextLine=function(a,b){var c=!1;return I<u?I>=B&&I<B+y&&r.set(a,(I-B)*t):c=g(),I++,F||L++,b&&(F||h(),c|=f()),c};var f=function(){return!(I<v)&&(N&&a.showOSD(H.name+\"  \"+I+\" lines\",!0),I=0,J++,!0)},g=function(){return I>w&&f()};this.setVideoStandard=function(a){H=a,t=a.totalWidth,u=a.totalHeight,v=u-R,w=u+R+S,K&&(z=H.defaultHeightPct,C=H.defaultOriginYPct),k(x,z),j(A,C)};var h=function(){var a=L;L=0,(a>=250&&a<=281||a>=300&&a<=325)&&++G>=5&&i(a)},i=function(a){F=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=M,c=a-F.totalHeight;c=c>2?(c>6?6:c)-2:0,c!=b&&(M=c,e.setVideoStandard(F))};this.videoSignalOff=function(){I=0,a.videoSignalOff()};var j=function(a,b){A=a,A<0?A=0:A>t-x&&(A=t-x),C=b,C<0?C=0:C/100*u>u-y&&(C=(u-y)/u*100);var c=M/2;B=C/100*u+c|0,B+y>u&&(B=u-y)},k=function(a,b){x=a,x<10?x=10:x>t&&(x=t),z=b,z<10?z=10:z>100&&(z=100),y=z/100*(u+M)|0,y>u&&(y=u),o.width=x,o.height=y,j(A,C),l()},l=function(){a&&a.displayMetrics(x,y)},m=function(){K=!0,A=Q,C=H.defaultOriginYPct,k(O,H.defaultHeightPct)},n=function(){o=document.createElement(\"canvas\"),o.width=O,o.height=P,p=o.getContext(\"2d\",{alpha:!1,antialias:!1}),p.globalCompositeOperation=\"copy\",p.globalAlpha=1,q=p.createImageData(jt.VideoStandard.PAL.totalWidth,jt.VideoStandard.PAL.totalHeight),r=new Uint32Array(q.data.buffer)};this.currentLine=function(){return I},this.refresh=function(){p.putImageData(q,-A,0,A,0,x,y),a.refresh(o,x,y)},this.videoStandardDetectionStart=function(){F=null,G=0,L=0},this.getVideoStandardDetected=function(){return F},this.toggleShowInfo=function(){N=!N,N||a.showOSD(null,!0)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDefaults=function(){m(),a.crtModeSetDefault(),a.crtFilterSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtModeToggle=function(){a.crtModeToggle()},this.crtFilterToggle=function(){a.crtFilterToggle()},this.fullscreenToggle=function(){a.displayToggleFullscreen()},this.displayAspectDecrease=function(){this.displayScale(c(D-T),E),this.showOSD(\"Display Aspect: \"+D.toFixed(2)+\"x\",!0)},this.displayAspectIncrease=function(){this.displayScale(c(D+T),E),this.showOSD(\"Display Aspect: \"+D.toFixed(2)+\"x\",!0)},this.displayScaleDecrease=function(){this.displayScale(D,d(E-T)),this.showOSD(\"Display Size: \"+E.toFixed(2)+\"x\",!0)},this.displayScaleIncrease=function(){this.displayScale(D,d(E+T)),this.showOSD(\"Display Size: \"+E.toFixed(2)+\"x\",!0)},this.viewportOriginDecrease=function(){K=!1,j(A,C+U),this.showOSD(\"Viewport Origin: \"+B,!0)},this.viewportOriginIncrease=function(){K=!1,j(A,C-U),this.showOSD(\"Viewport Origin: \"+B,!0)},this.viewportSizeDecrease=function(){m(),this.showOSD(\"Viewport Size: Standard\",!0)},this.viewportSizeIncrease=function(){K=!1,k(t,100),this.showOSD(\"Viewport Size: Full Signal\",!0)},this.displayScale=function(b,c){D=b,E=c,a.displayScale(D,E)},this.controlStateChanged=function(b,c){a.controlStateChanged(b,c)},this.controlsStatesRedefined=function(){a.controlsStatesRedefined()},this.consolePowerAndUserPauseStateUpdate=function(b,c){a.consolePowerAndUserPauseStateUpdate(b,c)},this.cartridgeInserted=function(b){a.cartridgeInserted(b)};var o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=jt.VideoStandard.NTSC,I=0,J=0,K=!0,L=0,M=0,N=!1,O=160,P=213,Q=68,R=16,S=5,T=.1,U=.4;b()},jt.ConsolePanel=function(a,b){\"use strict\";function c(){k(),l(),p()}function d(b){jt.Util.blockEvent(b),I||(r.hapticFeedbackOnTouch(b),a.closeAllOverlays(),b.target.jtPressed=!0,t.controlStateChanged(b.target.jtControl,!0))}function e(a){jt.Util.blockEvent(a),a.target.jtPressed=!1,I||(r.hapticFeedbackOnTouch(a),t.controlStateChanged(a.target.jtControl,!1))}function f(a){a.target.jtPressed&&e(a)}function g(b){r.hapticFeedbackOnTouch(b),a.closeAllOverlays(),s.controlActivated(b.target.jtControl)}this.connectPeripherals=function(a,c,d){r=c,s=d,a.registerForDnD(b)},this.connect=function(a){t=a},this.setActive=function(a){G=a,G&&(v||c(),i(),j()),document.documentElement.classList.toggle(\"jt-console-panel-active\",G)},this.setLogoMessageActive=function(a){I=a},this.updateScale=function(a,c,d){var e=0,f=0;if(G){a=c?d?.85*a:a-36:.85*a;var g=Math.min(1,a/jt.ConsolePanel.DEFAULT_WIDTH);b.style.transform=g<1?\"translateX(-50%) scale(\"+g.toFixed(8)+\")\":\"translateX(-50%)\",e=Math.ceil(g*jt.ConsolePanel.DEFAULT_HEIGHT),f=Math.ceil(g*jt.ConsolePanel.DEFAULT_WIDTH)}return r&&r.getTouchControls().updateConsolePanelSize(a,f,e,c,d),e};var h=function(){o(v,!H[q.POWER]),o(w,H[q.BLACK_WHITE]),o(x,H[q.SELECT]),o(y,H[q.RESET]),o(z,H[q.DIFFICULTY0]),o(A,H[q.DIFFICULTY1]),i()},i=function(){if(o(B,u),o(F,u),F.innerHTML=u&&u.rom.info.l||K,u&&u.rom.info.lc){var a=u.rom.info.lc.trim().split(/\\s+/);F.style.color=a[0]||L,F.style.background=a[1]||M,F.style.borderColor=a[2]||N}else F.style.color=L,F.style.background=M,F.style.borderColor=N},j=function(){t.controlsStateReport(H),h()},k=function(){b.innerHTML=jt.ScreenGUI.htmlConsolePanel,delete jt.ScreenGUI.htmlConsolePanel,jt.Util.isMobileDevice()&&b.classList.add(\"jt-hide-labels\")},l=function(){v=document.getElementById(\"jt-console-panel-power\"),m(v,q.POWER,!1),w=document.getElementById(\"jt-console-panel-color\"),m(w,q.BLACK_WHITE,!1),x=document.getElementById(\"jt-console-panel-select\"),m(x,q.SELECT,!0),y=document.getElementById(\"jt-console-panel-reset\"),m(y,q.RESET,!0),z=document.getElementById(\"jt-console-panel-p0-diff\"),m(z,q.DIFFICULTY0,!1),A=document.getElementById(\"jt-console-panel-p1-diff\"),m(A,q.DIFFICULTY1,!1),B=document.getElementById(\"jt-console-panel-cart-image\"),C=document.getElementById(\"jt-console-panel-cart-load\"),n(C,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),Javatari.CARTRIDGE_CHANGE_DISABLED||(D=document.getElementById(\"jt-console-panel-cart-file\"),n(D,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),o(D,!0),E=document.getElementById(\"jt-console-panel-cart-url\"),n(E,jt.PeripheralControls.AUTO_LOAD_URL),o(E,!0))},m=function(a,b,c){a.jtControl=b,c?(a.jtPressed=!1,jt.Util.addEventsListener(a,\"mousedown touchstart\",d),jt.Util.addEventsListener(a,\"mouseup touchend touchcancel\",e),jt.Util.addEventsListener(a,\"mouseleave\",f)):jt.Util.onTapOrMouseDown(a,d)},n=function(a,b){a.jtControl=b,a.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(a,g)},o=function(a,b){a.style.opacity=b?1:0},p=function(){var a=(Javatari.CARTRIDGE_LABEL_COLORS||\"\").trim().split(/\\s+/);a[0]&&(L=a[0]),a[1]&&(M=a[1]),a[2]&&(N=a[2]),F=document.getElementById(\"jt-console-panel-cart-label\"),n(F,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT)},q=jt.ConsoleControls;this.controlStateChanged=function(a,b){G&&J[a]&&j()},this.controlsStatesRedefined=function(){G&&j()},this.cartridgeInserted=function(a){u=a,G&&i()};var r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=!1,H={},I=!1,J={};J[q.POWER]=1,J[q.BLACK_WHITE]=1,J[q.SELECT]=1,J[q.RESET]=1,J[q.DIFFICULTY0]=1,J[q.DIFFICULTY1]=1;var K=\"JAVATARI\",L=\"#fa2525\",M=\"#101010\",N=\"transparent\"},jt.ConsolePanel.DEFAULT_WIDTH=460,jt.ConsolePanel.DEFAULT_HEIGHT=134,jt.ConsolePanel.shouldStartActive=function(){return!Javatari.SCREEN_CONSOLE_PANEL_DISABLED&&(Javatari.CONSOLE_PANEL_ELEMENT_ID===-1||document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID))},jt.ConsolePanel.sameBoxShadowAsScreen=function(){var a=document.getElementById(Javatari.SCREEN_ELEMENT_ID);return a?window.getComputedStyle(a,null).getPropertyValue(\"box-shadow\"):\"none\"},jt.CanvasDisplay=function(mainElement){\"use strict\";function init(){jt.Util.insertCSS(jt.ScreenGUI.css()),delete jt.ScreenGUI.css,setupMain(),setupBar(),setupFullscreen(),consolePanel=new jt.ConsolePanel(self,consolePanelElement),monitor=new jt.Monitor(self)}function consolePanelUpdateForOrientation(){\nsetConsolePanelActive(isFullscreen&&isLandscape?consolePanelActiveLandscape:consolePanelActivePortrait)}function setConsolePanelActive(a){consolePanelActive!==a&&(consolePanelActive=a,consolePanel.setActive(consolePanelActive),updateScale(),consolePanelActive?showBar():cursorHideFrameCountdown=CURSOR_HIDE_FRAMES)}function hideOSD(){osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,osdShowing=!1}function releaseControllersOnLostFocus(){consoleControlsSocket.releaseControllers()}function hideCursorAndBar(){hideCursor(),hideBar(),cursorHideFrameCountdown=-1}function showCursorAndBar(a){showCursor(),!a&&mousePointerLocked||showBar(),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES}function showCursor(){cursorShowing||(fsElement.style.cursor=cursorType,cursorShowing=!0)}function hideCursor(){cursorShowing&&(fsElement.style.cursor=\"none\",cursorShowing=!1)}function fullscreenByAPIChanged(){var a=isFullscreen,b=isFullScreenByAPI();b||fullScreenAPIExitUserRequested||!isBrowserStandalone?setFullscreenState(b):self.requestReadjust(),a&&!b&&!fullScreenAPIExitUserRequested&&isMobileDevice&&(isBrowserStandalone?setEnterFullscreenByAPIOnFirstTouch():(atariConsole.systemPause(!0),showLogoMessage(\"<br>Emulation suspended\",\"RESUME\",!0,function(){self.setFullscreen(!0),atariConsole.systemPause(!1)}))),fullScreenAPIExitUserRequested=!1}function isFullScreenByAPI(){return!!document[fullScreenAPIQueryProp]}function enterFullScreenByAPI(){if(fullscreenAPIEnterMethod)try{fullscreenAPIEnterMethod.call(fsElement)}catch(a){}}function exitFullScreenByAPI(){if(fullScreenAPIExitMethod)try{fullScreenAPIExitUserRequested=!0,fullScreenAPIExitMethod.call(document)}catch(a){}}function updateScale(){var a=Math.round(targetWidth*scaleY*aspectX*2),b=Math.round(targetHeight*scaleY);canvas.style.width=\"\"+a+\"px\",canvas.style.height=\"\"+b+\"px\",updateBarWidth(a),signalIsOn||updateLogoScale(),settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),updateConsolePanelScale(a)}function updateBarWidth(a){var b=buttonsBarDesiredWidth>0?buttonsBarDesiredWidth:a;buttonsBar.style.width=buttonsBarDesiredWidth===-1?\"100%\":\"\"+b+\"px\",buttonsBar.classList.toggle(\"jt-narrow\",b<NARROW_WIDTH)}function updateConsolePanelScale(a){var b=consolePanel.updateScale(a,isFullscreen,isLandscape);mainElement.style.marginBottom=!isFullscreen&&b>0?\"\"+Math.ceil(b+3)+\"px\":\"initial\"}function updateCanvasContentSize(){var a=crtFilterEffective>0?CANVAS_SIZE_FACTOR:1;canvas.width=targetWidth*a,canvas.height=targetHeight*a,canvasContext=null}function setCRTFilter(a){crtFilter=a,crtFilterEffective=crtFilter===-2?null:crtFilter===-1?crtFilterAutoValue():a,updateCanvasContentSize()}function crtFilterAutoValue(){return isMobileDevice&&!isIOSDevice&&\"FIREFOX\"===browserName?0:1}function setCRTMode(a){crtMode=a,crtModeEffective=crtMode===-1?crtModeAutoValue():crtMode,canvasContext=null}function crtModeAutoValue(){return 0}function updateLogo(){signalIsOn||(updateLogoScale(),showCursorAndBar(!0),canvasContext&&canvasContext.clearRect(0,0,canvas.width,canvas.height)),logo.classList.toggle(\"jt-show\",!signalIsOn)}function updateLoading(){var a=isLoading?\"block\":\"none\";logoLoadingIcon.style.display=a,canvasLoadingIcon.style.display=a}function createCanvasContext(){canvasContext=canvas.getContext(\"2d\",{alpha:!1,antialias:!1}),setImageComposition(),setImageSmoothing()}function setImageComposition(){crtModeEffective>0&&!debugMode?(canvasContext.globalCompositeOperation=\"source-over\",canvasContext.globalAlpha=.8):(canvasContext.globalCompositeOperation=\"copy\",canvasContext.globalAlpha=1)}function setImageSmoothing(){if(canvas.style.imageRendering=0===crtFilterEffective||2===crtFilterEffective?canvasImageRenderingValue:\"initial\",null!==crtFilterEffective){var a=crtFilterEffective>=2;void 0!==canvasContext.imageSmoothingEnabled?canvasContext.imageSmoothingEnabled=a:(canvasContext.webkitImageSmoothingEnabled=a,canvasContext.mozImageSmoothingEnabled=a,canvasContext.msImageSmoothingEnabled=a)}}function suppressContextMenu(a){a.addEventListener(\"contextmenu\",jt.Util.blockEvent)}function preventDrag(a){a.ondragstart=jt.Util.blockEvent}function setupMain(){switch(mainElement.innerHTML=jt.ScreenGUI.html(),mainElement.tabIndex=-1,delete jt.ScreenGUI.html,fsElement=document.getElementById(\"jt-screen-fs\"),fsElementCenter=document.getElementById(\"jt-screen-fs-center\"),canvasOuter=document.getElementById(\"jt-screen-canvas-outer\"),canvas=document.getElementById(\"jt-screen-canvas\"),canvasLoadingIcon=document.getElementById(\"jt-canvas-loading-icon\"),osd=document.getElementById(\"jt-osd\"),logo=document.getElementById(\"jt-logo\"),logoCenter=document.getElementById(\"jt-logo-center\"),logoImage=document.getElementById(\"jt-logo-image\"),logoLoadingIcon=document.getElementById(\"jt-logo-loading-icon\"),logoMessage=document.getElementById(\"jt-logo-message\"),logoMessageText=document.getElementById(\"jt-logo-message-text\"),logoMessageOK=document.getElementById(\"jt-logo-message-ok\"),logoMessageOKText=document.getElementById(\"jt-logo-message-ok-text\"),scrollMessage=document.getElementById(\"jt-screen-scroll-message\"),consolePanelElement=document.getElementById(\"jt-console-panel\"),suppressContextMenu(mainElement),preventDrag(logoImage),preventDrag(logoLoadingIcon),preventDrag(canvasLoadingIcon),updateCanvasContentSize(),browserName){case\"CHROME\":case\"EDGE\":case\"OPERA\":canvasImageRenderingValue=\"pixelated\";break;case\"FIREFOX\":canvasImageRenderingValue=\"-moz-crisp-edges\";break;case\"SAFARI\":canvasImageRenderingValue=\"-webkit-optimize-contrast\";break;default:canvasImageRenderingValue=\"pixelated\"}setupMainEvents()}function setupMainEvents(){(isMobileDevice?canvasOuter:fsElement).addEventListener(\"mousemove\",function(){showCursorAndBar()}),\"onblur\"in document?fsElement.addEventListener(\"blur\",releaseControllersOnLostFocus,!0):fsElement.addEventListener(\"focusout\",releaseControllersOnLostFocus,!0),window.addEventListener(\"orientationchange\",function(){closeAllOverlays(),signalIsOn?hideCursorAndBar():showCursorAndBar(),self.requestReadjust()}),mainElement.addEventListener(\"drop\",closeAllOverlays,!0),logoMessageOK.jtNeedsUIG=logoMessageOKText.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(logoMessageOK,function(a){consoleControls.hapticFeedbackOnTouch(a),self.closeLogoMessage()}),jt.Util.addEventsListener(fsElementCenter,\"touchstart touchend mousedown\",function(a){\"touchend\"!==a.type?(closeAllOverlays(),showCursorAndBar()):a.cancelable&&a.preventDefault()})}function setupBar(){buttonsBar=document.getElementById(\"jt-bar\"),buttonsBarInner=document.getElementById(\"jt-bar-inner\"),BAR_AUTO_HIDE&&(document.documentElement.classList.add(\"jt-bar-auto-hide\"),fsElement.addEventListener(\"mouseleave\",hideBar),hideBar());var a=[{label:\"Power\",clickModif:0,control:jt.PeripheralControls.MACHINE_POWER_TOGGLE},{label:\"Fry Console\",control:jt.PeripheralControls.MACHINE_POWER_FRY},{label:\"\",divider:!0},{label:\"Select Cartridge\",control:jt.PeripheralControls.CARTRIDGE_LOAD_RECENT},{label:\"\",divider:!0},{label:\"Open File\",clickModif:KEY_CTRL_MASK,control:jt.PeripheralControls.AUTO_LOAD_FILE,needsUIG:!0},{label:\"Open URL\",clickModif:KEY_CTRL_MASK|KEY_ALT_MASK,control:jt.PeripheralControls.AUTO_LOAD_URL,needsUIG:!0},{label:\"\",divider:!0},{label:\"Load State\",control:jt.PeripheralControls.MACHINE_LOAD_STATE_MENU},{label:\"Save State\",control:jt.PeripheralControls.MACHINE_SAVE_STATE_MENU}];powerButton=addBarButton(\"jt-bar-power\",-5,-26,\"System Power\",null,!1,a,\"System\"),barMenuSystem=a,self.consolePowerAndUserPauseStateUpdate(!1,!1),isMobileDevice?settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Quick Options\",jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS,!1):(a=[{label:\"Help & Settings\",clickModif:0,control:jt.PeripheralControls.SCREEN_OPEN_SETTINGS},{label:\"Quick Options\",control:jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS},{label:\"Defaults\",control:jt.PeripheralControls.SCREEN_DEFAULTS\n}],settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Settings\",null,!1,a,\"Settings\")),gameSelectButton=addBarButton(\"jt-bar-select\",-78,-51,\"Game Select\",jt.ConsoleControls.SELECT,!0),gameResetButton=addBarButton(\"jt-bar-reset\",-33,-51,\"Game Reset\",jt.ConsoleControls.RESET,!0),FULLSCREEN_MODE!==-2&&(fullscreenButton=addBarButton(\"jt-bar-full-screen\",-103,-1,\"Full Screen\",jt.PeripheralControls.SCREEN_FULLSCREEN,!1),fullscreenButton.jtNeedsUIG=!0,isMobileDevice&&fullscreenButton.classList.add(\"jt-mobile\")),Javatari.SCREEN_RESIZE_DISABLED||isMobileDevice||(scaleUpButton=addBarButton(\"jt-bar-scale-plus\",-80,-1,\"Increase Screen\",jt.PeripheralControls.SCREEN_SCALE_PLUS,!1),scaleUpButton.classList.add(\"jt-full-screen-hidden\"),scaleDownButton=addBarButton(\"jt-bar-scale-minus\",-58,-1,\"Decrease Screen\",jt.PeripheralControls.SCREEN_SCALE_MINUS,!1),scaleDownButton.classList.add(\"jt-full-screen-hidden\"));var b=addBarButton(\"jt-bar-console-panel\",-61,-25,\"Toggle Console Panel\",jt.PeripheralControls.SCREEN_CONSOLE_PANEL_TOGGLE,!1);b.classList.add(\"jt-full-screen-only\"),logoButton=addBarButton(\"jt-bar-logo\",-99,-26,\"About Javatari\",jt.PeripheralControls.SCREEN_OPEN_ABOUT,!1),logoButton.classList.add(\"jt-full-screen-hidden\"),jt.Util.onTapOrMouseDownWithBlockUIG(buttonsBar,barElementTapOrMouseDown),jt.Util.addEventsListener(buttonsBar,\"touchmove\",barElementTouchMove),jt.Util.addEventsListener(buttonsBar,\"mouseup touchend\",barElementTouchEndOrMouseUp)}function addBarButton(a,b,c,d,e,f,g,h){var i=document.createElement(\"div\");return i.id=a,i.classList.add(\"jt-bar-button\"),i.jtBarElementType=1,i.jtControl=e,i.jtIsConsoleControl=f,i.style.backgroundPosition=\"\"+b+\"px \"+c+\"px\",i.jtBX=b,g&&(i.jtMenu=g,g.jtTitle=h,g.jtRefElement=i,g.jtMenuIndex=barMenus.length,barMenus.push(g)),d&&(i.title=d),i.addEventListener(\"mouseenter\",function(a){barButtonHoverOver(a.target,a)}),f&&i.addEventListener(\"mouseleave\",barButtonMouseLeft),buttonsBarInner.appendChild(i),i}function barButtonTapOrMousedown(a,b){if(!logoMessageActive){consoleControls.hapticFeedbackOnTouch(b);var c=barMenuActive;if(closeAllOverlays(),a.jtControl)return void(b.button||(a.jtIsConsoleControl?(barConsoleControlPressed=a.jtControl,consoleControlsSocket.controlStateChanged(barConsoleControlPressed,!0)):peripheralControls.controlActivated(a.jtControl)));var d=a.jtMenu;if(d){var e=0|(b.altKey&&KEY_ALT_MASK)|(b.ctrlKey&&KEY_CTRL_MASK)|(b.shiftKey&&KEY_SHIFT_MASK);if(0===e&&!b.button)return void(c!==d&&(showBarMenu(d),\"touchstart\"===b.type&&barButtonLongTouchStart(b)));for(var f=0;f<d.length;++f)if(d[f].clickModif===e)return void peripheralControls.controlActivated(d[f].control,1===b.button,d[f].secSlot);if(e&KEY_SHIFT_MASK)for(e&=~KEY_SHIFT_MASK,f=0;f<d.length;++f)if(d[f].clickModif===e)return void peripheralControls.controlActivated(d[f].control,1===b.button,!0)}}}function barButtonLongTouchStart(a){barButtonLongTouchTarget=a.target,barButtonLongTouchSelectTimeout=window.setTimeout(function(){if(barMenuActive)for(var a=barMenu.jtItems,b=0;b<a.length;++b){var c=a[b].jtMenuOption;if(c&&0===c.clickModif)return void barMenuItemSetActive(a[b],!0)}},450)}function barButtonLongTouchCancel(){barButtonLongTouchSelectTimeout&&(clearTimeout(barButtonLongTouchSelectTimeout),barButtonLongTouchSelectTimeout=null)}function barButtonHoverOver(a,b){barMenuActive&&a.jtMenu&&barMenuActive!==a.jtMenu&&(consoleControls.hapticFeedbackOnTouch(b),showBarMenu(a.jtMenu))}function barButtonMouseLeft(){barConsoleControlPressed&&(cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,consoleControlsSocket.controlStateChanged(barConsoleControlPressed,!1),barConsoleControlPressed=null)}function barButtonTouchEndOrMouseUp(a){if(!logoMessageActive)return barConsoleControlPressed?(consoleControls.hapticFeedbackOnTouch(a),consoleControlsSocket.controlStateChanged(barConsoleControlPressed,!1),void(barConsoleControlPressed=null)):void(!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey))}function barMenuItemTapOrMouseDown(a,b){barMenuItemSetActive(a,\"touchstart\"===b.type)}function barMenuItemHoverOver(a,b){barMenuItemSetActive(a,\"touchmove\"===b.type)}function barMenuItemHoverOut(){barMenuItemSetActive(null)}function barMenuItemTouchEndOrMouseUp(a){logoMessageActive||!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey)}function barMenuItemFireActive(a,b){var c=barMenuItemActive.jtMenuOption;barMenuItemSetActive(null),c&&!c.disabled&&(c.extension?extensionsSocket.toggleExtension(c.extension,b,a):c.control&&(a|=c.secSlot,closeAllOverlays(),peripheralControls.controlActivated(c.control,b,a)))}function barMenuItemSetActive(a,b){a!==barMenuItemActive&&(barMenuItemActive&&barMenuItemActive.classList.remove(\"jt-hover\"),a&&a.jtMenuOption?(barMenuItemActive=a,b&&consoleControls.hapticFeedback(),barMenuItemActive.classList.add(\"jt-hover\")):barMenuItemActive=null)}function barElementTapOrMouseDown(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES;var b=a.target;1===b.jtBarElementType?barButtonTapOrMousedown(b,a):2===b.jtBarElementType?barMenuItemTapOrMouseDown(b,a):hideBarMenu()}function barElementTouchMove(a){jt.Util.blockEvent(a);var b=a.changedTouches[0],c=b&&document.elementFromPoint(b.clientX,b.clientY);barButtonLongTouchTarget&&c!==barButtonLongTouchTarget&&barButtonLongTouchCancel(),2!==c.jtBarElementType&&c!==barButtonLongTouchTarget&&barMenuItemSetActive(null),1===c.jtBarElementType?barButtonHoverOver(c,a):2===c.jtBarElementType&&barMenuItemHoverOver(c,a)}function barElementTouchEndOrMouseUp(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,jt.Util.blockEvent(a),barButtonLongTouchCancel();var b=a.target;1===b.jtBarElementType?barButtonTouchEndOrMouseUp(a):2===b.jtBarElementType&&barMenuItemTouchEndOrMouseUp(a)}function setupFullscreen(){fullscreenAPIEnterMethod=fsElement.requestFullscreen||fsElement.webkitRequestFullscreen||fsElement.webkitRequestFullScreen||fsElement.mozRequestFullScreen,fullScreenAPIExitMethod=document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen,\"fullscreenElement\"in document?fullScreenAPIQueryProp=\"fullscreenElement\":\"webkitFullscreenElement\"in document?fullScreenAPIQueryProp=\"webkitFullscreenElement\":\"mozFullScreenElement\"in document&&(fullScreenAPIQueryProp=\"mozFullScreenElement\"),fullscreenAPIEnterMethod||!isMobileDevice||isBrowserStandalone||(fullScreenScrollHack=!0),\"onfullscreenchange\"in document?document.addEventListener(\"fullscreenchange\",fullscreenByAPIChanged):\"onwebkitfullscreenchange\"in document?document.addEventListener(\"webkitfullscreenchange\",fullscreenByAPIChanged):\"onmozfullscreenchange\"in document&&document.addEventListener(\"mozfullscreenchange\",fullscreenByAPIChanged),fullscreenAPIEnterMethod||(scrollMessage.jtScroll=canvas.jtScroll=logo.jtScroll=logoCenter.jtScroll=logoImage.jtScroll=logoMessage.jtScroll=logoMessageText.jtScroll=logoMessageOK.jtScroll=logoMessageOKText.jtScroll=!0,fsElement.addEventListener(\"touchmove\",function(a){if(isFullscreen){if(!fullScreenScrollHack||!a.target.jtScroll)return jt.Util.blockEvent(a);scrollMessageActive&&setScrollMessage(!1)}}))}function setEnterFullscreenByAPIOnFirstTouch(){if(fullscreenAPIEnterMethod){var a=!1,b=function(){a||(a=!0,jt.Util.removeEventsListener(fsElement,\"touchend mousedown\",b,!0),enterFullScreenByAPI())};jt.Util.addEventsListener(fsElement,\"touchend mousedown\",b,!0)}}function setFullscreenState(a){isFullscreen=a,a?(setViewport(),document.documentElement.classList.add(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.add(\"jt-full-screen-scroll-hack\"),consoleControls.setupTouchControlsIfNeeded(fsElementCenter),fullScreenScrollHack&&setScrollMessage(!0),fullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()):(restoreViewport(),document.documentElement.classList.remove(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.remove(\"jt-full-screen-scroll-hack\"),\nfullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()),self.requestReadjust()}function tryToFixSafariBugOnFullScreenChange(){var a=document.getElementById(\"jt-dummy-element\");a?mainElement.removeChild(a):(a=document.createElement(\"div\"),a.id=\"jt-dummy-element\",mainElement.appendChild(a))}function showBar(){buttonsBar.classList.remove(\"jt-hidden\")}function hideBar(){!BAR_AUTO_HIDE&&!isFullscreen||barMenuActive||consolePanelActive||barConsoleControlPressed||(hideBarMenu(),buttonsBar.classList.add(\"jt-hidden\"))}function showBarMenu(a,b){if(a&&barMenuActive!==a){if(!barMenu)return setupBarMenu(),void setTimeout(function(){showBarMenu(a,b)},1);refreshBarMenu(a),barMenuItemSetActive(b?barMenu.jtDefaultItem:null);var c=a.jtRefElement,d=c&&c.offsetLeft-15||0;d+jt.ScreenGUI.BAR_MENU_WIDTH>c.parentElement.clientWidth?(barMenu.style.right=0,barMenu.style.left=\"auto\",barMenu.style.transformOrigin=\"bottom right\"):(d<0&&(d=0),barMenu.style.left=\"\"+d+\"px\",barMenu.style.right=\"auto\",barMenu.style.transformOrigin=\"bottom left\"),showCursorAndBar(!0),barMenuActive=a,barMenu.style.display=\"inline-block\",barMenu.jtTitle.focus()}}function refreshBarMenu(a){barMenu.jtTitle.innerHTML=a.jtTitle,barMenu.jtDefaultItem=null;for(var b,c=0,d=Math.min(a.length,BAR_MENU_MAX_ITEMS),e=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT+3,f=0;f<d;++f){var g=a[f];void 0!==g.label&&(b=barMenu.jtItems[c],b.firstChild.textContent=g.label,b.jtMenuOption=null,g.hidden||isFullscreen&&g.fullScreenHidden||!isFullscreen&&g.fullScreenOnly?b.style.display=\"none\":(b.style.display=\"block\",g.divider?b.classList.add(\"jt-bar-menu-item-divider\"):(b.classList.remove(\"jt-bar-menu-item-divider\"),e+=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT,b.classList.toggle(\"jt-bar-menu-item-toggle\",void 0!==g.toggle),g.disabled?b.classList.add(\"jt-bar-menu-item-disabled\"):(b.classList.remove(\"jt-bar-menu-item-disabled\"),b.jtMenuOption=g,0===g.clickModif&&(barMenu.jtDefaultItem=b),b.jtNeedsUIG=g.needsUIG,void 0!==g.toggle&&b.classList.toggle(\"jt-bar-menu-item-toggle-checked\",!!g.checked)))),++c)}for(var h=c;h<BAR_MENU_MAX_ITEMS;++h)b=barMenu.jtItems[h],b.firstChild.textContent=\"\",b.style.display=\"none\",b.jtMenuOption=null;var i=fsElementCenter.clientHeight-jt.ScreenGUI.BAR_HEIGHT-8,j=e<i?1:i/e;barMenu&&(barMenu.style.transform=\"scale(\"+j.toFixed(4)+\")\")}function hideBarMenu(){barMenuActive&&(barMenuActive=null,barMenu.style.display=\"none\",barMenuItemSetActive(null),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,self.focus())}function setupBarMenu(){barMenu=document.createElement(\"div\"),barMenu.id=\"jt-bar-menu\";var a=document.createElement(\"div\");a.id=\"jt-bar-menu-inner\",barMenu.appendChild(a);var b=document.createElement(\"div\");b.id=\"jt-bar-menu-title\",b.tabIndex=-1,b.innerHTML=\"Menu Title\",a.appendChild(b),barMenu.jtTitle=b,barMenu.jtItems=new Array(BAR_MENU_MAX_ITEMS);for(var c=0;c<BAR_MENU_MAX_ITEMS;++c){var d=document.createElement(\"div\");d.classList.add(\"jt-bar-menu-item\"),d.style.display=\"none\",d.innerHTML=\"Menu Item \"+c,d.jtBarElementType=2,d.jtItemIndex=c,d.addEventListener(\"mouseenter\",function(a){barMenuItemHoverOver(a.target,a)}),d.addEventListener(\"mouseleave\",barMenuItemHoverOut),a.appendChild(d),barMenu.jtItems[c]=d}barMenu.addEventListener(\"keydown\",function(a){if(MENU_CLOSE_KEYS[a.keyCode])hideBarMenu();else if(barMenuItemActive&&MENU_EXEC_KEYS[a.keyCode&~KEY_SHIFT_MASK&~KEY_CTRL_MASK])barMenuItemFireActive(a.shiftKey,a.ctrlKey);else if(MENU_SELECT_KEYS[a.keyCode]){if(!barMenuActive)return;var b=(barMenus.length+barMenuActive.jtMenuIndex+MENU_SELECT_KEYS[a.keyCode])%barMenus.length;showBarMenu(barMenus[b],!0)}else if(MENU_ITEM_SELECT_KEYS[a.keyCode]){var c=barMenu.jtItems,d=barMenuItemActive?barMenuItemActive.jtItemIndex:-1,e=BAR_MENU_MAX_ITEMS+1;do d=(d+c.length+MENU_ITEM_SELECT_KEYS[a.keyCode])%c.length;while(--e>=0&&!c[d].jtMenuOption);e>=0&&barMenuItemSetActive(c[d])}return jt.Util.blockEvent(a)}),buttonsBar.appendChild(barMenu)}function closeAllOverlays(){hideBarMenu(),saveStateDialog&&saveStateDialog.hide(),quickOtionsDialog&&quickOtionsDialog.hide(),settingsDialog&&settingsDialog.hide(),recentROMsDialog&&recentROMsDialog.hide()}function showLogoMessage(a,b,c,d){consolePanel.setLogoMessageActive(!0),logoMessageActive||(closeAllOverlays(),d&&(afterMessageAction=d),logoMessageText.innerHTML=a,logoMessageOK.classList.toggle(\"jt-higher\",!!c),logoMessageOKText.innerHTML=b||\"OK\",fsElement.classList.add(\"jt-logo-message-active\"),logoMessageActive=!0,signalIsOn=!1,updateLogo())}function updateLogoScale(){var a=canvasOuter.clientWidth,b=Math.min(a/jt.ScreenGUI.LOGO_SCREEN_WIDTH,1);b<1?logoCenter.style.transform=\"translate(-50%, -50%) scale(\"+b.toFixed(4)+\")\":logoCenter.style.transform=\"translate(-50%, -50%)\"}function setScrollMessage(a){console.error(\"Scroll Message: \"+a),fsElement.classList.toggle(\"jt-scroll-message\",a),scrollMessageActive=a,a&&setTimeout(function(){setScrollMessage(!1)},5e3)}function readjustAll(a){if(isReadjustScreeSizeChanged(a)){if(isFullscreen){buttonsBarDesiredWidth=isLandscape?0:-1;var b=readjustScreenSize.h;isLandscape||(b-=jt.ScreenGUI.BAR_HEIGHT+2),monitor.displayScale(aspectX,displayOptimalScaleY(readjustScreenSize.w,b))}else buttonsBarDesiredWidth=-1,monitor.displayScale(Javatari.SCREEN_DEFAULT_ASPECT,self.displayDefaultScale());self.focus(),consolePanelUpdateForOrientation(),consoleControlsSocket.releaseControllers()}readjustInterval&&jt.Util.performanceNow()-readjustRequestTime>=1e3&&(clearInterval(readjustInterval),readjustInterval=null)}function isReadjustScreeSizeChanged(a){var b=mainElement.parentElement.clientWidth,c=fsElementCenter.clientWidth,d=fsElementCenter.clientHeight;return!(!a&&readjustScreenSize.pw===b&&readjustScreenSize.w===c&&readjustScreenSize.h===d)&&(readjustScreenSize.pw=b,readjustScreenSize.w=c,readjustScreenSize.h=d,isLandscape=c>d,!0)}function displayOptimalScaleY(a,b){var c=2*aspectX,d=b/targetHeight;return targetWidth*c*d>a&&(d=a/(targetWidth*c)),d}function setViewport(){if(isMobileDevice){if(void 0===viewPortOriginalContent&&(viewPortOriginalTag=document.querySelector(\"meta[name=viewport]\"),viewPortOriginalContent=viewPortOriginalTag&&viewPortOriginalTag.content||null),viewportTag||(viewportTag=document.createElement(\"meta\"),viewportTag.name=\"viewport\",viewportTag.content=\"width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes\",document.head.appendChild(viewportTag)),viewPortOriginalTag)try{document.head.removeChild(viewPortOriginalTag)}catch(a){}viewPortOriginalTag=null}}function restoreViewport(){if(isMobileDevice){if(!viewPortOriginalTag&&viewPortOriginalContent&&(viewPortOriginalTag=document.createElement(\"meta\"),viewPortOriginalTag.name=\"viewport\",viewPortOriginalTag.content=viewPortOriginalContent,document.head.appendChild(viewPortOriginalTag)),viewportTag)try{document.head.removeChild(viewportTag)}catch(a){}viewportTag=null}}function setPageVisibilityHandling(){function a(){logoMessageActive||(document.hidden?b=!atariConsole.systemPause(!0):b&&atariConsole.systemPause(!1))}var b;document.addEventListener(\"visibilitychange\",a)}var self=this;this.connect=function(a){atariConsole=a,monitor.connect(atariConsole.getVideoOutput()),consoleControlsSocket=atariConsole.getConsoleControlsSocket(),cartridgeSocket=atariConsole.getCartridgeSocket(),consolePanel.connect(consoleControlsSocket)},this.connectPeripherals=function(a,b,c,d,e,f){recentROMs=a,fileLoader=b,b.registerForDnD(fsElement),b.registerForFileInputElement(fsElement),fileDownloader=c,fileDownloader.registerForDownloadElement(fsElement),peripheralControls=e,consoleControls=d,consoleControls.addKeyInputElement(fsElement),stateMedia=f,consolePanel.connectPeripherals(b,consoleControls,peripheralControls)},this.powerOn=function(){monitor.setDefaults(),updateLogo(),document.documentElement.classList.add(\"jt-started\"),setPageVisibilityHandling(),\nthis.focus(),JavatariFullScreenSetup.shouldStartInFullScreen()&&(setFullscreenState(!0),setEnterFullscreenByAPIOnFirstTouch())},this.powerOff=function(){document.documentElement.remove(\"jt-started\")},this.start=function(a){function b(){self.setFullscreen(!0),a()}!isMobileDevice||isBrowserStandalone||isFullscreen?a():jt.Util.isOfficialHomepage()?showLogoMessage(\"For \"+(fullscreenAPIEnterMethod?\"the best\":\"a full-screen\")+' experience, use<br>the \"Add to Home Screen\" function<br>then launch from the Installed App',\"NICE!\",!1,b):showLogoMessage(\"For the best experience,<br>Javatari will go full-screen\",\"GO!\",!0,b)},this.refresh=function(a,b,c){cursorHideFrameCountdown>0&&--cursorHideFrameCountdown<=0&&hideCursorAndBar(),signalIsOn||(signalIsOn=!0,updateLogo()),canvasContext||createCanvasContext(),canvasContext.drawImage(a,0,0,canvas.width,canvas.height)},this.videoSignalOff=function(){signalIsOn=!1,showCursorAndBar(),updateLogo()},this.mousePointerLocked=function(a){mousePointerLocked=a,mousePointerLocked?hideCursorAndBar():showCursorAndBar()},this.openHelp=function(){return self.openSettings(\"GENERAL\"),!1},this.openAbout=function(){return self.openSettings(\"ABOUT\"),!1},this.openSettings=function(a){closeAllOverlays(),settingsDialog||(settingsDialog=new jt.SettingsDialog(fsElementCenter,consoleControls)),settingsDialog.show(a)},this.openSaveStateDialog=function(a){closeAllOverlays(),saveStateDialog||(saveStateDialog=new jt.SaveStateDialog(fsElementCenter,consoleControlsSocket,peripheralControls,stateMedia)),saveStateDialog.show(a)},this.openQuickOptionsDialog=function(){closeAllOverlays(),quickOtionsDialog||(quickOtionsDialog=new jt.QuickOptionsDialog(fsElementCenter,consoleControlsSocket,peripheralControls)),quickOtionsDialog.show()},this.openLoadFileDialog=function(a,b){fileLoader.openFileChooserDialog(jt.FileLoader.OPEN_TYPE.AUTO,a,b,!1)},this.openRecentROMsDialog=function(){closeAllOverlays(),recentROMsDialog||(recentROMsDialog=new jt.RecentROMsDialog(fsElementCenter,this,recentROMs,fileLoader)),recentROMsDialog.show()},this.openCartridgeChooserDialog=function(a,b,c){logoMessageActive&&self.closeLogoMessage(),a||0!==recentROMs.getCatalog().length?this.openRecentROMsDialog():this.openLoadFileDialog(b,c)},this.toggleConsolePanel=function(){isFullscreen&&isLandscape?consolePanelActiveLandscape=!consolePanelActiveLandscape:consolePanelActivePortrait=!consolePanelActivePortrait,consolePanelUpdateForOrientation()},this.getControlReport=function(a){return{label:crtFilter===-2?\"Browser\":crtFilter===-1?\"Auto\":0===crtFilter?\"OFF\":\"Level \"+crtFilter,active:crtFilter>=0}},this.toggleMenuByKey=function(){barMenuActive?hideBarMenu():(closeAllOverlays(),showBarMenu(barMenuSystem,!0))},this.getScreenCapture=function(){if(signalIsOn)return canvas.toDataURL(\"image/png\")},this.saveScreenCapture=function(){var a=this.getScreenCapture();a&&fileDownloader.startDownloadURL(\"Javatari Screen\",a,\"Screen Capture\")},this.displayMetrics=function(a,b){targetWidth===a&&targetHeight===b||(targetWidth=a,targetHeight=b,updateCanvasContentSize(),isFullscreen?this.requestReadjust(!0):updateScale())},this.displayScale=function(a,b){aspectX=a,scaleY=b,updateScale()},this.getMonitor=function(){return monitor},this.showOSD=function(a,b,c){if(osdTimeout&&clearTimeout(osdTimeout),!a)return osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,void(osdShowing=!1);!b&&osdShowing||(osd.innerHTML=a,osd.style.color=c?\"rgb(255, 60, 40)\":\"rgb(0, 255, 0)\"),osd.style.transition=\"none\",osd.style.top=\"15px\",osd.style.opacity=1,osdShowing=!0;var d=canvasOuter.clientWidth-30,e=osd.clientWidth,f=e<d?1:d/e;osd.style.transform=\"scale(\"+f.toFixed(4)+\")\",osdTimeout=setTimeout(hideOSD,OSD_TIME)},this.displayDefaultScale=function(){if(Javatari.SCREEN_DEFAULT_SCALE>0)return Javatari.SCREEN_DEFAULT_SCALE;var a=Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);return a>=640?2:a>=540?1.65:a>=420?1.25:a>=355?1.05:a>=340?1:a>=300?.9:.8},this.setDebugMode=function(a){debugMode=!!a,canvasContext=null},this.crtFilterToggle=function(){var a=crtFilter+1;a>3&&(a=-2),setCRTFilter(a);var b=null===crtFilterEffective?\"browser default\":crtFilterEffective<1?\"OFF\":\"level \"+crtFilterEffective;this.showOSD(\"CRT filter: \"+(crtFilter===-1?\"AUTO (\"+b+\")\":b),!0),Javatari.userPreferences.current.crtFilter!==crtFilter&&(Javatari.userPreferences.current.crtFilter=crtFilter,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save())},this.crtFilterSetDefault=function(){var a=Javatari.userPreferences.current.crtFilter;setCRTFilter(null===a?Javatari.SCREEN_FILTER_MODE:a)},this.crtModeToggle=function(){var a=crtMode+1;a>1&&(a=-1),setCRTMode(a);var b=1===crtModeEffective?\"Phosphor\":\"OFF\";this.showOSD(\"CRT mode: \"+(crtMode===-1?\"AUTO (\"+b+\")\":b),!0)},this.crtModeSetDefault=function(){setCRTMode(Javatari.SCREEN_CRT_MODE)},this.displayToggleFullscreen=function(){if(FULLSCREEN_MODE!==-2)return fullscreenAPIEnterMethod&&!isFullScreenByAPI()?void enterFullScreenByAPI():void this.setFullscreen(!isFullscreen)},this.setFullscreen=function(a){fullscreenAPIEnterMethod?a?enterFullScreenByAPI():exitFullScreenByAPI():setFullscreenState(a)},this.focus=function(){canvas.focus()},this.consolePowerAndUserPauseStateUpdate=function(a,b){isLoading&&(a=!1),powerButton.style.backgroundPosition=\"\"+powerButton.jtBX+\"px \"+mediaButtonBackYOffsets[a?2:1]+\"px\",powerButton.jtMenu[0].label=\"Power \"+(a?\"OFF\":\"ON\"),powerButton.jtMenu[1].disabled=powerButton.jtMenu[9].disabled=!a},this.cartridgeInserted=function(a){consolePanel.cartridgeInserted(a)},this.controlsModeStateUpdate=function(){settingsDialog&&settingsDialog.controlsModeStateUpdate()},this.touchControlsActiveUpdate=function(a,b){touchControlsActive===a&&touchControlsDirBig===b||(touchControlsActive=a,touchControlsDirBig=b,isFullscreen&&(touchControlsActive&&consoleControls.setupTouchControlsIfNeeded(fsElementCenter),this.requestReadjust(!0)))},this.controlStateChanged=function(a,b){consolePanel.controlStateChanged(a,b)},this.controlsStatesRedefined=function(){consolePanel.controlsStatesRedefined()},this.setLoading=function(a){isLoading=a,updateLoading()},this.requestReadjust=function(a){settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),a?readjustAll(!0):(readjustRequestTime=jt.Util.performanceNow(),readjustInterval||(readjustInterval=setInterval(readjustAll,50)))},this.closeAllOverlays=closeAllOverlays,this.closeLogoMessage=function(){if(consolePanel.setLogoMessageActive(!1),fsElement.classList.remove(\"jt-logo-message-active\"),logoMessageActive=!1,afterMessageAction){var a=afterMessageAction;afterMessageAction=null,a()}};var afterMessageAction,atariConsole,consoleControlsSocket,monitor,peripheralControls,fileLoader,fileDownloader,consoleControls,cartridgeSocket,stateMedia,recentROMs,readjustInterval=0,readjustRequestTime=0,readjustScreenSize={w:0,wk:0,h:0,pw:0,l:!1},isFullscreen=!1,isLandscape=!1,isTouchDevice=jt.Util.isTouchDevice(),isMobileDevice=jt.Util.isMobileDevice(),isIOSDevice=jt.Util.isIOSDevice(),isBrowserStandalone=jt.Util.isBrowserStandaloneMode(),browserName=jt.Util.browserInfo().name,fullscreenAPIEnterMethod,fullScreenAPIExitMethod,fullScreenAPIQueryProp,fullScreenAPIExitUserRequested=!1,fullScreenScrollHack=!1,viewportTag,viewPortOriginalTag,viewPortOriginalContent,consolePanel,consolePanelElement,settingsDialog,saveStateDialog,recentROMsDialog,quickOtionsDialog,fsElement,fsElementCenter,canvas,canvasOuter,canvasLoadingIcon,canvasContext,canvasImageRenderingValue,touchControlsActive=!1,touchControlsDirBig=!1,consolePanelActive=!1,consolePanelActiveLandscape=!1,consolePanelActivePortrait=jt.ConsolePanel.shouldStartActive(),buttonsBar,buttonsBarInner,buttonsBarDesiredWidth=-1,barButtonLongTouchTarget,barButtonLongTouchSelectTimeout,barMenu,barMenus=[],barMenuActive,barMenuItemActive,barMenuSystem,barConsoleControlPressed,osd,osdTimeout,osdShowing=!1,cursorType=\"auto\",cursorShowing=!0,cursorHideFrameCountdown=-1,signalIsOn=!1,crtFilter=-2,crtFilterEffective=null,crtMode=-1,crtModeEffective=0,debugMode=!1,isLoading=!1,aspectX=Javatari.SCREEN_DEFAULT_ASPECT,scaleY=1,mousePointerLocked=!1,targetWidth=160,targetHeight=213,logo,logoCenter,logoImage,logoMessage,logoMessageText,logoMessageOK,logoMessageOKText,logoMessageActive=!1,logoLoadingIcon,scrollMessage,scrollMessageActive=!1,powerButton,logoButton,scaleDownButton,scaleUpButton,fullscreenButton,settingsButton,gameSelectButton,gameResetButton,mediaButtonBackYOffsets=[-51,-26,-1],CANVAS_SIZE_FACTOR=Javatari.SCREEN_CANVAS_SIZE,OSD_TIME=3e3,CURSOR_HIDE_FRAMES=180,FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE,BAR_AUTO_HIDE=0===Javatari.SCREEN_CONTROL_BAR,BAR_MENU_MAX_ITEMS=10,NARROW_WIDTH=336,k=jt.DOMKeys,KEY_CTRL_MASK=k.CONTROL,KEY_ALT_MASK=k.ALT,KEY_SHIFT_MASK=k.SHIFT,MENU_CLOSE_KEYS={};\nMENU_CLOSE_KEYS[k.VK_ESCAPE.c]=1,MENU_CLOSE_KEYS[k.VK_CONTEXT.c]=1;var MENU_EXEC_KEYS={};MENU_EXEC_KEYS[k.VK_ENTER.c]=1,MENU_EXEC_KEYS[k.VK_SPACE.c]=1;var MENU_SELECT_KEYS={};MENU_SELECT_KEYS[k.VK_LEFT.c]=-1,MENU_SELECT_KEYS[k.VK_RIGHT.c]=1;var MENU_ITEM_SELECT_KEYS={};MENU_ITEM_SELECT_KEYS[k.VK_UP.c]=-1,MENU_ITEM_SELECT_KEYS[k.VK_DOWN.c]=1,init(),this.eval=function(str){return eval(str)}},jt.RecentROMsDialog=function(a,b,c,d){\"use strict\";function e(){j.style.height=\"\"+(42+33*(l.length+1))+\"px\";for(var a=0;a<11;++a){var b=n[a],c=l[a];b.classList.toggle(\"jt-visible\",a<=l.length),b.classList.toggle(\"jt-toggle\",a<l.length),b.classList.toggle(\"jt-toggle-checked\",a<l.length),b.jtNeedsUIG=a===l.length,b.innerHTML=c?c.n:\"&nbsp;&nbsp;Open ROM File...\"}f()}function f(){for(var a=0;a<n.length;++a)n[a].classList.toggle(\"jt-selected\",a===m)}function g(){j=document.createElement(\"div\"),j.id=\"jt-recent-roms\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"350px\",j.tabIndex=-1,j.appendChild(document.createTextNode(\"Select Cartridge\")),k=document.createElement(\"ul\"),k.style.width=\"85%\";for(var b=0;b<11;++b){var c=document.createElement(\"li\");c.style.textAlign=\"center\",c.innerHTML=\"\",c.jtItem=b,n.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a){a.target.jtItem>=0&&(jt.DOMConsoleControls.hapticFeedbackOnTouch(a),m=a.target.jtItem,f(),setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===q?a():r.indexOf(c.keyCode)>=0?b():s[c.keyCode]&&(m+=s[c.keyCode],m<0?m=0:m>l.length&&(m=l.length),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);l=c.getCatalog().slice(),l.sort(function(a,b){return a.n>b.n});var d=c.lastROMLoadedIndex;d=l.indexOf(l.find(function(a){return a.i===d})),m=d<0||d>=l.length?l.length:d,o=!0,e(),j.classList.add(\"jt-show\"),j.focus();var f=a.clientHeight-jt.ScreenGUI.BAR_HEIGHT-20,h=j.clientHeight,k=h<f?1:f/h;j.style.transform=\"translateY(-\"+(jt.ScreenGUI.BAR_HEIGHT/2|0)+\"px) scale(\"+k.toFixed(4)+\")\"},this.hide=function(a){if(o&&(j.classList.remove(\"jt-show\"),o=!1,Javatari.room.screen.focus(),a))if(m===l.length)b.openLoadFileDialog();else{var e=c.getROM(l[m].i);d.loadROM(e)}};var j,k,l=[],m=0,n=[],o=!1,p=jt.DOMKeys,q=p.VK_ESCAPE.c,r=[p.VK_ENTER.c,p.VK_SPACE.c],s={};s[p.VK_UP.c]=-1,s[p.VK_DOWN.c]=1},jt.SaveStateDialog=function(a,b,c,d){\"use strict\";function e(){l.textContent=\"Select Slot to \"+(m?\"Save\":\"Load\");for(var a=m?\"Save to \":\"Load from \",b=0;b<o.length;++b){var c=o[b];c.innerHTML=a+s[b].d,c.classList.toggle(\"jt-toggle-checked\",d.isSlotUsed(b+1))}f()}function f(){for(var a=0;a<o.length;++a)o[a].classList.toggle(\"jt-selected\",a===n)}function g(){j=document.createElement(\"div\"),j.id=\"jt-savestate\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"280px\",j.style.height=\"404px\",j.tabIndex=-1,l=document.createTextNode(\"Select Slot\"),j.appendChild(l),k=document.createElement(\"ul\"),k.style.width=\"80%\";for(var b=0;b<s.length;++b){var c=document.createElement(\"li\");c.classList.add(\"jt-visible\"),b<s.length-1&&c.classList.add(\"jt-toggle\"),c.style.textAlign=\"center\",c.innerHTML=s[b].d,c.jtSlot=b,c.jtNeedsUIG=!0,o.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a){a.target.jtSlot>=0&&(jt.DOMConsoleControls.hapticFeedbackOnTouch(a),n=a.target.jtSlot,f(),setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===u?a():v.indexOf(c.keyCode)>=0?b():w[c.keyCode]&&(n+=w[c.keyCode],n<0?n=0:n>10&&(n=10),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);m=b,p=!0,e(),j.classList.add(\"jt-show\"),j.focus();var c=a.clientHeight-jt.ScreenGUI.BAR_HEIGHT-20,d=j.clientHeight,f=d<c?1:c/d;j.style.transform=\"translateY(-\"+(jt.ScreenGUI.BAR_HEIGHT/2|0)+\"px) scale(\"+f.toFixed(4)+\")\"},this.hide=function(a){if(p&&(j.classList.remove(\"jt-show\"),p=!1,Javatari.room.screen.focus(),a)){var d=s[n],e=m?d.save:d.load;d.peripheral?c.controlActivated(e):b.controlStateChanged(e,!0)}};var j,k,l,m=!1,n=0,o=[],p=!1,q=jt.ConsoleControls,r=jt.PeripheralControls,s=[{d:\"Slot 1\",load:q.LOAD_STATE_1,save:q.SAVE_STATE_1},{d:\"Slot 2\",load:q.LOAD_STATE_2,save:q.SAVE_STATE_2},{d:\"Slot 3\",load:q.LOAD_STATE_3,save:q.SAVE_STATE_3},{d:\"Slot 4\",load:q.LOAD_STATE_4,save:q.SAVE_STATE_4},{d:\"Slot 5\",load:q.LOAD_STATE_5,save:q.SAVE_STATE_5},{d:\"Slot 6\",load:q.LOAD_STATE_6,save:q.SAVE_STATE_6},{d:\"Slot 7\",load:q.LOAD_STATE_7,save:q.SAVE_STATE_7},{d:\"Slot 8\",load:q.LOAD_STATE_8,save:q.SAVE_STATE_8},{d:\"Slot 9\",load:q.LOAD_STATE_9,save:q.SAVE_STATE_9},{d:\"Slot 10\",load:q.LOAD_STATE_10,save:q.SAVE_STATE_10},{d:\"File...\",load:r.MACHINE_LOAD_STATE_FILE,save:r.MACHINE_SAVE_STATE_FILE,peripheral:!0}],t=jt.DOMKeys,u=t.VK_ESCAPE.c,v=[t.VK_ENTER.c,t.VK_SPACE.c],w={};w[t.VK_UP.c]=-1,w[t.VK_DOWN.c]=1},jt.QuickOptionsDialog=function(a,b,c){\"use strict\";function d(){for(var a=0;a<i.length;++a){var d=i[a],e=d.peripheral?c.getControlReport(d.control):b.getControlReport(d.control);d.value=e.label,d.selected=e.active,k[a].innerHTML=d.value,k[a].classList.toggle(\"jt-selected\",!!d.selected)}}function e(){h=document.createElement(\"div\"),h.id=\"jt-quick-options\",h.tabIndex=-1;var b=jt.ConsoleControls,c=jt.PeripheralControls;i=[{label:\"Paddles Mode\",control:c.PADDLES_TOGGLE_MODE,peripheral:!0},{label:\"No Collisions\",control:b.NO_COLLISIONS},{label:\"&#128190;&nbsp; V-Synch\",control:b.VSYNCH},{label:\"&#128190;&nbsp; CRT Filter\",control:c.SCREEN_CRT_FILTER,peripheral:!0},{label:\"&#128190;&nbsp; Audio Buffer\",control:c.SPEAKER_BUFFER_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Big Directionals\",control:c.TOUCH_TOGGLE_DIR_BIG,peripheral:!0},{label:\"&#128190;&nbsp; TurboFire Speed\",control:c.TURBO_FIRE_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Haptic Feedback\",control:c.HAPTIC_FEEDBACK_TOGGLE_MODE,peripheral:!0}];var d=document.createElement(\"ul\");d.classList.add(\"jt-quick-options-list\");for(var e=0;e<i.length;++e){var g=document.createElement(\"li\"),j=document.createElement(\"div\");j.innerHTML=i[e].label,g.appendChild(j);var l=document.createElement(\"div\");l.classList.add(\"jt-control\"),l.jtControlItem=i[e],g.appendChild(l),d.appendChild(g),k.push(l)}h.appendChild(d),f(),a.appendChild(h)}function f(){jt.Util.onTapOrMouseDownWithBlock(h,function(a){if(a.target.jtControlItem){jt.DOMConsoleControls.hapticFeedbackOnTouch(a);var e=a.target.jtControlItem;e.peripheral?c.controlActivated(e.control,!1,!1):b.controlStateChanged(e.control,!0),d()}else h.focus()}),h.addEventListener(\"keydown\",function(a){return m.indexOf(a.keyCode)>=0&&g.hide(),jt.Util.blockEvent(a)})}var g=this;this.show=function(){if(!h)return e(),setTimeout(g.show,0);d(),j=!0,h.classList.add(\"jt-show\"),h.focus();var b=a.clientHeight-jt.ScreenGUI.BAR_HEIGHT-20,c=h.clientHeight,f=c<b?1:b/c;h.style.transform=\"translateY(-\"+(jt.ScreenGUI.BAR_HEIGHT/2|0)+\"px) scale(\"+f.toFixed(4)+\")\"},this.hide=function(){j&&(Javatari.userPreferences.save(),h.classList.remove(\"jt-show\"),j=!1,Javatari.room.screen.focus())};var h,i,j=!1,k=[],l=jt.DOMKeys,m=[l.VK_ESCAPE.c,l.VK_ENTER.c,l.VK_SPACE.c]},jt.SettingsGUI={WIDTH:600,HEIGHT:450},jt.SettingsGUI.html=function(){return'<div id=\"jt-modal\" tabindex=\"-1\"> <div id=\"jt-menu\"> <div id=\"jt-back\" jt-var=\"true\"> <div class=\"jt-back-arrow\"> </div> </div> <div class=\"jt-caption\"> Help & Settings </div> <div class=\"jt-items\"> <div id=\"jt-menu-console\" class=\"jt-item\" jt-var=\"true\"> CONSOLE </div> <div id=\"jt-menu-ports\" class=\"jt-item\" jt-var=\"true\"> CONTROLLERS </div> <div id=\"jt-menu-general\" class=\"jt-item jt-selected\" jt-var=\"true\"> EMULATION </div> <div id=\"jt-menu-about\" class=\"jt-item\" jt-var=\"true\"> ABOUT </div> <div id=\"jt-menu-selection\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-content\" jt-var=\"true\"> <div id=\"jt-console\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\"> POWER </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F2 </div> </div> <div class=\"jt-desc\"> TV TYPE </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F4 </div> </div> <div class=\"jt-desc\"> P1 Difficulty </div> </div> </div> <div class=\"jt-middle\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F5 </div> </div> <div class=\"jt-desc\"> Load Cartridge File </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F6 </div> </div> <div class=\"jt-desc\"> Load Cartridge URL </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F7 </div> </div> <div class=\"jt-desc\"> Remove Cartridge </div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\"> RESET </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F11 </div> </div> <div class=\"jt-desc\"> SELECT </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F9 </div> </div> <div class=\"jt-desc\"> P2 Difficulty </div> </div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-console-panel\"> <div class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> </div> <div class=\"jt-footer\"> Drag & Drop Files or URLs to load Cartridge ROMs and State Files </div> </div> <div id=\"jt-ports\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> L </div> </div> <div class=\"jt-desc\">Toggle Paddles</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> K </div> </div> <div class=\"jt-desc\">Toggle Swap Sides</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> J </div> </div> <div class=\"jt-desc\">Toggle Gamepads</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> H </div> </div> <div class=\"jt-desc\">Adjust Turbo Fire speed</div> </div> </div> <div class=\"jt-right\"> <div id=\"jt-ports-paddles-mode\" class=\"jt-hotkey jt-link jt-joystick-device\" jt-var=\"true\">Controllers: JOYSTICKS</div> <div id=\"jt-ports-p1-mode\" class=\"jt-hotkey jt-link jt-mouse-device\" jt-var=\"true\">Swap Mode: NORMAL</div> <div id=\"jt-ports-gamepads-mode\" class=\"jt-hotkey jt-link jt-joykeys-device\" jt-var=\"true\">Gamepads: AUTO (swapped)</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-player jt-p1\"> <div id=\"jt-control-p1-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 1 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p1-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p1-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p1-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p1-buttonT\" class=\"jt-key\" jt-var=\"true\" > </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p1-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p1-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p1-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p1-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p1-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div class=\"jt-player jt-p2\"> <div id=\"jt-control-p2-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 2 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p2-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p2-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p2-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p2-buttonT\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p2-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p2-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p2-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p2-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p2-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-ports-revert\" class=\"jt-link\" jt-var=\"true\"> REVERT </div> <div id=\"jt-ports-defaults\" class=\"jt-link\" jt-var=\"true\"> DEFAULTS </div> </div> <div id=\"jt-general\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> C </div> </div> <div class=\"jt-desc\">Collisions</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\">Fry Console</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Q </div> </div> <div class=\"jt-desc\">NTSC/PAL</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> W </div> </div> <div class=\"jt-desc\">V-Synch Modes</div> </div> <div class=\"jt-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> R </div> </div> <div class=\"jt-desc\">CRT Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> T </div> </div> <div class=\"jt-desc\">CRT Filters</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> D </div> </div> <div class=\"jt-desc\">Debug Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> I </div> </div> <div class=\"jt-desc\">Show Info</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> G </div> </div> <div class=\"jt-desc\">Capture Screen</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-desc\">Right-Click Bar Icons: Default Action</div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Load State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Save State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F8 </div> </div> <div class=\"jt-desc\">Save State File</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div>&nbsp;&nbsp;/&nbsp;&nbsp;<div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\">Fast / Slow Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Adjust Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> P </div> </div> <div class=\"jt-desc\">Toggle Pause</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> O </div>&nbsp;/&nbsp;<div class=\"jt-key\"> F </div> </div> <div class=\"jt-desc\">Next Frame</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Enter </div> </div> <div class=\"jt-desc\">Full Screen</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Screen Size / Width</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Viewport Size / Origin</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Backspace </div> </div> <div class=\"jt-desc\">Defaults</div> </div> </div> </div> <div id=\"jt-about\"> <div id=\"jt-logo-version\">version&nbsp'+Javatari.VERSION+'</div> <div class=\"jt-info\">'+atob(\"Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==\")+\"<br>\"+atob(\"PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9qYXZhdGFyaS5vcmciPmh0dHA6Ly9qYXZhdGFyaS5vcmc8L2E+\")+' </div> <div id=\"jt-browserinfo\" jt-var=\"true\"> </div> </div> </div> </div>';\n},jt.SettingsGUI.css=function(){return\"#jt-modal * { outline: none; box-sizing: border-box; } #jt-modal { position: absolute; overflow: hidden; width: \"+jt.SettingsGUI.WIDTH+\"px; height: 0; opacity: 0; visibility: hidden; top: 50%; left: 50%; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; z-index: 50; } #jt-modal.jt-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: \"+jt.SettingsGUI.HEIGHT+'px; visibility: visible; opacity: 1; } #jt-modal .jt-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #jt-modal .jt-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #jt-modal .jt-link:hover { outline: 1px solid; } .jt-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 48%); } .jt-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .jt-hotkey .jt-desc { display: inline-block; line-height: 21px; } .jt-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .jt-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .jt-footer { margin-top: 16px; text-align: center; } #jt-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #jt-menu #jt-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #jt-menu #jt-back:hover { background: rgba(0, 0, 0, .12); } .jt-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .jt-back-arrow:before { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .jt-back-arrow:after { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #jt-menu .jt-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-menu .jt-items { position: relative; width: 84%; height: 39px; margin: 0 auto; font-weight: 600; } #jt-menu .jt-item { float: left; width: 25%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #jt-menu .jt-selected { color: hsl(358, 67%, 46%); } #jt-menu #jt-menu-selection { position: absolute; left: 0; bottom: 0; width: 25%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #jt-content { position: relative; left: 0; width: 3000px; height: 371px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #jt-console, #jt-ports, #jt-general, #jt-about { position: absolute; width: '+jt.SettingsGUI.WIDTH+\"px; height: 100%; box-sizing: border-box; } #jt-console { padding-top: 35px; } #jt-console .jt-hotkey { height: 29px; } #jt-console .jt-command { width: 42px; } #jt-console .jt-left, #jt-console .jt-middle, #jt-console .jt-right { float: left; } #jt-console .jt-left { width: 160px; margin-left: 58px; } #jt-console .jt-middle { width: 204px; } #jt-console .jt-right .jt-command { width: 46px; } #jt-console .jt-console-panel { position: relative; margin: 18px auto 0; box-shadow: rgba(0, 0, 0, 0.6) 2px 2px 4px; } #jt-console .jt-console-panel * { cursor: auto; } #jt-console .jt-footer { margin: 20px auto; } #jt-ports { left: \"+jt.SettingsGUI.WIDTH+'px; padding: 18px 0 0 27px; } #jt-ports > .jt-left { float: left; width: 335px; padding-left: 26px; } #jt-ports > .jt-right { float: left; } #jt-ports .jt-command { width: 91px; } #jt-ports .jt-bottom { width: 546px; text-align: center; } #jt-ports .jt-player { position: absolute; top: 146px; width: 217px; color: rgba(0, 0, 0, .8); } #jt-ports .jt-p1 { left: 47px; } #jt-ports .jt-p2 { right: 47px; } #jt-ports .jt-title { margin-bottom: 09px; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #jt-ports .jt-player .jt-command { display: block; position: relative; float: left; width: 33%; height: 45px; font-size: 13px; text-align: center; } #jt-ports .jt-command.jt-fire1, #jt-ports .jt-command.jt-fire2 { top: 14px; } #jt-ports .jt-command.jt-left, #jt-ports .jt-command.jt-right { top: 27px; } #jt-ports .jt-command.jt-down { float: none; clear: both; margin: 0 auto; } #jt-ports .jt-command.jt-controller { height: 90px; } #jt-ports #jt-control-p1-controller, #jt-ports #jt-control-p2-controller { width: 70px; height: 89px; margin-left: 1px; background: url(\"'+jt.Images.urls.controllers+'\") no-repeat -1px 0; background-size: 73px 179px; } #jt-ports .jt-player .jt-key { min-width: 33px; height: 23px; padding: 5px 6px 4px; margin-top: 2px; cursor: pointer; } #jt-ports .jt-player .jt-key:hover { box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170); } #jt-ports .jt-player .jt-key.jt-redefining { color: white; background-color: rgb(87, 128, 255); border-color: rgb(71, 117, 255); } #jt-ports .jt-player .jt-key.jt-undefined { background-color: rgb(255, 150, 130); border-color: rgb(255, 130, 90); } #jt-ports-defaults, #jt-ports-revert { position: absolute; left: 260px; width: 82px; text-align: center; padding: 3px 0 1px; font-size: 12px; } #jt-ports-defaults { bottom: 47px; } #jt-ports-revert { bottom: 21px; } #jt-general { left: '+2*jt.SettingsGUI.WIDTH+\"px; padding-top: 18px; padding-left: 34px; } #jt-general .jt-left { float: left; width: 245px; } #jt-general .jt-left .jt-command { width: 99px; } #jt-general .jt-right { float: left; } #jt-general .jt-right .jt-command { width: 160px; } #jt-about { left: \"+3*jt.SettingsGUI.WIDTH+'px; font-size: 18px; } #jt-about #jt-logo-version { width: 300px; height: 238px; margin: 26px auto 19px; color: hsl(0, 0%, 98%); padding-top: 200px; box-sizing: border-box; text-align: center; background: black url(\"'+jt.Images.urls.logo+'\") center 18px no-repeat; background-size: 233px 173px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-about .jt-info { line-height: 30px; text-align: center; } #jt-about a { color: rgb(0, 40, 200); text-decoration: none; } #jt-about a:hover { text-decoration: underline; } #jt-about #jt-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } .jt-clear { clear: both; } .jt-divider { clear: both; height: 27px; } .jt-full-divider { clear: both; height: 21px; } #jt-general .jt-full-divider { clear: both; height: 18px; }'},jt.SettingsDialog=function(a,b){\"use strict\";function c(){jt.Util.insertCSS(jt.SettingsGUI.css()),a.insertAdjacentHTML(\"beforeend\",jt.SettingsGUI.html()),j=document.getElementById(\"jt-modal\"),delete jt.SettingsGUI.html,delete jt.SettingsGUI.css,d(),e()}function d(){function a(b,c){c(b);for(var d=b.childNodes,e=0;e<d.length;e++)a(d[e],c)}a(j,function(a){var b=a.id&&a.getAttribute&&a.getAttribute(\"jt-var\");b&&(i[a.id]=a)})}function e(){jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-back\"],i.hide),\nj.addEventListener(\"keydown\",function(a){h(a,!0)}),j.addEventListener(\"keyup\",function(a){h(a,!1)}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-console\"],function(){i.setPage(\"CONSOLE\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-ports\"],function(){i.setPage(\"PORTS\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-general\"],function(){i.setPage(\"GENERAL\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-about\"],function(){i.setPage(\"ABOUT\")});for(var a in r)!function(a){jt.Util.onTapOrMouseDownWithBlock(i[a],function(){k(a)})}(a);jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-paddles-mode\"],function(){b.togglePaddleMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-p1-mode\"],function(){b.toggleP1ControlsMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-gamepads-mode\"],function(){b.toggleGamepadMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-defaults\"],o),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-revert\"],p)}function f(){i[\"jt-browserinfo\"].innerHTML=navigator.userAgent}function g(){var a=b.isPaddleMode(),c=b.isP1ControlsMode();i[\"jt-ports-paddles-mode\"].innerHTML=\"Controllers: \"+(a?\"PADDLES\":\"JOYSTICKS\"),i[\"jt-ports-p1-mode\"].innerHTML=\"Swap Mode: \"+(c?\"SWAPPED\":\"NORMAL\"),i[\"jt-ports-gamepads-mode\"].innerHTML=\"Gamepads: \"+b.getGamepadModeDesc(),a?(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"+ Speed\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"- Speed\"):(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"Up\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"Down\"),i[\"jt-control-p1-label\"].innerHTML=\"PLAYER \"+(c?\"2\":\"1\"),i[\"jt-control-p2-label\"].innerHTML=\"PLAYER \"+(c?\"1\":\"2\");var d=v.joystickKeys;for(var e in r){var f=i[e];if(e===s)f.classList.add(\"jt-redefining\"),f.classList.remove(\"jt-undefined\"),f.innerHTML=\"?\";else{f.classList.remove(\"jt-redefining\");var g=r[e],h=d[g.player][g.control];h.c===jt.DOMKeys.VK_VOID.c?(f.classList.add(\"jt-undefined\"),f.innerHTML=\"\"):(f.classList.remove(\"jt-undefined\"),f.innerHTML=h.n)}}}function h(a,b){var c=jt.DOMKeys.codeForKeyboardEvent(a);return b&&c===w?(n(),jt.Util.blockEvent(a)):void(s&&m(a))}var i=this;this.show=function(a){return j?void(this.position()&&(s=null,this.setPage(a||t),j.classList.add(\"jt-show\"),j.classList.add(\"jt-show\"),u=!0,setTimeout(function(){j.focus()},50))):(c(),void setTimeout(function(){i.show(a)},0))},this.hide=function(){u&&(i.hideLesser(),Javatari.room.screen.focus())},this.hideLesser=function(){Javatari.userPreferences.isDirty&&q(),j.classList.remove(\"jt-show\"),j.classList.remove(\"jt-show\"),u=!1},this.setPage=function(a){t=a;var b={CONSOLE:\"0\",PORTS:\"-600px\",GENERAL:\"-1200px\",ABOUT:\"-1800px\"}[t],c={CONSOLE:\"0\",PORTS:\"25%\",GENERAL:\"50%\",ABOUT:\"75%\"}[t];switch(b&&(i[\"jt-content\"].style.left=b),c&&(i[\"jt-menu-selection\"].style.left=c),i[\"jt-menu-console\"].classList.toggle(\"jt-selected\",\"CONSOLE\"===t),i[\"jt-menu-ports\"].classList.toggle(\"jt-selected\",\"PORTS\"===t),i[\"jt-menu-general\"].classList.toggle(\"jt-selected\",\"GENERAL\"===t),i[\"jt-menu-about\"].classList.toggle(\"jt-selected\",\"ABOUT\"===t),t){case\"ABOUT\":f();break;case\"PORTS\":g()}},this.isVisible=function(){return u},this.position=function(){var b=a.clientWidth,c=a.clientHeight;return b<575||c<400?(this.hide(),!1):(j.style.top=\"\"+((c-jt.SettingsGUI.HEIGHT)/2|0)+\"px\",j.style.left=\"\"+((b-jt.SettingsGUI.WIDTH)/2|0)+\"px\",!0)},this.controlsModeStateUpdate=function(){u&&\"PORTS\"===t&&g()};var j,k=function(a){s=a,g()},l=function(){s=null,g()},m=function(a){if(s){var b=jt.DOMKeys.codeForKeyboardEvent(a),c=jt.DOMKeys.nameForKeyboardEventSingle(a);if(b!==jt.DOMKeys.VK_VOID.c&&c){var d={c:b,n:c},e=r[s],f=v.joystickKeys;for(var g in r){var h=r[g];g!==s&&f[h.player][h.control].c===d.c&&(f[h.player][h.control]=jt.DOMKeys.VK_VOID)}f[e.player][e.control]=d,Javatari.userPreferences.setDirty(),l()}}},n=function(){s?l():i.hide()},o=function(){Javatari.userPreferences.setDefaultJoystickKeys(),l()},p=function(){Javatari.userPreferences.load(),l()},q=function(){Javatari.userPreferences.save(),b.applyPreferences()},r={\"jt-control-p1-button\":{player:0,control:\"button\"},\"jt-control-p1-buttonT\":{player:0,control:\"buttonT\"},\"jt-control-p1-up\":{player:0,control:\"up\"},\"jt-control-p1-left\":{player:0,control:\"left\"},\"jt-control-p1-right\":{player:0,control:\"right\"},\"jt-control-p1-down\":{player:0,control:\"down\"},\"jt-control-p2-button\":{player:1,control:\"button\"},\"jt-control-p2-buttonT\":{player:1,control:\"buttonT\"},\"jt-control-p2-up\":{player:1,control:\"up\"},\"jt-control-p2-left\":{player:1,control:\"left\"},\"jt-control-p2-right\":{player:1,control:\"right\"},\"jt-control-p2-down\":{player:1,control:\"down\"}},s=null,t=\"CONSOLE\",u=!1,v=Javatari.userPreferences.current,w=jt.DOMKeys.VK_ESCAPE.c},jt.WebAudioSpeaker=function(a){\"use strict\";function b(){return jt.Util.isMobileDevice()?\"CHROME\"!==jt.Util.browserInfo().name||jt.Util.isIOSDevice()?3:5:2}function c(){return\"SAFARI\"===jt.Util.browserInfo().name||jt.Util.isIOSDevice()?b():0}function d(){!m||k.state&&\"suspended\"!==k.state||(a.addEventListener(\"touchend\",function b(){a.removeEventListener(\"touchend\",b,!0);var c=k.createBufferSource();c.buffer=k.createBuffer(1,1,22050),c.connect(k.destination),c.start(0),jt.Util.log(\"Audio Context unlocked, \"+k.state)},!0),jt.Util.log(\"Audio Context unlock on touch registered\"))}function e(){if(m){n.length=j.length,o.length=j.length;for(var a=0;a<j.length;a++)n[a]=j[a].getSampleRate()/k.sampleRate,o[a]=0,j[a].setAudioMonitorBufferSize(n[a]*l|0)}}function f(a){for(var b=a.outputBuffer.getChannelData(0),c=b.length,d=c-1;d>=0;d-=1)b[d]=0;if(0!==j.length)for(var e=j.length-1;e>=0;e-=1){for(var f=n[e],g=j[e].retrieveSamples(c*f+o[e]|0,r),h=g.buffer,i=g.bufferSize,k=g.start+o[e],l=0;l<c;)b[l]+=h[0|k],l+=1,k+=f,k>=i&&(k-=i);o[e]=k-(0|k)}}this.connect=function(a){a.connectMonitor(this)},this.connectPeripherals=function(a){g=a},this.connectAudioSignal=function(a){j.indexOf(a)>=0||(jt.Util.arrayAdd(j,a),e())},this.disconnectAudioSignal=function(a){j.indexOf(a)<0||(jt.Util.arrayRemoveAllElement(j,a),e())},this.powerOn=function(){h(),m&&(d(),this.unpause())},this.powerOff=function(){this.pause(),k&&k.close(),k=m=void 0},this.mute=function(){r=!0},this.unMute=function(){r=!1},this.pause=function(){m&&m.disconnect()},this.unpause=function(){m&&m.connect(k.destination)},this.toggleBufferBaseSize=function(){return k?(q=(q+2)%8-1,this.pause(),i(),this.unpause(),g.showOSD(\"Audio Buffer size: \"+(q===-1?\"Auto (\"+l+\")\":0===q?\"Browser (\"+l+\")\":l),!0),p.audioBufferBase=q,void Javatari.userPreferences.setDirty()):g.showOSD(\"Audio is DISABLED\",!0,!0)},this.getControlReport=function(a){return{label:q===-2?\"OFF\":q===-1?\"Auto\":0===q?\"Browser\":l,active:q>0}};var g,h=function(){if(q===-2||0===Javatari.AUDIO_MONITOR_BUFFER_SIZE)return void jt.Util.warning(\"Audio disabled in configuration\");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error(\"WebAudio API not supported by the browser\");k=new a,jt.Util.log(\"Speaker AudioContext created. Sample rate: \"+k.sampleRate+(k.state?\", \"+k.state:\"\")),i()}catch(a){jt.Util.error(\"Could not create AudioContext. Audio DISABLED!\\n\"+a)}},i=function(){try{var a=q===-1?b():0===q?c():q,d=Javatari.AUDIO_MONITOR_BUFFER_SIZE>0?Javatari.AUDIO_MONITOR_BUFFER_SIZE:a>0?jt.Util.exp2(0|jt.Util.log2((k.sampleRate+14e3)/22050))*jt.Util.exp2(a-1)*256:0;m=k.createScriptProcessor(d,1,1),m.onaudioprocess=f,l=m.bufferSize,e(),jt.Util.log(\"Audio Processor buffer size: \"+m.bufferSize)}catch(a){jt.Util.error(\"Could not create ScriptProcessorNode. Audio DISABLED!\\n\"+a)}},j=[];this.signals=j;\nvar k,l,m,n=[],o=[],p=Javatari.userPreferences.current,q=Javatari.AUDIO_MONITOR_BUFFER_BASE===-3?p.audioBufferBase:Javatari.AUDIO_MONITOR_BUFFER_BASE,r=!1},jt.LocalStorageSaveStateMedia=function(){\"use strict\";this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(b){a=b},this.isSlotUsed=function(a){return void 0!==localStorage[\"javatarisave\"+a]},this.saveState=function(a,c){var e=d(c);return e&&b(\"save\"+a,e)},this.loadState=function(a){var b=c(\"save\"+a);return e(b)},this.saveStateFile=function(b,c){var e=d(c);e&&a.startDownloadBinary((b||\"Javatari SaveState\")+h,e,\"System State file\")},this.loadStateFile=function(a){return e(a)},this.saveResource=function(a,c){try{var d=c&&JSON.stringify(c);return b(\"res\"+a,d)}catch(a){}},this.loadResource=function(a){try{var b=c(\"res\"+a);return b&&JSON.parse(b)}catch(a){}};var a,b=function(a,b){try{return localStorage[\"javatari\"+a]=b,!0}catch(a){return jt.Util.error(a),!1}},c=function(a){try{return localStorage[\"javatari\"+a]}catch(a){jt.Util.warning(a)}},d=function(a){try{return f+JSON.stringify(a)}catch(a){jt.Util.error(a)}},e=function(a){try{var b;if(b=\"string\"==typeof a?a.substr(0,f.length):jt.Util.int8BitArrayToByteString(a,0,f.length),b!==f&&b!==g)return;var c;return c=\"string\"==typeof a?a.slice(f.length):jt.Util.int8BitArrayToByteString(a,f.length),c&&JSON.parse(c)}catch(a){jt.Util.error(a)}},f=String.fromCharCode(0,0)+\"javataristate!\",g=\"javatarijsstate!\",h=\".jst\"},jt.PeripheralControls={SCREEN_ASPECT_PLUS:1,SCREEN_ASPECT_MINUS:2,SCREEN_SCALE_PLUS:3,SCREEN_SCALE_MINUS:4,VIEWPORT_ORIGIN_PLUS:5,VIEWPORT_ORIGIN_MINUS:6,VIEWPORT_SIZE_PLUS:7,VIEWPORT_SIZE_MINUS:8,SCREEN_FULLSCREEN:10,SCREEN_CRT_FILTER:11,SCREEN_CRT_MODE:12,SCREEN_TOGGLE_MENU:13,SCREEN_OPEN_HELP:14,SCREEN_OPEN_ABOUT:15,SCREEN_OPEN_SETTINGS:16,SCREEN_OPEN_QUICK_OPTIONS:17,SCREEN_DEFAULTS:18,SCREEN_CONSOLE_PANEL_TOGGLE:19,SPEAKER_BUFFER_TOGGLE:20,MACHINE_POWER_TOGGLE:102,MACHINE_POWER_FRY:103,MACHINE_LOAD_STATE_FILE:104,MACHINE_SAVE_STATE_FILE:105,MACHINE_LOAD_STATE_MENU:106,MACHINE_SAVE_STATE_MENU:107,P1_CONTROLS_TOGGLE:201,JOYSTICKS_TOGGLE_MODE:202,PADDLES_TOGGLE_MODE:203,TOUCH_TOGGLE_MODE:204,TOUCH_TOGGLE_DIR_BIG:205,TURBO_FIRE_TOGGLE:206,HAPTIC_FEEDBACK_TOGGLE_MODE:207,CAPTURE_SCREEN:304,CARTRIDGE_LOAD_RECENT:40,CARTRIDGE_LOAD_FILE:41,CARTRIDGE_LOAD_URL:42,CARTRIDGE_REMOVE:43,CARTRIDGE_LOAD_DATA_FILE:44,CARTRIDGE_SAVE_DATA_FILE:45,AUTO_LOAD_FILE:46,AUTO_LOAD_URL:47},jt.DOMPeripheralControls=function(){\"use strict\";function a(){k()}var b=this;this.connect=function(a,b){c=a,i=b},this.connectPeripherals=function(a,b,c,i){d=a,f=b,e=a.getMonitor(),g=c,h=i},this.getControlReport=function(a){switch(a){case l.PADDLES_TOGGLE_MODE:case l.TURBO_FIRE_TOGGLE:case l.TOUCH_TOGGLE_DIR_BIG:case l.HAPTIC_FEEDBACK_TOGGLE_MODE:return g.getControlReport(a);case l.SCREEN_CRT_FILTER:return d.getControlReport(a);case l.SPEAKER_BUFFER_TOGGLE:return f.getControlReport(a)}return{label:\"Unknown\",active:!1}},this.processKey=function(a,c){if(!c)return!1;var d=m[a]||m[a&n];return!!d&&(b.controlActivated(d,!!(a&o),!1),!0)},this.controlActivated=function(a,b,k){switch(a){case l.MACHINE_POWER_TOGGLE:c.controlStateChanged(jt.ConsoleControls.POWER,!0);break;case l.MACHINE_POWER_FRY:c.controlStateChanged(jt.ConsoleControls.POWER_FRY,!0);break;case l.MACHINE_LOAD_STATE_FILE:j()||h.openFileChooserDialog(p.STATE,!1,!1,!1);break;case l.MACHINE_SAVE_STATE_FILE:c.controlStateChanged(jt.ConsoleControls.SAVE_STATE_FILE,!0);break;case l.MACHINE_LOAD_STATE_MENU:d.openSaveStateDialog(!1);break;case l.MACHINE_SAVE_STATE_MENU:d.openSaveStateDialog(!0);break;case l.CARTRIDGE_LOAD_RECENT:j()||d.openCartridgeChooserDialog(!1,b,k);break;case l.CARTRIDGE_LOAD_FILE:j()||h.openFileChooserDialog(p.ROM,b,k,!1);break;case l.CARTRIDGE_LOAD_URL:j()||h.openURLChooserDialog(p.ROM,b,k);break;case l.CARTRIDGE_REMOVE:j()||i.insert(null,!1);break;case l.CARTRIDGE_LOAD_DATA_FILE:break;case l.CARTRIDGE_SAVE_DATA_FILE:break;case l.AUTO_LOAD_FILE:j()||h.openFileChooserDialog(p.AUTO,b,k,!1);break;case l.AUTO_LOAD_URL:j()||h.openURLChooserDialog(p.AUTO,b,k,!1);break;case l.SCREEN_CRT_MODE:e.crtModeToggle();break;case l.SCREEN_CRT_FILTER:e.crtFilterToggle();break;case l.SCREEN_FULLSCREEN:e.fullscreenToggle();break;case l.SCREEN_DEFAULTS:c.setDefaults(),e.setDefaults(),e.showOSD(\"Default Settings\",!0);break;case l.SCREEN_TOGGLE_MENU:d.toggleMenuByKey();break;case l.SCREEN_OPEN_HELP:d.openHelp();break;case l.SCREEN_OPEN_ABOUT:d.openAbout();break;case l.SCREEN_OPEN_SETTINGS:if(b)return this.controlActivated(l.SCREEN_DEFAULTS);d.openSettings();break;case l.SCREEN_OPEN_QUICK_OPTIONS:d.openQuickOptionsDialog();break;case l.SCREEN_CONSOLE_PANEL_TOGGLE:d.toggleConsolePanel();break;case l.P1_CONTROLS_TOGGLE:g.toggleP1ControlsMode();break;case l.JOYSTICKS_TOGGLE_MODE:g.toggleGamepadMode();break;case l.PADDLES_TOGGLE_MODE:g.togglePaddleMode();break;case l.TOUCH_TOGGLE_MODE:g.toggleTouchControlsMode();break;case l.TOUCH_TOGGLE_DIR_BIG:g.toggleTouchDirBig();break;case l.TURBO_FIRE_TOGGLE:g.toggleTurboFireSpeed();break;case l.HAPTIC_FEEDBACK_TOGGLE_MODE:g.toggleHapticFeedback();break;case l.CAPTURE_SCREEN:d.saveScreenCapture();break;case l.SPEAKER_BUFFER_TOGGLE:f.toggleBufferBaseSize();break;case l.VIEWPORT_ORIGIN_MINUS:e.viewportOriginDecrease();break;case l.VIEWPORT_ORIGIN_PLUS:e.viewportOriginIncrease()}if(!N)switch(a){case l.SCREEN_ASPECT_MINUS:e.displayAspectDecrease();break;case l.SCREEN_ASPECT_PLUS:e.displayAspectIncrease();break;case l.SCREEN_SCALE_MINUS:e.displayScaleDecrease();break;case l.SCREEN_SCALE_PLUS:e.displayScaleIncrease();break;case l.VIEWPORT_SIZE_MINUS:e.viewportSizeDecrease();break;case l.VIEWPORT_SIZE_PLUS:e.viewportSizeIncrease()}};var c,d,e,f,g,h,i,j=function(){return!!Javatari.CARTRIDGE_CHANGE_DISABLED&&(e.showOSD(\"Cartridge change is disabled!\",!0,!0),!0)},k=function(){var a=jt.DOMKeys;m[y]=l.CARTRIDGE_LOAD_RECENT,m[y|a.ALT]=l.CARTRIDGE_LOAD_RECENT,m[z]=l.AUTO_LOAD_URL,m[z|a.ALT]=l.AUTO_LOAD_URL,m[A]=l.CARTRIDGE_REMOVE,m[A|a.ALT]=l.CARTRIDGE_REMOVE,m[M]=l.MACHINE_SAVE_STATE_FILE,m[M|a.ALT]=l.MACHINE_SAVE_STATE_FILE,m[B|a.ALT]=l.P1_CONTROLS_TOGGLE,m[D|a.ALT]=l.PADDLES_TOGGLE_MODE,m[C|a.ALT]=l.JOYSTICKS_TOGGLE_MODE,m[E|a.ALT]=l.TOUCH_TOGGLE_MODE,m[F|a.ALT]=l.TURBO_FIRE_TOGGLE,m[H|a.ALT]=l.SCREEN_CRT_FILTER,m[G|a.ALT]=l.SCREEN_CRT_MODE,m[I|a.ALT]=l.SCREEN_OPEN_SETTINGS,m[J|a.ALT]=l.SCREEN_OPEN_QUICK_OPTIONS,m[K|a.ALT]=l.SCREEN_CONSOLE_PANEL_TOGGLE,m[L|a.ALT]=l.SCREEN_FULLSCREEN,m[r|a.CONTROL|a.ALT]=l.SCREEN_SCALE_MINUS,m[t|a.CONTROL|a.ALT]=l.SCREEN_SCALE_PLUS,m[q|a.CONTROL|a.ALT]=l.SCREEN_ASPECT_MINUS,m[s|a.CONTROL|a.ALT]=l.SCREEN_ASPECT_PLUS,m[r|a.SHIFT|a.CONTROL]=l.VIEWPORT_ORIGIN_MINUS,m[t|a.SHIFT|a.CONTROL]=l.VIEWPORT_ORIGIN_PLUS,m[q|a.SHIFT|a.CONTROL]=l.VIEWPORT_SIZE_MINUS,m[s|a.SHIFT|a.CONTROL]=l.VIEWPORT_SIZE_PLUS,m[u]=l.SCREEN_TOGGLE_MENU,m[v]=l.SCREEN_DEFAULTS,m[v|a.ALT]=l.SCREEN_DEFAULTS,m[w|a.ALT]=l.CAPTURE_SCREEN,m[x|a.ALT]=l.SPEAKER_BUFFER_TOGGLE},l=jt.PeripheralControls,m={},n=~jt.DOMKeys.SHIFT,o=jt.DOMKeys.SHIFT,p=jt.FileLoader.OPEN_TYPE,q=jt.DOMKeys.VK_LEFT.c,r=jt.DOMKeys.VK_UP.c,s=jt.DOMKeys.VK_RIGHT.c,t=jt.DOMKeys.VK_DOWN.c,u=jt.DOMKeys.VK_CONTEXT.c,v=jt.DOMKeys.VK_BACKSPACE.c,w=jt.DOMKeys.VK_X.c,x=jt.DOMKeys.VK_A.c,y=jt.DOMKeys.VK_F5.c,z=jt.DOMKeys.VK_F6.c,A=jt.DOMKeys.VK_F7.c,B=jt.DOMKeys.VK_K.c,C=jt.DOMKeys.VK_J.c,D=jt.DOMKeys.VK_L.c,E=jt.DOMKeys.VK_N.c,F=jt.DOMKeys.VK_H.c,G=jt.DOMKeys.VK_R.c,H=jt.DOMKeys.VK_T.c,I=jt.DOMKeys.VK_Y.c,J=jt.DOMKeys.VK_U.c,K=jt.DOMKeys.VK_S.c,L=jt.DOMKeys.VK_ENTER.c,M=(jt.DOMKeys.VK_F1.c,jt.DOMKeys.VK_F8.c),N=Javatari.SCREEN_RESIZE_DISABLED;a()},jt.Room=function(a,b){\"use strict\";function c(){f(),g()}function d(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function e(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0));\n}function f(){h.peripheralControls=new jt.DOMPeripheralControls,h.consoleControls=new jt.DOMConsoleControls(h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia,h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h.recentROMs),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getConsoleControlsSocket(),h.console.getCartridgeSocket())}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){jt.Clock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),d(function(){h.setLoading(!1),h.screen.start(a||e)})})},this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.isLoading=!1;var i;c()},Javatari.userPreferences={},Javatari.userPreferences.currentVersion=1,Javatari.userPreferences.compatibleVersions=new Set([1]),Javatari.userPreferences.defaults=function(){\"use strict\";var a=jt.DOMKeys;return{joystickKeys:[{left:a.VK_LEFT,up:a.VK_UP,right:a.VK_RIGHT,down:a.VK_DOWN,button:a.VK_SPACE,buttonT:a.VK_DELETE},{left:a.VK_F,up:a.VK_T,right:a.VK_H,down:a.VK_G,button:a.VK_A,buttonT:a.VK_PERIOD}],joystickGamepads:[{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3},{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3}],touch:{directionalBig:!1},hapticFeedback:!0,turboFireSpeed:6,vSynch:null,crtFilter:null,audioBufferBase:-1}},Javatari.userPreferences.load=function(){var a;try{a=JSON.parse(localStorage.javatari4prefs||\"{}\"),a.version&&delete a.version}catch(a){}if(!a||!Javatari.userPreferences.compatibleVersions.has(a.prefsVersion)){a={}}var b=Javatari.userPreferences.defaults();for(var c in b)void 0===a[c]&&(a[c]=b[c]);a.prefsVersion=Javatari.userPreferences.currentVersion,Javatari.userPreferences.current||(Javatari.userPreferences.current={});var d=Javatari.userPreferences.current;for(c in a)d[c]=a[c];Javatari.userPreferences.isDirty=!1},Javatari.userPreferences.setDefaultJoystickKeys=function(){Javatari.userPreferences.current.joystickKeys=Javatari.userPreferences.defaults().joystickKeys,Javatari.userPreferences.setDirty()},Javatari.userPreferences.save=function(){if(Javatari.userPreferences.isDirty)try{Javatari.userPreferences.current.javatariVersion=Javatari.VERSION,localStorage.javatari4prefs=JSON.stringify(Javatari.userPreferences.current),Javatari.userPreferences.isDirty=!1,jt.Util.log(\"Preferences saved!\")}catch(a){}},Javatari.userPreferences.setDirty=function(){Javatari.userPreferences.isDirty=!0},jt.Images.embedded=!0,jt.Images.urls.logo=\"data:image/png;base64,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\",\njt.Images.urls.loading=\"data:image/gif;base64,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\",jt.Images.urls.mouseCursor=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABL0lEQVRYw+3VP0oDQRTH8U8k+AcFFRUFERGLiFjEA1jZTo6RG6T3ArmFR9j0WlpaWBiwsNNyiwgW0Vg4CUPELhMt9guPffumeG9nf/MbvlnEYVmWo3a7PcIO1s2R3aT5KQ6wMo/GC/G5nNTWsYr6PHdgE+fJLjRxhFqMbNSxFr96K6nvYxhr7zE+Y8yUWghhNH5pNBr6/f5ksdfrXeA1xiCbBoqiUBSF6RwN7GIptwh/4wR7UyKduQZ0Op1JIc2xHTVSzzpAt9v9sdBqtczTB/6Mfz/A2AOGOYe4DCGMUqI33OAKl1MmNVsjwhmaIYTrxIBu8YA73OMZb7kG2MFhPPPH2ECJJzzG5iU+ch3DMvnfL/HcDxILztZcctPVo9stxXyYCPBDRUVFRUVFRUa+AB+1YCivg1lPAAAAAElFTkSuQmCC\",jt.Images.urls.panel=\"data:image/jpeg;base64,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\",\njt.Images.urls.panelSprites=\"data:image/jpeg;base64,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\",\njt.Images.urls.controllers=\"data:image/jpeg;base64,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\",\njt.Images.urls.iconSprites=\"data:image/png;base64,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\",\njt.Configurator={applyConfig:function(){function a(){for(var a,b=(window.location.search||\"\").split(\"+\").join(\" \"),c=/[?&]?([^=]+)=([^&]*)/g,d={};a=c.exec(b);){var e=decodeURIComponent(a[1]).trim().toUpperCase();e=jt.Configurator.abbreviations[e]||e,d[e]=decodeURIComponent(a[2]).trim()}return d}function b(){Javatari.AUTO_POWER_ON_DELAY|=0,Javatari.CARTRIDGE_CHANGE_DISABLED=Javatari.CARTRIDGE_CHANGE_DISABLED===!0||\"true\"==Javatari.CARTRIDGE_CHANGE_DISABLED,Javatari.SCREEN_RESIZE_DISABLED=Javatari.SCREEN_RESIZE_DISABLED===!0||\"true\"==Javatari.SCREEN_RESIZE_DISABLED,Javatari.SCREEN_FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE|=0,Javatari.SCREEN_FILTER_MODE|=0,Javatari.SCREEN_CRT_MODE|=0,Javatari.SCREEN_DEFAULT_SCALE=parseFloat(Javatari.SCREEN_DEFAULT_SCALE),Javatari.SCREEN_DEFAULT_ASPECT=parseFloat(Javatari.SCREEN_DEFAULT_ASPECT),Javatari.SCREEN_CANVAS_SIZE=0|Javatari.SCREEN_CANVAS_SIZE,Javatari.SCREEN_CONTROL_BAR|=0,Javatari.SCREEN_FORCE_HOST_NATIVE_FPS|=0,Javatari.SCREEN_VSYNCH_MODE|=0,Javatari.AUDIO_MONITOR_BUFFER_BASE|=0,Javatari.AUDIO_MONITOR_BUFFER_SIZE|=0,Javatari.AUDIO_SIGNAL_BUFFER_RATIO=parseFloat(Javatari.AUDIO_SIGNAL_BUFFER_RATIO),Javatari.AUDIO_SIGNAL_ADD_FRAMES|=0}var c={};Javatari.ALLOW_URL_PARAMETERS&&(c=a(),c.PRESETS&&(this.applyParam(\"PRESETS\",c.PRESETS),delete c.PRESETS)),c.RESET&&this.applyReset(),this.applyPresets(Javatari.PRESETS);for(var d in c)this.applyParam(d,c[d]);b()},applyPresets:function(a){for(var b=(a||\"\").trim().toUpperCase().split(\",\"),c=0;c<b.length;c++)this.applyPreset(b[c].trim())},applyPreset:function(a){if(a){var b=Javatari.PRESETS_CONFIG[a];if(b){jt.Util.log(\"Applying preset: \"+a);for(var c in b){var d=c.trim().toUpperCase();\"_\"!==d[0]?this.applyParam(d,b[c]):\"_INCLUDE\"===d&&this.applyPresets(b[c])}}else jt.Util.warning('Preset \"'+a+'\" not found, skipping...')}},applyParam:function(a,b){if(a.indexOf(\".\")<0)Javatari[a]=b;else{for(var c=Javatari,d=a.split(\".\"),e=0;e<d.length-1;++e)c=c[d[e]];c[d[d.length-1]]=b}},mediaURLSpecs:function(){var a=jt.FileLoader.OPEN_TYPE;return[Javatari.AUTODETECT_URL&&{url:Javatari.AUTODETECT_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO,0,!0,!1)}},Javatari.CARTRIDGE_URL&&{url:Javatari.CARTRIDGE_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,0,!0,!1,Javatari.CARTRIDGE_FORMAT)}}]},applyReset:function(){jt.Util.warning(\"Removing all data saved on this client\");for(var a in localStorage)0===a.indexOf(\"javatari\")&&delete localStorage[a]},abbreviations:{P:\"PRESETS\",PRESET:\"PRESETS\",ROM:\"CARTRIDGE_URL\",CART:\"CARTRIDGE_URL\",FORMAT:\"CARTRIDGE_FORMAT\",ROM_FORMAT:\"CARTRIDGE_FORMAT\",CART_FORMAT:\"CARTRIDGE_FORMAT\",ANY:\"AUTODETECT_URL\",AUTO:\"AUTODETECT_URL\",AUTODETECT:\"AUTODETECT_URL\",STATE:\"STATE_URL\",SAVESTATE:\"STATE_URL\",VERSION:\"VERSION_CHANGE_ATTEMPTED\"}},Javatari.start=function(a){\"use strict\";if(delete Javatari.start,delete Javatari.preLoadImagesAndStart,Javatari.userPreferences.load(),!Javatari.screenElement&&(Javatari.screenElement=document.getElementById(Javatari.SCREEN_ELEMENT_ID),!Javatari.screenElement))throw new Error('Javatari cannot be started. HTML document is missing screen element with id \"'+Javatari.SCREEN_ELEMENT_ID+'\"');if(jt.Configurator.applyConfig(),void 0===a&&(a=Javatari.AUTO_POWER_ON_DELAY>=0),Javatari.room=new jt.Room(Javatari.screenElement,a),Javatari.room.powerOn(),jt.Util.log(\"version \"+Javatari.VERSION+\" started\"),jt.CartridgeDatabase.uncompress(),Javatari.STATE_URL)new jt.MultiDownloader([{url:Javatari.STATE_URL}],function(a){Javatari.room.start(function(){Javatari.room.fileLoader.loadFromContent(a[0].url,a[0].content,jt.FileLoader.OPEN_TYPE.STATE,0,!1)})}).start();else{var b=jt.Configurator.mediaURLSpecs();new jt.MultiDownloader(b,function(){Javatari.room.start()}).start()}Javatari.shutdown=function(){Javatari.room&&Javatari.room.powerOff(),jt.Util.log(\"shutdown\")}},Javatari.preLoadImagesAndStart=function(){function a(a){Javatari.start&&Javatari.AUTO_START&&(a||b&&0===c)&&Javatari.start()}var b=!1,c=jt.Images.embedded?0:jt.Images.count;if(document.addEventListener(\"DOMContentLoaded\",function(){b=!0,a(!1)}),c>0)for(var d in jt.Images.urls){var e=new Image;e.src=jt.Images.urls[d],e.onload=function(){c--,a(!1)}}window.addEventListener(\"load\",function(){a(!0)})},window.applicationCache&&(window.applicationCache.status===window.applicationCache.UPDATEREADY?onUpdateReady():window.applicationCache.addEventListener(\"updateready\",onUpdateReady)),Javatari.VERSION=\"4.0.1\",Javatari.preLoadImagesAndStart();"
  },
  {
    "path": "release/stable/4.0/standalone/cache.manifest",
    "content": "CACHE MANIFEST\n# Version 4.0.001\n# Stable\n\nCACHE:\nmanifest.webapp\nimages/logo-icon192.png\nimages/logo-icon512.png\n\nNETWORK:\n*\n\n"
  },
  {
    "path": "release/stable/4.0/standalone/index.html",
    "content": "<!DOCTYPE html>\n<html manifest=\"cache.manifest\">\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width = device-width, user-scalable = yes\">\n\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"data:image/png;base64,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\">\n\n        <meta name=\"mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"theme-color\" content=\"#363636\">\n        <link rel=\"manifest\" href=\"manifest.webapp\">\n\n        <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n        <link rel=\"apple-touch-icon\" sizes=\"512x512\" href=\"images/logo-icon512.png\">\n\n        <meta property=\"og:type\"         content=\"website\">\n        <meta property=\"og:url\"          content=\"http://javatari.org\">\n        <meta property=\"og:title\"        content=\"Javatari - The online Atari 2600 emulator\">\n        <meta property=\"og:description\"  content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta property=\"og:image\"        content=\"http://javatari.org/images/javatari-logo-large.png\">\n\n        <meta name=\"twitter:card\"        content=\"summary\">\n        <meta name=\"twitter:site\"        content=\"@ppeccin\">\n        <meta name=\"twitter:creator\"     content=\"@ppeccin\">\n        <meta name=\"twitter:url\"         content=\"http://javatari.org\">\n        <meta name=\"twitter:title\"       content=\"Javatari - The online Atari 2600 emulator\">\n        <meta name=\"twitter:description\" content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta name=\"twitter:image\"       content=\"http://javatari.org/images/javatari-logo-large.png\">\n\n        <script>\n\n            JavatariFullScreenSetup = { apply: function fullScreenSetup() { /* Setup Basic full-screen CSS*/ if (!this.cssApplied) { var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = this.css; document.head.appendChild(style); this.cssApplied = true; } /* Apply Standalone mode full-screen basic styles to html and body immediately if needed*/ document.documentElement.classList.toggle(\"jt-full-screen\", this.shouldStartInFullScreen()); }, shouldStartInFullScreen: function () { return window.Javatari ? Javatari.SCREEN_FULLSCREEN_MODE === 1 || (Javatari.SCREEN_FULLSCREEN_MODE === -1 && this.isBrowserStandaloneMode()) : this.isBrowserStandaloneMode(); }, isBrowserStandaloneMode: function () { return navigator.standalone || window.matchMedia(\"(display-mode: standalone)\").matches; }, css: '' + 'html.jt-full-screen, html.jt-full-screen body {' + '   background: black;' + '}' + 'html.jt-full-screen .jt-full-screen-hidden {' + '   display: none;' + '}' + 'html:not(.jt-full-screen) .jt-full-screen-only {' + '   display: none;' + '}'}; JavatariFullScreenSetup.apply();\n\n            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q = i[r].q ||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m = s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window, document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-67920324-1', 'auto'); ga('send', 'pageview');\n\n            function donate() { alert(\"To support the project, please send Paypal donations to:\\n\\nppeccin@gmail.com\\n\\nOr contact via email. Many thanks!\\n\") }\n\n        </script>\n\n        <style>\n            html, body {\n                position: relative;\n                margin: 0;\n                padding: 0;\n                font: normal 16px sans-serif;\n                color: hsl(0, 0%, 10%);\n                -webkit-user-select: none;\n                -moz-user-select: none;\n                -ms-user-select: none;\n                user-select: none;\n                -webkit-touch-callout: none;\n                touch-callout: none;\n                -webkit-tap-highlight-color: transparent;\n                tap-highlight-color: transparent;\n                -webkit-text-size-adjust: none;\n                -moz-text-size-adjust: none;\n                text-size-adjust: none;\n            }\n            html {\n                height: 100%;\n                background: hsl(0, 0%, 88%);\n            }\n            body {\n                min-height: 100%;\n                background: hsl(0, 0%, 95%);\n            }\n            .container {\n                max-width: 660px;\n                margin: 0 auto;\n                padding: 0 10px;\n            }\n            @media only screen and (orientation: landscape) and (max-device-width: 767px) {\n                .container { max-width: 75%; }\n            }\n            #topbar {\n                height: 51px;\n                color: hsl(0, 0%, 95%);\n                overflow: hidden;\n                background: hsl(0, 0%, 21%);\n                box-shadow: 0 0 7px hsl(0, 0%, 20%);\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #logo {\n                float: left;\n                width: 182px;\n                height: 32px;\n                margin: 10px 4px 0 0;\n                background-size: 182px 32px;\n                background-repeat: no-repeat;\n            }\n            #desc span {\n                float: right;\n                margin: 23px 10px 0 0;\n                font-size: 15px;\n                line-height: 15px;\n                font-weight: 600;\n            }\n            .social {\n                display: block;\n                float: right;\n                width: 26px;\n                height: 26px;\n                margin: 13px 0 0 8px;\n                background-size: 26px 26px;\n                background-repeat: no-repeat;\n            }\n            @media only screen and (max-width: 440px) {\n                #desc { display: none; }\n            }\n            #javatari {\n                margin-top: 20px;\n                text-align: center;\n            }\n            #javatari-screen {\n                box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\n            }\n            .info {\n                display: none;\n                height: 38px;\n                padding-top: 14px;\n                font-size: 18px;\n                line-height: 25px;\n                text-align: center;\n            }\n            @media only screen and (max-width: 499px) {\n                #info-thin { display: block; }\n            }\n            @media only screen and (min-width: 500px) {\n                #info-wide { display: block; }\n            }\n            #footer-space {\n                margin-top: 24px;\n                height: 76px;\n            }\n            #footer {\n                position: absolute;\n                bottom: 0;\n                left: 0; right: 0;\n                height: 76px;\n                background: hsl(0, 0%, 88%);\n                overflow: hidden;\n                font-size: 15px;\n                line-height: 13px;\n                white-space: nowrap;\n                text-overflow: ellipsis;\n            }\n            #footer .container {\n                padding: 2px 50px 0;\n                box-sizing: border-box;\n            }\n            a {\n                font-weight: 600;\n                text-decoration: none;\n                color: hsl(214, 100%, 43%);\n            }\n            a:hover {\n                color: #0050ba;\n                text-shadow: 0 0 2px hsl(197, 100%, 47%);\n            }\n            #donate {\n                display: block;\n                position: relative;\n                margin: 0 auto;\n                padding: 7px 12px;\n                color: white;\n                font-size: 14px;\n                font-weight: 600;\n                background-color: hsl(0, 66%, 45%);\n                border: none;\n                border-radius: 5px;\n                box-shadow: 1px 1px 4px rgba(0, 0, 0, .55);\n                outline: none;\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #donate:hover {\n                background-color: hsl(0, 90%, 56%);\n                box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, .55);\n            }\n        </style>\n\n    </head>\n\n    <body>\n\n        <script>\n\n// Javatari version 4.0\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Main Emulator parameters.\n// May be overridden dynamically by URL query parameters, if ALLOW_URL_PARAMETERS = true.\n\nJavatari = {\n\n    PRESETS:                        \"\",                         // Configuration Presets to apply. See Presets Configuration\n\n    // Full or relative URL of Media files to load\n    CARTRIDGE_URL:                  \"\",\n    AUTODETECT_URL:                 \"\",\n    STATE_URL:                      \"\",\n\n    // Forcing ROM formats\n    CARTRIDGE_FORMAT:               \"\",                         // 4K, F8, F4, FE, AR, etc...\n\n    // General configuration\n    AUTO_START:                     true,\n    AUTO_POWER_ON_DELAY:            1200,                       // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON\n    CARTRIDGE_SHOW_RECENT:          true,\n    CARTRIDGE_CHANGE_DISABLED:      false,\n    CARTRIDGE_LABEL_COLORS:         \"\",                         // Space-separated colors for Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n    SCREEN_RESIZE_DISABLED:         false,\n    SCREEN_CONSOLE_PANEL_DISABLED:  false,\n    SCREEN_ELEMENT_ID:              \"javatari-screen\",\n    CONSOLE_PANEL_ELEMENT_ID:       -1,                         // -1: auto. Don't change! :-)\n    SCREEN_FULLSCREEN_MODE:         -1,                         // -2: disabled; -1: auto; 0: off; 1: on\n    SCREEN_CRT_MODE:                -1,                         // -1: auto; 0: off; 1: on\n    SCREEN_FILTER_MODE:             -1,                         // -2: browser default; -1: auto; 0..3: smoothing level\n    SCREEN_DEFAULT_SCALE:           -1,                         // -1: auto; 0.5..N in 0.1 steps: scale\n    SCREEN_DEFAULT_ASPECT:          1,                          // in 0.1 steps\n    SCREEN_CANVAS_SIZE:             2,                          // Internal canvas size factor. Don't change! :-)\n    SCREEN_CONTROL_BAR:             1,                          // 0: on hover; 1: always\n    SCREEN_FORCE_HOST_NATIVE_FPS:   -1,                         // -1: auto. Don't change! :-)\n    SCREEN_VSYNCH_MODE:             1,                          // -1: disabled; 0: off; 1: on\n    AUDIO_MONITOR_BUFFER_BASE:      -3,                         // -3: user set value; -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n    AUDIO_MONITOR_BUFFER_SIZE:      -1,                         // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size.     More buffer = more delay. Don't change! :-)\n    AUDIO_SIGNAL_BUFFER_RATIO:      2,                          // Internal Audio Signal buffer based on Monitor buffer\n    AUDIO_SIGNAL_ADD_FRAMES:        3,                          // Additional frames in internal Audio Signal buffer based on Monitor buffer\n    PADDLES_MODE:                   -1,                         // -1: auto; 0: off; 1: on\n    TOUCH_MODE:                     -1,                         // -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n    IMAGES_PATH:                    window.JAVATARI_IMAGES_PATH || \"images/\",\n\n    RESET:                          0,                          // if value = 1 clear all saved data on the client\n    ALLOW_URL_PARAMETERS:           true                        // Allows user to override any of these parameters via URL query parameters\n\n};\n\nJavatari.PRESETS_CONFIG = { };                                  // No built-in Presets for now\n\njt = window.jt || {};                                           // Namespace for all classes and objects\n\nfunction onUpdateReady(){alert(\"A new version is available!\\nJavatari will restart...\"),window.applicationCache.swapCache(),window.location.reload()}JavatariFullScreenSetup={apply:function(){if(!this.cssApplied){var a=document.createElement(\"style\");a.type=\"text/css\",a.innerHTML=this.css,document.head.appendChild(a),this.cssApplied=!0}document.documentElement.classList.toggle(\"jt-full-screen\",this.shouldStartInFullScreen())},shouldStartInFullScreen:function(){return window.Javatari?1===Javatari.SCREEN_FULLSCREEN_MODE||Javatari.SCREEN_FULLSCREEN_MODE===-1&&this.isBrowserStandaloneMode():this.isBrowserStandaloneMode()},isBrowserStandaloneMode:function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},css:\"html.jt-full-screen, html.jt-full-screen body {   background: black;}html.jt-full-screen .jt-full-screen-hidden {   display: none;}html:not(.jt-full-screen) .jt-full-screen-only {   display: none;}\"},JavatariFullScreenSetup.apply(),jt.Util=new function(){\"use strict\";function a(a,b){return a.name<b.name?-1:a.name>b.name?1:0}function b(a){return a.stopPropagation(),a.cancelable&&a.preventDefault(),!1}this.log=function(a){console.log(\">> jt: \"+a)},this.warning=function(a){console.warn(\">> jt Warning: \"+a)},this.error=function(a){console.error(\">> jt Error: \"+a)},this.message=function(a){console.info(a),alert(a)},this.asNormalArray=function(a){return a instanceof Array?a:this.arrayCopy(a,0,new Array(a.length))},this.arrayFill=function(a,b,c,d){if(a.fill)return a.fill(b,c,d);void 0===c&&(c=0);for(var e=(void 0===d?a.length:d)-1;e>=c;e-=1)a[e]=b;return a},this.arrayFillSegment=function(a,b,c,d){for(var e=c;e-- >b;)a[e]=d;return a},this.arrayCopy=function(a,b,c,d,e){d=d||0;for(var f=e?b+e:a.length;b<f;)c[d++]=a[b++];return c},this.arrayAdd=function(a,b){return a[a.length]=b,a},this.arrayRemoveAllElement=function(a,b){for(var c;(c=a.indexOf(b))>=0;)a.splice(c,1);return a},this.arraysConcatAll=function(a){for(var b=0,c=0;c<a.length;++c)b+=a[c].length;var d=new a[0].constructor(b),e=0;for(c=0;c<a.length;++c)this.arrayCopy(a[c],0,d,e),e+=a[c].length;return d},this.arrayRemove=function(a,b){var c=a.indexOf(b);c<0||a.splice(c,1)},this.arraysEqual=function(a,b){var c=a.length;if(c!==b.length)return!1;for(;c--;)if(a[c]!==b[c])return!1;return!0},this.reverseInt8=function(a){return(1&a)<<7|(2&a)<<5|(4&a)<<3|(8&a)<<1|(16&a)>>1|(32&a)>>3|(64&a)>>5|(128&a)>>7},this.int8BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e]);return d},this.byteStringToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0;e<c;e+=1)d[e]=255&a.charCodeAt(e);return d}},this.int32BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e])+String.fromCharCode(a[e]>>8&255)+String.fromCharCode(a[e]>>16&255)+String.fromCharCode(a[e]>>24&255);return d},this.byteStringToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length/4|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e<c;e+=1,f+=4)d[e]=255&a.charCodeAt(f)|(255&a.charCodeAt(f+1))<<8|(255&a.charCodeAt(f+2))<<16|(255&a.charCodeAt(f+3))<<24;return d}},this.storeInt8BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int8BitArrayToByteString(a))},this.restoreStringBase64ToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt8BitArray(atob(a),b)},this.compressInt8BitArrayToStringBase64=function(a,b){return null===a||void 0===a?a:0===a.length?\"\":b<a.length?this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a.slice(0,b))):this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToInt8BitArray=function(a,b,c){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){if(\"\"==a)return[];var d=JSZip.compressions.DEFLATE.uncompress(atob(a));return b&&(c||b.length===d.length)?this.arrayCopy(d,0,b):this.arrayCopy(d,0,new(b?b.constructor:Array)(d.length))}},this.storeInt32BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int32BitArrayToByteString(a))},this.restoreStringBase64ToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt32BitArray(atob(a),b)},this.compressStringToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?a:this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToString=function(a){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?a:this.int8BitArrayToByteString(JSZip.compressions.DEFLATE.uncompress(atob(a)))},this.toHex2=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();return a>=0&&b.length%2?\"0\"+b:b},this.toHex4=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();if(a<0)return b;switch(b.length){case 4:return b;case 3:return\"0\"+b;case 2:return\"00\"+b;case 1:return\"000\"+b;default:return b}},this.escapeHtml=function(a){return a.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#039;\").replace(/\\//g,\"&#047;\").replace(/\\?/g,\"&#063;\").replace(/\\-/g,\"&#045;\").replace(/\\|/g,\"&#0124;\")},this.arrayFind=function(a,b){if(a.find)return a.find(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return a[c]},this.arrayFindIndex=function(a,b){if(a.findIndex)return a.findIndex(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return c;return-1},this.arrayIndexOfSubArray=function(a,b,c,d){var e=b.length,f=a.length,g=d||1;a:for(var h=c;h>=0&&h<f;h+=g){for(var i=0;i<e;i+=1)if(a[h+i]!==b[i])continue a;return h}return-1},this.stringCountOccurrences=function(a,b){for(var c=0,d=0,e=a.length;d<e;++d)a[d]==b&&++c;return c},this.stringStartsWith=function(a,b){return a.startsWith?a.startsWith(b):a.substr(0,b.length)===b},this.stringEndsWith=function(a,b){return a.endsWith?a.endsWith(b):a.substr(a.length-b.length)===b},this.checkContentIsZIP=function(a){if(a&&80===a[0]&&75===a[1])try{return new JSZip(a)}catch(a){}return null},this.getZIPFilesSorted=function(b){var c=b.file(/.+/);return c.sort(a),c},this.checkContentIsGZIP=function(a){if(!a||31!==a[0]||139!==a[1]||8!==a[2])return null;try{var b=a[3],c=2&b,d=4&b,e=8&b,f=16&b,g=10;if(d){var h=a[g++]|a[g++]<<8;g+=h}if(e)for(;0!==a[g++];);if(f)for(;0!==a[g++];);return c&&(g+=2),JSZip.compressions.DEFLATE.uncompress(a.slice(g,a.length-8))}catch(a){return null}},this.leafFilename=function(a){return((a&&a.indexOf(\"/\")>=0?a.split(\"/\").pop():a)||\"\").trim()},this.leafFilenameNoExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?b:b.substr(0,c).trim()},this.leafFilenameOnlyExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?\"\":b.substr(c+1).trim()},this.dump=function(a,b,c,d){var e=\"\",f=b||0;d=d||1;for(var g=0;g<d;g++){for(var h=0;h<c;h++){var i=a[f++];e+=void 0!=i?i.toString(16,2)+\" \":\"? \"}e+=\"   \"}console.log(e)},this.browserInfo=function(){if(this.browserInfoAvailable)return this.browserInfoAvailable;var a,b=navigator.userAgent,c=b.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];if(/trident/i.test(c[1]))return a=/\\brv[ :]+(\\d+)/g.exec(b)||[],this.browserInfoAvailable={name:\"IE\",version:a[1]||\"\"};if(\"Chrome\"===c[1]&&(a=b.match(/\\bOPR\\/(\\d+)/),null!=a))return this.browserInfoAvailable={name:\"OPERA\",version:a[1]};c=c[2]?[c[1],c[2]]:[navigator.appName,navigator.appVersion,\"-?\"],\nnull!=(a=b.match(/version\\/(\\d+)/i))&&c.splice(1,1,a[1]);var d=c[0].toUpperCase();return this.browserInfoAvailable={name:this.isIOSDevice()||\"NETSCAPE\"===d?\"SAFARI\":d,version:c[1]}},this.userLanguage=function(){return(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage||\"en-US\").trim()},this.isOfficialHomepage=function(){var a=window.location;return a&&\"javatari.org\"===a.hostname.toLowerCase()&&(\"\"===a.port||\"80\"===a.port)},this.isTouchDevice=function(){return\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},this.isMobileDevice=function(){return this.isTouchDevice()&&/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)},this.isIOSDevice=function(){return/ipad|iphone|ipod/i.test(navigator.userAgent)},this.isBrowserStandaloneMode=function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},this.onTapOrMouseDown=function(a,b){this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",b)},this.onTapOrMouseDownWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",d)},this.onTapOrMouseUpWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mouseup\":\"mouseup\",d)},this.onTapOrMouseDownWithBlockUIG=function(a,c){function d(a){if((\"touchstart\"!==a.type||!a.target.jtNeedsUIG)&&(\"touchend\"!==a.type||a.target.jtNeedsUIG))return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart touchend mousedown\":\"mousedown\",d)},this.blockEvent=b,this.addEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.addEventListener(b[e],c,d)},this.removeEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.removeEventListener(b[e],c,d)},this.insertCSS=function(a){var b=document.createElement(\"style\");b.type=\"text/css\",b.innerHTML=a,document.head.appendChild(b)},this.log2=function(a){return Math.log(a)/Math.log(2)},this.exp2=function(a){return Math.pow(2,a)},this.performanceNow=function(){return this.performanceNow.startOffset?Date.now()-this.performanceNow.startOffset:window.performance.now()}},window.performance&&window.performance.now||(jt.Util.performanceNow.startOffset=Date.now()),jt.MD5=function(a){\"use strict\";function b(a){var b=(a>>>0).toString(16);return\"00000000\".substr(0,8-b.length)+b}function c(a){for(var b=[],c=0;c<a.length;c++)b=b.concat(k(a[c]));return b}function d(a){for(var b=[],c=0;c<8;c++)b.push(255&a),a>>>=8;return b}function e(a,b){return a<<b&4294967295|a>>>32-b}function f(a,b,c){return a&b|~a&c}function g(a,b,c){return c&a|~c&b}function h(a,b,c){return a^b^c}function i(a,b,c){return b^(a|~c)}function j(a,b){return a[b+3]<<24|a[b+2]<<16|a[b+1]<<8|a[b]}function k(a){for(var b=[],c=0;c<a.length;c++)if(a.charCodeAt(c)<=127)b.push(a.charCodeAt(c));else for(var d=encodeURIComponent(a.charAt(c)).substr(1).split(\"%\"),e=0;e<d.length;e++)b.push(parseInt(d[e],16));return b}function l(a,c,d,e){for(var f=\"\",g=0,h=0,i=3;i>=0;i--)h=arguments[i],g=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=h,f+=b(g);return f}function m(a){for(var b=new Array(a.length),c=0;c<a.length;c++)b[c]=a[c];return b}function n(a,b){return 4294967295&a+b}function o(){function a(a,b,c,d){var f=v;v=u,u=t,t=n(t,e(n(s,n(a,n(b,c))),d)),s=f}var b=p.length;p.push(128);var c=p.length%64;if(c>56){for(var k=0;k<64-c;k++)p.push(0);c=p.length%64}for(k=0;k<56-c;k++)p.push(0);p=p.concat(d(8*b));var m=1732584193,o=4023233417,q=2562383102,r=271733878,s=0,t=0,u=0,v=0;for(k=0;k<p.length/64;k++){s=m,t=o,u=q,v=r;var w=64*k;a(f(t,u,v),3614090360,j(p,w),7),a(f(t,u,v),3905402710,j(p,w+4),12),a(f(t,u,v),606105819,j(p,w+8),17),a(f(t,u,v),3250441966,j(p,w+12),22),a(f(t,u,v),4118548399,j(p,w+16),7),a(f(t,u,v),1200080426,j(p,w+20),12),a(f(t,u,v),2821735955,j(p,w+24),17),a(f(t,u,v),4249261313,j(p,w+28),22),a(f(t,u,v),1770035416,j(p,w+32),7),a(f(t,u,v),2336552879,j(p,w+36),12),a(f(t,u,v),4294925233,j(p,w+40),17),a(f(t,u,v),2304563134,j(p,w+44),22),a(f(t,u,v),1804603682,j(p,w+48),7),a(f(t,u,v),4254626195,j(p,w+52),12),a(f(t,u,v),2792965006,j(p,w+56),17),a(f(t,u,v),1236535329,j(p,w+60),22),a(g(t,u,v),4129170786,j(p,w+4),5),a(g(t,u,v),3225465664,j(p,w+24),9),a(g(t,u,v),643717713,j(p,w+44),14),a(g(t,u,v),3921069994,j(p,w),20),a(g(t,u,v),3593408605,j(p,w+20),5),a(g(t,u,v),38016083,j(p,w+40),9),a(g(t,u,v),3634488961,j(p,w+60),14),a(g(t,u,v),3889429448,j(p,w+16),20),a(g(t,u,v),568446438,j(p,w+36),5),a(g(t,u,v),3275163606,j(p,w+56),9),a(g(t,u,v),4107603335,j(p,w+12),14),a(g(t,u,v),1163531501,j(p,w+32),20),a(g(t,u,v),2850285829,j(p,w+52),5),a(g(t,u,v),4243563512,j(p,w+8),9),a(g(t,u,v),1735328473,j(p,w+28),14),a(g(t,u,v),2368359562,j(p,w+48),20),a(h(t,u,v),4294588738,j(p,w+20),4),a(h(t,u,v),2272392833,j(p,w+32),11),a(h(t,u,v),1839030562,j(p,w+44),16),a(h(t,u,v),4259657740,j(p,w+56),23),a(h(t,u,v),2763975236,j(p,w+4),4),a(h(t,u,v),1272893353,j(p,w+16),11),a(h(t,u,v),4139469664,j(p,w+28),16),a(h(t,u,v),3200236656,j(p,w+40),23),a(h(t,u,v),681279174,j(p,w+52),4),a(h(t,u,v),3936430074,j(p,w),11),a(h(t,u,v),3572445317,j(p,w+12),16),a(h(t,u,v),76029189,j(p,w+24),23),a(h(t,u,v),3654602809,j(p,w+36),4),a(h(t,u,v),3873151461,j(p,w+48),11),a(h(t,u,v),530742520,j(p,w+60),16),a(h(t,u,v),3299628645,j(p,w+8),23),a(i(t,u,v),4096336452,j(p,w),6),a(i(t,u,v),1126891415,j(p,w+28),10),a(i(t,u,v),2878612391,j(p,w+56),15),a(i(t,u,v),4237533241,j(p,w+20),21),a(i(t,u,v),1700485571,j(p,w+48),6),a(i(t,u,v),2399980690,j(p,w+12),10),a(i(t,u,v),4293915773,j(p,w+40),15),a(i(t,u,v),2240044497,j(p,w+4),21),a(i(t,u,v),1873313359,j(p,w+32),6),a(i(t,u,v),4264355552,j(p,w+60),10),a(i(t,u,v),2734768916,j(p,w+24),15),a(i(t,u,v),1309151649,j(p,w+52),21),a(i(t,u,v),4149444226,j(p,w+16),6),a(i(t,u,v),3174756917,j(p,w+44),10),a(i(t,u,v),718787259,j(p,w+8),15),a(i(t,u,v),3951481745,j(p,w+36),21),m=n(m,s),o=n(o,t),q=n(q,u),r=n(r,v)}return l(r,q,o,m).toUpperCase()}var p=null,q=null;return\"string\"==typeof a?p=k(a):a.constructor==Array?0===a.length?p=a:\"string\"==typeof a[0]?p=c(a):\"number\"==typeof a[0]?p=a:q=typeof a[0]:\"undefined\"!=typeof ArrayBuffer?a instanceof ArrayBuffer?p=m(new Uint8Array(a)):a instanceof Uint8Array||a instanceof Int8Array?p=m(a):a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array||a instanceof Float32Array||a instanceof Float64Array?p=m(new Uint8Array(a.buffer)):q=typeof a:q=typeof a,q&&alert(\"MD5 type mismatch, cannot process \"+q),o()},!function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,\nj+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\0\\0\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(\"undefined\"==typeof a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);\"undefined\"==typeof b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\0\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),\n0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return\"string\"===e?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||\"undefined\"==typeof b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&\"undefined\"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||\"undefined\"==typeof b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=\"undefined\"!=typeof b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";w+=\"\\n\\0\",w+=p||q?\"\\0\\b\":\"\\0\\0\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+\"\u0014\\0\"+w+s(o.length,2)+\"\\0\\0\\0\\0\"+(j===!0?\"\u0010\\0\\0\\0\":\"\\0\\0\\0\\0\")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=\"undefined\"!=typeof a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(a){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;e.append(b),c.blob=0===e.getBlob(\"application/zip\").size}catch(a){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\n\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(k(e.uint8array?a.subarray(c,h):a.slice(c,h))),c=h}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(a){h=!1}if(!h){for(var i=\"\",k=0;k<a.length;k++)i+=String.fromCharCode(a[k]);return i}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(c){try{var b=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,d=new b;return d.append(a),d.getBlob(\"application/zip\")}catch(a){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),\nb.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=!!(16&this.externalFileAttributes)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d!==m||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n)},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\n\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=h[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a^=-1;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ja?a.strstart-(a.w_size-ja):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ia,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ia-(m-f),f=m-ia,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ja)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ha)for(f=a.strstart-a.insert,\na.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+ha-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<ha)););}while(a.lookahead<ja&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sa;if(a.strstart-a.block_start>=a.w_size-ja&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sa:sa}function o(a,b){for(var c,d;;){if(a.lookahead<ja){if(m(a),a.lookahead<ja&&b===H)return sa;if(0===a.lookahead)break}if(c=0,a.lookahead>=ha&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-ja&&(a.match_length=l(a,c)),a.match_length>=ha)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-ha),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ha){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=a.strstart<ha-1?a.strstart:ha-1,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function p(a,b){for(var c,d,e;;){if(a.lookahead<ja){if(m(a),a.lookahead<ja&&b===H)return sa;if(0===a.lookahead)break}if(c=0,a.lookahead>=ha&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=ha-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-ja&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===ha&&a.strstart-a.match_start>4096)&&(a.match_length=ha-1)),a.prev_length>=ha&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ha,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ha),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=ha-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sa}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sa}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<ha-1?a.strstart:ha-1,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ia){if(m(a),a.lookahead<=ia&&b===H)return sa;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=ha&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ia;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ia-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ha?(c=D._tr_tally(a,1,a.match_length-ha),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ha-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fa),this.dyn_dtree=new C.Buf16(2*(2*da+1)),this.bl_tree=new C.Buf16(2*(2*ea+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ga+1),this.heap=new C.Buf16(2*ca+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*ca+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?la:qa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+ha-1)/ha),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ra&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===la)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ma):(i(h,0),i(h,0),i(h,0),\ni(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wa),h.status=qa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ka),m+=31-m%31,h.status=qa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ma)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=na)}else h.status=na;if(h.status===na)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=oa)}else h.status=oa;if(h.status===oa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pa)}else h.status=pa;if(h.status===pa&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qa)):h.status=qa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===ra&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==ra){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ua||o===va)&&(h.status=ra),o===sa||o===ua)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ta&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra?d(a,O):(a.state=null,b===qa?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=29,ba=256,ca=ba+1+aa,da=30,ea=19,fa=2*ca+1,ga=15,ha=3,ia=258,ja=ia+ha+1,ka=32,la=42,ma=69,na=73,oa=91,pa=103,qa=113,ra=666,sa=1,ta=2,ua=3,va=4,wa=3,xa=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xa(0,0,0,0,n),new xa(4,4,8,4,o),new xa(4,5,16,8,o),new xa(4,6,32,32,o),new xa(4,4,16,16,p),new xa(8,16,32,32,p),new xa(8,16,128,128,p),new xa(8,32,128,256,p),new xa(32,128,258,1024,p),new xa(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg=\"invalid literal/length code\",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg=\"invalid distance code\",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,ra)}function k(a){if(sa){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sa=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){\nvar c,e,f,g,h,i,j,m,n,o,p,q,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa=0,Ba=new r.Buf8(4),Ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xa=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=la;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg=\"invalid window size\",c.mode=la;break}c.dmax=1<<wa,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=la;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=la;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Ca[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid code lengths set\",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have<c.nlen+c.ndist;){for(;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qa,n-=qa,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid literal/lengths set\",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg=\"invalid distances set\",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(ra&&0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.lencode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg=\"invalid literal/length code\",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<<c.distbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.distcode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg=\"invalid distance code\",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[oa++];while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=la;break}m=0,n=0}c.mode=ja;case ja:\nif(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=la;break}m=0,n=0}c.mode=ka;case ka:xa=D;break a;case la:xa=G;break a;case ma:return H;case na:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<la&&(c.mode<ia||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=ma,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===ba||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xa===C&&(xa=I),xa)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,aa=19,ba=20,ca=21,da=22,ea=23,fa=24,ga=25,ha=26,ia=27,ja=28,ka=29,la=30,ma=31,na=32,oa=852,pa=592,qa=15,ra=qa,sa=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?ga[a]:ga[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ia[d]=c,a=0;a<1<<_[d];a++)ha[c++]=d;for(ha[c-1]=d,e=0,d=0;16>d;d++)for(ja[d]=e,a=0;a<1<<aa[d];a++)ga[e++]=d;for(e>>=7;R>d;d++)for(ja[d]=e<<7,a=0;a<1<<aa[d]-7;a++)ga[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)ea[2*a+1]=8,a++,f[8]++;for(;255>=a;)ea[2*a+1]=9,a++,f[9]++;for(;279>=a;)ea[2*a+1]=7,a++,f[7]++;for(;287>=a;)ea[2*a+1]=8,a++,f[8]++;for(l(ea,Q+1,f),a=0;R>a;a++)fa[2*a+1]=5,fa[2*a]=i(a,5);ka=new na(ea,_,P+1,Q,U),la=new na(fa,aa,0,R,U),ma=new na(new Array(0),ba,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=ha[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ia[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=aa[i],0!==j&&(d-=ja[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),\nt(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*ca[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*ca[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pa||(m(),pa=!0),a.l_desc=new oa(a.dyn_ltree,ka),a.d_desc=new oa(a.dyn_dtree,la),a.bl_desc=new oa(a.bl_tree,ma),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,ea),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ea,fa)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ha[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],aa=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],ba=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],da=512,ea=new Array(2*(Q+2));d(ea);var fa=new Array(2*R);d(fa);var ga=new Array(da);d(ga);var ha=new Array(N-M+1);d(ha);var ia=new Array(O);d(ia);var ja=new Array(R);d(ja);var ka,la,ma,na=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},oa=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pa=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),jt.EmbeddedFiles={get:function(a){var b=this.compressedContent[a];if(void 0!==b)return{name:a,content:jt.Util.uncompressStringBase64ToInt8BitArray(b)};var c=this.diffsContent[a];if(void 0!==c){var d=this.get(c.based);if(void 0!==d){var e=d.content;for(var f in c.diffs)for(var g=c.diffs[f],h=0;h<g.length;++h)e[(0|f)+h]=g[h];return{name:a,content:e}}}},embedFileCompressedContent:function(a,b){this.compressedContent[a]=b},embedFileDiff:function(a,b){this.diffsContent[a]=b},compressedContent:{},diffsContent:{}},jt.MultiDownloader=function(a,b,c,d){\"use strict\";function e(a){if(a){var b=a.url.trim().split(/\\s*\\|\\s*/);a.filesToLoad=b.length,a.filesContent=new Array(a.filesToLoad);for(var c=0;c<b.length;++c){var d=b[c];\"@\"===d[0]?f(a,c,d):g(a,c,d)}}}function f(a,b,c){jt.Util.log(\"Reading Embedded file: \"+c);var d=jt.EmbeddedFiles.get(c.substr(1));void 0!==d?h(a,b,d.content):i(a,\"Embedded file not found!\")}function g(a,b,c,e){var f=k(c)?l(c):c,g=new XMLHttpRequest;g.open(\"GET\",f,!0),g.responseType=\"arraybuffer\",g.timeout=void 0!==d?d:s,g.onload=function(){200===g.status?h(a,b,new Uint8Array(g.response)):g.onerror()},g.onerror=g.ontimeout=function(){i(a,\"\"+g.status+\" \"+g.statusText)},jt.Util.log(\"Reading file from: \"+c),g.send()}function h(a,b,c){a.filesContent[b]=c,--a.filesToLoad>0||(a.success=!0,a.content=jt.Util.arraysConcatAll(a.filesContent),a.onSuccess&&a.onSuccess(a),j())}function i(a,b){a.success=!1,a.error=b;var d=\"Could not load file: \"+a.url+\"\\nError: \"+b;a.onError?(jt.Util.error(d),a.onError(a)):c||jt.Util.message(d),j()}function j(){if(!q){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(q=!0,n(),d=0;d<a.length;d++)if(a[d]&&!a[d].success)return void(c&&c(a));b&&b(a)}}function k(a){return a&&(0===a.indexOf(\"http:\")||0===a.indexOf(\"https:\"))}function l(a){return(Javatari.PROXY_DOWNLOADER||\"\")+a}function m(){Javatari.room.isLoading||(p=window.setTimeout(function(){p=null,o=!0,Javatari.room.setLoading(!0)},r))}function n(){p&&(window.clearTimeout(p),p=null),o&&(o=!1,Javatari.room.setLoading(!1))}this.start=function(){if(a&&0!==a.length){m();for(var b=0;b<a.length;b++)e(a[b])}j()};var o=!1,p=null,q=!1,r=1e3,s=15e3},jt.MultiFileReader=function(a,b,c,d){\"use strict\";function e(a){if(a){jt.Util.log(\"Reading file: \"+a.name);var b=new FileReader;b.onload=function(b){a.success=!0,a.content=new Uint8Array(b.target.result),f()},b.onerror=function(b){a.success=!1,a.error=b.target.error.name,f()},b.readAsArrayBuffer(a)}}function f(){if(!g){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(g=!0,d=0;d<a.length;d++)if(a[d]&&!a[d].success)return c&&c(a,a[d].error),a;b&&b(a)}}this.start=function(){if(a&&0!==a.length){d||(d=h);for(var g=0,i=0;i<a.length;i++)g+=a[i].size;if(g>d){var j=\"Maximum total size limit exceeded: \"+(d/1024|0)+\"KB\";return void(c&&c(a,j,!0))}for(i=0;i<a.length;i++)e(a[i]);f()}else b(a)};var g=!1,h=5898240},jt.VideoStandard={NTSC:{name:\"NTSC\",desc:\"NTSC 60Hz\",totalWidth:228,totalHeight:262,defaultOriginYPct:10.8,defaultHeightPct:85.2,targetFPS:60,pulldowns:{60:{standard:\"NTSC\",frequency:60,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},120:{standard:\"NTSC\",frequency:120,linesPerCycle:131,firstStepCycleLinesAdjust:0,cadence:[0,1],steps:2},50:{standard:\"NTSC\",frequency:50,linesPerCycle:314,firstStepCycleLinesAdjust:2,cadence:[1,1,1,1,2],steps:5},100:{standard:\"NTSC\",frequency:100,linesPerCycle:157,firstStepCycleLinesAdjust:2,cadence:[0,1,0,1,1,0,1,0,1,1],steps:10},TIMER:{standard:\"NTSC\",frequency:62.5,linesPerCycle:262,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}},PAL:{name:\"PAL\",desc:\"PAL 50Hz\",totalWidth:228,totalHeight:312,defaultOriginYPct:13.5,defaultHeightPct:77.3,targetFPS:50,pulldowns:{50:{standard:\"PAL\",frequency:50,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1},100:{standard:\"PAL\",frequency:100,linesPerCycle:156,firstStepCycleLinesAdjust:1,cadence:[0,1],steps:2},60:{standard:\"PAL\",frequency:60,linesPerCycle:261,firstStepCycleLinesAdjust:-1,cadence:[0,1,1,1,1,1],steps:6},120:{standard:\"PAL\",frequency:120,linesPerCycle:130,firstStepCycleLinesAdjust:5,cadence:[0,0,1,0,1,0,0,1,0,1,0,1],steps:12},TIMER:{standard:\"PAL\",frequency:50,linesPerCycle:313,firstStepCycleLinesAdjust:0,cadence:[1],steps:1}}}},jt.VideoSignal=function(){\"use strict\";this.connectMonitor=function(a){this.monitor=a},this.setVideoStandard=function(a){this.monitor&&this.monitor.setVideoStandard(a)},this.nextLine=function(a,b){return this.monitor.nextLine(a,b)},this.finishFrame=function(){this.monitor.refresh()},this.signalOff=function(){this.monitor&&this.monitor.videoSignalOff()},this.showOSD=function(a,b){this.monitor&&this.monitor.showOSD(a,b)},this.toggleShowInfo=function(){this.monitor.toggleShowInfo()},this.monitor=null},jt.AudioSignal=function(a,b,c,d){\"use strict\";function e(){if(n>0){if(p<=0)return void(n=0);g(),--n,--p}}function f(){var a=s*Javatari.AUDIO_SIGNAL_BUFFER_RATIO+k*Javatari.AUDIO_SIGNAL_ADD_FRAMES|0;r.length=a,a>o&&jt.Util.arrayFill(r,0,o,a),o=a,t.bufferSize=o,q=o-2,j.flush()}function g(){r[l]=b.nextSample()*d,++l>=o&&(l=0)}function h(){r[l]=0,++l>=o&&(l=0)}function i(a,b){if(b)for(var c=a;c>0;c-=1)h();else for(var d=a;d>0;d-=1)g();p-=a}var j=this;this.flush=function(){l=0,m=0,p=q},this.setFps=function(a){k=c/a|0,f()},this.audioFinishFrame=function(){if(n>0)for(;n>0;)e();n=k},this.retrieveSamples=function(a,b){\nvar c=q-p,d=a-c;d>0&&(d>p&&(d=p),i(d,b)),t.start=m;var e=c+d;return p+=e,m+=e,m>=o&&(m-=o),t},this.audioClockPulse=e,this.getSampleRate=function(){return c},this.toString=function(){return\"AudioSignal \"+a},this.setAudioMonitorBufferSize=function(a){s=a,f()},this.name=a;var k,l=0,m=0,n=0,o=0,p=0,q=0,r=jt.Util.arrayFill(new Array(o),0),s=0,t={buffer:r,bufferSize:o,start:0}},jt.M6502=function(){\"use strict\";function a(){return Jb(function(){Cb(Ba>127),Ba=Ba<<1&255,zb(Ba),Ab(Ba)})}function b(){return Jb(function(){Ja=0})}function c(){return Jb(function(){Ga=0})}function d(){return Jb(function(){Ha=0})}function e(){return Jb(function(){Fa=0})}function f(){return Jb(function(){Ca=Ca-1&255,zb(Ca),Ab(Ca)})}function g(){return Jb(function(){Da=Da-1&255,zb(Da),Ab(Da)})}function h(){return Jb(function(){Ca=Ca+1&255,zb(Ca),Ab(Ca)})}function i(){return Jb(function(){Da=Da+1&255,zb(Da),Ab(Da)})}function j(){return Jb(function(){Ja=1&Ba,Ba>>>=1,zb(Ba),Ea=0})}function k(){return Jb(function(){})}function l(){return Jb(function(){var a=Ba>127;Ba=255&(Ba<<1|Ja),Cb(a),zb(Ba),Ab(Ba)})}function m(){return Jb(function(){var a=1&Ba;Ba=Ba>>>1|Ja<<7,Cb(a),zb(Ba),Ab(Ba)})}function n(){return Jb(function(){Ja=1})}function o(){return Jb(function(){Ga=1})}function p(){return Jb(function(){Ha=1})}function q(){return Jb(function(){Ca=Ba,zb(Ca),Ab(Ca)})}function r(){return Jb(function(){Da=Ba,zb(Da),Ab(Da)})}function s(){return Jb(function(){Ca=Aa,zb(Ca),Ab(Ca)})}function t(){return Jb(function(){Ba=Ca,zb(Ba),Ab(Ba)})}function u(){return Jb(function(){Aa=Ca})}function v(){return Jb(function(){Ba=Da,zb(Ba),Ab(Ba)})}function w(){return[_a,function(){Ib(\"KIL/HLT/JAM\")},function(){Ka--}]}function x(a){return a(function(){Ib(\"NOP/DOP\")})}function y(a){return a(function(){if(Ga){var a=Ma,b=(15&Ba)+(15&a)+Ja;b>9&&(b+=6);var c=(Ba>>4)+(a>>4)+(b>15)<<4;zb(Ba+a+Ja&255),Ab(c),Bb((Ba^c)&~(Ba^a)&128),c>159&&(c+=96),Cb(c>255),Ba=255&(c|15&b)}else{var d=Ba+Ma+Ja;Cb(d>255),Bb((Ba^d)&(Ma^d)&128),Ba=255&d,zb(Ba),Ab(Ba)}})}function z(a){return a(function(){Ba&=Ma,zb(Ba),Ab(Ba)})}function A(a){return a(function(){var a=Ma;zb(Ba&a),Bb(64&a),Ab(a)})}function B(a){return a(function(){var a=Ba-Ma&255;Cb(Ba>=Ma),zb(a),Ab(a)})}function C(a){return a(function(){var a=Ca-Ma&255;Cb(Ca>=Ma),zb(a),Ab(a)})}function D(a){return a(function(){var a=Da-Ma&255;Cb(Da>=Ma),zb(a),Ab(a)})}function E(a){return a(function(){Ba^=Ma,zb(Ba),Ab(Ba)})}function F(a){return a(function(){Ba=Ma,zb(Ba),Ab(Ba)})}function G(a){return a(function(){Ca=Ma,zb(Ca),Ab(Ca)})}function H(a){return a(function(){Da=Ma,zb(Da),Ab(Da)})}function I(a){return a(function(){Ba|=Ma,zb(Ba),Ab(Ba)})}function J(a){return a(function(){if(Ga){var a=Ma,b=(15&Ba)-(15&a)-(1-Ja),c=(Ba>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=Ba-a-(1-Ja);Cb(256&~d),Bb((Ba^a)&(Ba^d)&128),zb(255&d),Ab(d),Ba=255&(c<<4|15&b)}else a=255&~Ma,d=Ba+a+Ja,Cb(d>255),Bb((Ba^d)&(a^d)&128),Ba=255&d,zb(Ba),Ab(Ba)})}function K(a){return a(function(){Ib(\"ANC\"),Ba&=Ma,zb(Ba),Ea=Ja=128&Ba?1:0})}function L(a){return a(function(){Ib(\"ANE\")})}function M(a){return a(function(){Ib(\"ARR\");var a=Ba&Ma,b=Ja?128:0;a=a>>>1|b,Ba=a,zb(a),Ab(a);var c=96&Ba;96==c?(Ja=1,Fa=0):0==c?(Ja=0,Fa=0):32==c?(Ja=0,Fa=1):64==c&&(Ja=1,Fa=1)})}function N(a){return a(function(){Ib(\"ASR\");var a=Ba&Ma;Ja=1&a,a>>>=1,Ba=a,zb(a),Ea=0})}function O(a){return a(function(){Ib(\"LAS\");var a=Aa&Ma;Ba=a,Ca=a,Aa=a,zb(a),Ab(a)})}function P(a){return a(function(){Ib(\"LAX\");var a=Ma;Ba=a,Ca=a,zb(a),Ab(a)})}function Q(a){return a(function(){Ib(\"LXA\");var a=Ba&Ma;Ba=a,Ca=a,zb(a),Ab(a)})}function R(a){return a(function(){Ib(\"SBX\");var a=Ba&Ca,b=Ma,c=a-b&255;Ca=c,Cb(a>=b),zb(c),Ab(c)})}function S(a){return a(function(){Ma=Ba})}function T(a){return a(function(){Ma=Ca})}function U(a){return a(function(){Ma=Da})}function V(a){return a(function(){Ib(\"SAX\"),Ma=Ba&Ca})}function W(a){return a(function(){Ib(\"SHA\"),Ma=Ba&Ca&(Oa>>>8)+1&255})}function X(a){return a(function(){Ib(\"SHS\");var a=Ba&Ca;Aa=a,Ma=a&(Oa>>>8)+1&255})}function Y(a){return a(function(){Ib(\"SHX\"),Ma=Ca&(Oa>>>8)+1&255})}function Z(a){return a(function(){Ib(\"SHY\"),Ma=Da&(Oa>>>8)+1&255})}function $(a){return a(function(){Cb(Ma>127);var a=Ma<<1&255;Ma=a,zb(a),Ab(a)})}function _(a){return a(function(){var a=Ma-1&255;Ma=a,zb(a),Ab(a)})}function aa(a){return a(function(){var a=Ma+1&255;Ma=a,zb(a),Ab(a)})}function ba(a){return a(function(){Ja=1&Ma,Ma>>>=1,zb(Ma),Ea=0})}function ca(a){return a(function(){var a=Ma>127,b=255&(Ma<<1|Ja);Ma=b,Cb(a),zb(b),Ab(b)})}function da(a){return a(function(){var a=1&Ma,b=Ma>>>1|Ja<<7;Ma=b,Cb(a),zb(b),Ab(b)})}function ea(a){return a(function(){Ib(\"DCP\");var a=Ma-1&255;Ma=a,a=Ba-a,Cb(a>=0),zb(a),Ab(a)})}function fa(a){return a(function(){if(Ib(\"ISB\"),Ma=Ma+1&255,Ga){var a=Ma,b=(15&Ba)-(15&a)-(1-Ja),c=(Ba>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=Ba-a-(1-Ja);Cb(256&~d),Bb((Ba^a)&(Ba^d)&128),zb(255&d),Ab(d),Ba=255&(c<<4|15&b)}else a=255&~Ma,d=Ba+a+Ja,Cb(d>255),Bb((Ba^d)&(a^d)&128),Ba=255&d,zb(Ba),Ab(Ba)})}function ga(a){return a(function(){Ib(\"RLA\");var a=Ma,b=Ja;Cb(128&a),a=255&(a<<1|b),Ma=a,Ba&=a,zb(a),Ab(a)})}function ha(a){return a(function(){Ib(\"RRA\");var a=Ma,b=Ja?128:0;if(Cb(1&a),a=a>>>1|b,Ma=a,Ga){var c=Ma,d=(15&Ba)+(15&c)+Ja;d>9&&(d+=6);var e=(Ba>>4)+(c>>4)+(d>15)<<4;zb(Ba+c+Ja&255),Ab(e),Bb((Ba^e)&~(Ba^c)&128),e>159&&(e+=96),Cb(e>255),Ba=255&(e|15&d)}else{var f=Ba+Ma+Ja;Cb(f>255),Bb((Ba^f)&(Ma^f)&128),Ba=255&f,zb(Ba),Ab(Ba)}})}function ia(a){return a(function(){Ib(\"SLO\");var a=Ma;Cb(128&a),a=a<<1&255,Ma=a,a|=Ba,Ba=a,zb(a),Ab(a)})}function ja(a){return a(function(){Ib(\"SRE\");var a=Ma;Cb(1&a),a>>>=1,Ma=a,a=255&(Ba^a),Ba=a,zb(a),Ab(a)})}function ka(){return[_a,bb,function(){Fb(Ba)},ab]}function la(){return[_a,bb,function(){Fb(Gb())},ab]}function ma(){return[_a,bb,Eb,function(){Ba=Db(),zb(Ba),Ab(Ba)},ab]}function na(){return[_a,bb,Eb,function(){Hb(Db())},ab]}function oa(){return[_a,db,Eb,function(){Fb(za>>>8&255)},function(){Fb(255&za)},eb,function(){za=Na,ab()}]}function pa(){return[_a,sb,function(){va.debug&&va.breakpoint(\"BRK \"+Ma),Fb(za>>>8&255)},function(){Fb(255&za)},function(){Fb(Gb())},function(){Na=wa.read(Ua)},function(){Na|=wa.read(Ua+1)<<8},function(){za=Na,ab()}]}function qa(){return[_a,bb,Eb,function(){Hb(Db())},function(){Na=Db()},function(){Na|=Db()<<8},function(){za=Na,ab()}]}function ra(){return[_a,bb,Eb,function(){Na=Db()},function(){Na|=Db()<<8},function(){za=Na,sb()},ab]}function sa(){return[_a,db,eb,function(){za=Na,ab()}]}function ta(){return[_a,pb,qb,jb,function(){rb(),kb()},function(){za=Oa,ab()}]}function ua(a,b){var c;return c=a===Za?function(){return Ia===b}:a===Xa?function(){return Ea===b}:a===$a?function(){return Ja===b}:function(){return Fa===b},[_a,cb,function(){c()?(bb(),xb()):ab()},function(){Sa?(bb(),yb()):ab()},ab]}var va=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){ya&&(Ka++,xa[Ka]())},this.connectBus=function(a){wa=a},this.setRDY=function(a){ya=a},this.reset=function(){Ha=1,Ka=-1,xa=[_a],za=wa.read(Ta)|wa.read(Ta+1)<<8,this.setRDY(!0)};var wa,xa,ya=!1,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=-1,La=-1,Ma=0,Na=0,Oa=0,Pa=!1,Qa=0,Ra=0,Sa=0,Ta=65532,Ua=65534,Va=0,Wa=1,Xa=7,Ya=6,Za=1,$a=0;this.debug=!1,this.trace=!1;var _a=function(){La=wa.read(za),xa=cc[La],Ka=0,za++},ab=_a,bb=function(){wa.read(za)},cb=function(){Ra=wa.read(za),za++},db=function(){Na=wa.read(za),za++},eb=function(){Na|=wa.read(za)<<8,za++},fb=function(){Na=wa.read(Oa)},gb=function(){Na|=wa.read(Oa)<<8},hb=function(){Oa=wa.read(za),za++},ib=function(){Oa|=wa.read(za)<<8,za++},jb=function(){Oa=wa.read(Qa)},kb=function(){Oa|=wa.read(Qa)<<8},lb=function(){var a=(255&Oa)+Ca;Pa=a>255,Oa=65280&Oa|255&a},mb=function(){var a=(255&Oa)+Da;Pa=a>255,Oa=65280&Oa|255&a},nb=function(){var a=(255&Oa)+1;Pa=a>255,Oa=65280&Oa|255&a},ob=function(){Pa&&(Oa=Oa+256&65535)},pb=function(){Qa=wa.read(za),za++},qb=function(){\nQa|=wa.read(za)<<8,za++},rb=function(){var a=(255&Qa)+1;Qa=65280&Qa|255&a},sb=function(){Ma=wa.read(za),za++},tb=function(){Ma=wa.read(Na)},ub=function(){Ma=wa.read(Oa)},vb=function(){wa.write(Na,Ma)},wb=function(){wa.write(Oa,Ma)},xb=function(){var a=255&za,b=a+Ra&255;Sa=Ra>127?b>a?-256:0:b<a?256:0,za=65280&za|b},yb=function(){za=za+Sa&65535},zb=function(a){Ia=0===a?1:0},Ab=function(a){Ea=128&a?1:0},Bb=function(a){Fa=a?1:0},Cb=function(a){Ja=a?1:0},Db=function(){return Aa=Aa+1&255,wa.read(256+Aa)},Eb=function(){return wa.read(256+Aa)},Fb=function(a){wa.write(256+Aa,a),Aa=Aa-1&255},Gb=function(){return Ea<<7|Fa<<6|48|Ga<<3|Ha<<2|Ia<<1|Ja},Hb=function(a){Ea=a>>>7,Fa=a>>>6&1,Ga=a>>>3&1,Ha=a>>>2&1,Ia=a>>>1&1,Ja=1&a},Ib=function(a){va.debug&&va.breakpoint(\"Illegal Opcode: \"+a)},Jb=function(a){return[_a,bb,function(){a(),ab()}]},Kb=function(a){return[_a,sb,function(){a(),ab()}]},Lb=function(a){return[_a,db,tb,function(){a(),ab()}]},Mb=function(a){return[_a,db,eb,tb,function(){a(),ab()}]},Nb=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},tb,function(){a(),ab()}]},Ob=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},function(){Pa?ub():(a(),ab())},function(){a(),ab()}]}},Pb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),ub()},function(){a(),ab()}]}},Qb=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},function(){Pa?ub():(a(),ab())},function(){a(),ab()}]},Rb=function(a){return[_a,db,function(){a(),vb()},ab]},Sb=function(a){return[_a,db,eb,function(){a(),vb()},ab]},Tb=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},function(){a(),vb()},ab]},Ub=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},function(){a(),wb()},ab]}},Vb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),a(),wb()},ab]}},Wb=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},function(){a(),wb()},ab]},Xb=function(a){return[_a,db,tb,vb,function(){a(),vb()},ab]},Yb=function(a){return[_a,db,eb,tb,vb,function(){a(),vb()},ab]},Zb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),ub()},wb,function(){a(),wb()},ab]}},$b=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},ub,wb,function(){a(),wb()},ab]}},_b=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},tb,vb,function(){a(),vb()},ab]},ac=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},ub,wb,function(){a(),wb()},ab]},bc=new Array(256),cc=new Array(256);bc[0]=\"BRK\",cc[0]=pa(),bc[1]=\"ORA\",cc[1]=I(Nb),bc[2]=\"uKIL\",cc[2]=w(),bc[3]=\"uSLO\",cc[3]=ia(_b),bc[4]=\"uNOP\",cc[4]=x(Lb),bc[5]=\"ORA\",cc[5]=I(Lb),bc[6]=\"ASL\",cc[6]=$(Xb),bc[7]=\"uSLO\",cc[7]=ia(Xb),bc[8]=\"PHP\",cc[8]=la(),bc[9]=\"ORA\",cc[9]=I(Kb),bc[10]=\"ASL\",cc[10]=a(),bc[11]=\"uANC\",cc[11]=K(Kb),bc[12]=\"uNOP\",cc[12]=x(Mb),bc[13]=\"ORA\",cc[13]=I(Mb),bc[14]=\"ASL\",cc[14]=$(Yb),bc[15]=\"uSLO\",cc[15]=ia(Yb),bc[16]=\"BPL\",cc[16]=ua(Xa,0),bc[17]=\"ORA\",cc[17]=I(Qb),bc[18]=\"uKIL\",cc[18]=w(),bc[19]=\"uSLO\",cc[19]=ia(ac),bc[20]=\"uNOP\",cc[20]=x(Pb(Va)),bc[21]=\"ORA\",cc[21]=I(Pb(Va)),bc[22]=\"ASL\",cc[22]=$(Zb(Va)),bc[23]=\"uSLO\",cc[23]=ia(Zb(Va)),bc[24]=\"CLC\",cc[24]=b(),bc[25]=\"ORA\",cc[25]=I(Ob(Wa)),bc[26]=\"uNOP\",cc[26]=x(Jb),bc[27]=\"uSLO\",cc[27]=ia($b(Wa)),bc[28]=\"uNOP\",cc[28]=x(Ob(Va)),bc[29]=\"ORA\",cc[29]=I(Ob(Va)),bc[30]=\"ASL\",cc[30]=$($b(Va)),bc[31]=\"uSLO\",cc[31]=ia($b(Va)),bc[32]=\"JSR\",cc[32]=oa(),bc[33]=\"AND\",cc[33]=z(Nb),bc[34]=\"uKIL\",cc[34]=w(),bc[35]=\"uRLA\",cc[35]=ga(_b),bc[36]=\"BIT\",cc[36]=A(Lb),bc[37]=\"AND\",cc[37]=z(Lb),bc[38]=\"ROL\",cc[38]=ca(Xb),bc[39]=\"uRLA\",cc[39]=ga(Xb),bc[40]=\"PLP\",cc[40]=na(),bc[41]=\"AND\",cc[41]=z(Kb),bc[42]=\"ROL\",cc[42]=l(),bc[43]=\"uANC\",cc[43]=K(Kb),bc[44]=\"BIT\",cc[44]=A(Mb),bc[45]=\"AND\",cc[45]=z(Mb),bc[46]=\"ROL\",cc[46]=ca(Yb),bc[47]=\"uRLA\",cc[47]=ga(Yb),bc[48]=\"BMI\",cc[48]=ua(Xa,1),bc[49]=\"AND\",cc[49]=z(Qb),bc[50]=\"uKIL\",cc[50]=w(),bc[51]=\"uRLA\",cc[51]=ga(ac),bc[52]=\"uNOP\",cc[52]=x(Pb(Va)),bc[53]=\"AND\",cc[53]=z(Pb(Va)),bc[54]=\"ROL\",cc[54]=ca(Zb(Va)),bc[55]=\"uRLA\",cc[55]=ga(Zb(Va)),bc[56]=\"SEC\",cc[56]=n(),bc[57]=\"AND\",cc[57]=z(Ob(Wa)),bc[58]=\"uNOP\",cc[58]=x(Jb),bc[59]=\"uRLA\",cc[59]=ga($b(Wa)),bc[60]=\"uNOP\",cc[60]=x(Ob(Va)),bc[61]=\"AND\",cc[61]=z(Ob(Va)),bc[62]=\"ROL\",cc[62]=ca($b(Va)),bc[63]=\"uRLA\",cc[63]=ga($b(Va)),bc[64]=\"RTI\",cc[64]=qa(),bc[65]=\"EOR\",cc[65]=E(Nb),bc[66]=\"uKIL\",cc[66]=w(),bc[67]=\"uSRE\",cc[67]=ja(_b),bc[68]=\"uNOP\",cc[68]=x(Lb),bc[69]=\"EOR\",cc[69]=E(Lb),bc[70]=\"LSR\",cc[70]=ba(Xb),bc[71]=\"uSRE\",cc[71]=ja(Xb),bc[72]=\"PHA\",cc[72]=ka(),bc[73]=\"EOR\",cc[73]=E(Kb),bc[74]=\"LSR\",cc[74]=j(),bc[75]=\"uASR\",cc[75]=N(Kb),bc[76]=\"JMP\",cc[76]=sa(),bc[77]=\"EOR\",cc[77]=E(Mb),bc[78]=\"LSR\",cc[78]=ba(Yb),bc[79]=\"uSRE\",cc[79]=ja(Yb),bc[80]=\"BVC\",cc[80]=ua(Ya,0),bc[81]=\"EOR\",cc[81]=E(Qb),bc[82]=\"uKIL\",cc[82]=w(),bc[83]=\"uSRE\",cc[83]=ja(ac),bc[84]=\"uNOP\",cc[84]=x(Pb(Va)),bc[85]=\"EOR\",cc[85]=E(Pb(Va)),bc[86]=\"LSR\",cc[86]=ba(Zb(Va)),bc[87]=\"uSRE\",cc[87]=ja(Zb(Va)),bc[88]=\"CLI\",cc[88]=d(),bc[89]=\"EOR\",cc[89]=E(Ob(Wa)),bc[90]=\"uNOP\",cc[90]=x(Jb),bc[91]=\"uSRE\",cc[91]=ja($b(Wa)),bc[92]=\"uNOP\",cc[92]=x(Ob(Va)),bc[93]=\"EOR\",cc[93]=E(Ob(Va)),bc[94]=\"LSR\",cc[94]=ba($b(Va)),bc[95]=\"uSRE\",cc[95]=ja($b(Va)),bc[96]=\"RTS\",cc[96]=ra(),bc[97]=\"ADC\",cc[97]=y(Nb),bc[98]=\"uKIL\",cc[98]=w(),bc[99]=\"uRRA\",cc[99]=ha(_b);bc[100]=\"uNOP\";cc[100]=x(Lb),bc[101]=\"ADC\",cc[101]=y(Lb),bc[102]=\"ROR\",cc[102]=da(Xb),bc[103]=\"uRRA\",cc[103]=ha(Xb),bc[104]=\"PLA\",cc[104]=ma(),bc[105]=\"ADC\",cc[105]=y(Kb),bc[106]=\"ROR\",cc[106]=m(),bc[107]=\"uARR\",cc[107]=M(Kb),bc[108]=\"JMP\",cc[108]=ta(),bc[109]=\"ADC\",cc[109]=y(Mb),bc[110]=\"ROR\",cc[110]=da(Yb),bc[111]=\"uRRA\",cc[111]=ha(Yb),bc[112]=\"BVS\",cc[112]=ua(Ya,1),bc[113]=\"ADC\",cc[113]=y(Qb),bc[114]=\"uKIL\",cc[114]=w(),bc[115]=\"uRRA\",cc[115]=ha(ac),bc[116]=\"uNOP\",cc[116]=x(Pb(Va)),bc[117]=\"ADC\",cc[117]=y(Pb(Va)),bc[118]=\"ROR\",cc[118]=da(Zb(Va)),bc[119]=\"uRRA\",cc[119]=ha(Zb(Va)),bc[120]=\"SEI\",cc[120]=p(),bc[121]=\"ADC\",cc[121]=y(Ob(Wa)),bc[122]=\"uNOP\",cc[122]=x(Jb),bc[123]=\"uRRA\",cc[123]=ha($b(Wa)),bc[124]=\"uNOP\",cc[124]=x(Ob(Va)),bc[125]=\"ADC\",cc[125]=y(Ob(Va)),bc[126]=\"ROR\",cc[126]=da($b(Va)),bc[127]=\"uRRA\",cc[127]=ha($b(Va)),bc[128]=\"uNOP\",cc[128]=x(Kb),bc[129]=\"STA\",cc[129]=S(Tb),bc[130]=\"uNOP\",cc[130]=x(Kb),bc[131]=\"uSAX\",cc[131]=V(Tb),bc[132]=\"STY\",cc[132]=U(Rb),bc[133]=\"STA\",cc[133]=S(Rb),bc[134]=\"STX\",cc[134]=T(Rb),bc[135]=\"uSAX\",cc[135]=V(Rb),bc[136]=\"DEY\",cc[136]=g(),bc[137]=\"uNOP\",cc[137]=x(Kb),bc[138]=\"TXA\",cc[138]=t(),bc[139]=\"uANE\",cc[139]=L(Kb),bc[140]=\"STY\",cc[140]=U(Sb),bc[141]=\"STA\",cc[141]=S(Sb),bc[142]=\"STX\",cc[142]=T(Sb),bc[143]=\"uSAX\",cc[143]=V(Sb),bc[144]=\"BCC\",cc[144]=ua($a,0),bc[145]=\"STA\",cc[145]=S(Wb),bc[146]=\"uKIL\",cc[146]=w(),bc[147]=\"uSHA\",cc[147]=W(Wb),bc[148]=\"STY\",cc[148]=U(Vb(Va)),bc[149]=\"STA\",cc[149]=S(Vb(Va)),bc[150]=\"STX\",cc[150]=T(Vb(Wa)),bc[151]=\"uSAX\",cc[151]=V(Vb(Wa)),bc[152]=\"TYA\",cc[152]=v(),bc[153]=\"STA\",cc[153]=S(Ub(Wa)),bc[154]=\"TXS\",cc[154]=u(),bc[155]=\"uSHS\",cc[155]=X(Ub(Wa)),bc[156]=\"uSHY\",cc[156]=Z(Ub(Va)),bc[157]=\"STA\",cc[157]=S(Ub(Va)),bc[158]=\"uSHX\",cc[158]=Y(Ub(Wa)),bc[159]=\"uSHA\",cc[159]=W(Ub(Wa)),bc[160]=\"LDY\",cc[160]=H(Kb),bc[161]=\"LDA\",cc[161]=F(Nb),bc[162]=\"LDX\",cc[162]=G(Kb),bc[163]=\"uLAX\",cc[163]=P(Nb),bc[164]=\"LDY\",cc[164]=H(Lb),bc[165]=\"LDA\",cc[165]=F(Lb),bc[166]=\"LDX\",cc[166]=G(Lb),bc[167]=\"uLAX\",cc[167]=P(Lb),bc[168]=\"TAY\",cc[168]=r(),bc[169]=\"LDA\",cc[169]=F(Kb),bc[170]=\"TAX\",cc[170]=q(),bc[171]=\"uLXA\",cc[171]=Q(Kb),bc[172]=\"LDY\",cc[172]=H(Mb),bc[173]=\"LDA\",cc[173]=F(Mb),bc[174]=\"LDX\",cc[174]=G(Mb),bc[175]=\"uLAX\",cc[175]=P(Mb),bc[176]=\"BCS\",cc[176]=ua($a,1),bc[177]=\"LDA\",cc[177]=F(Qb),bc[178]=\"uKIL\",cc[178]=w(),bc[179]=\"uLAX\",cc[179]=P(Qb),bc[180]=\"LDY\",cc[180]=H(Pb(Va)),bc[181]=\"LDA\",cc[181]=F(Pb(Va)),bc[182]=\"LDX\",cc[182]=G(Pb(Wa)),bc[183]=\"uLAX\",cc[183]=P(Pb(Wa)),bc[184]=\"CLV\",\ncc[184]=e(),bc[185]=\"LDA\",cc[185]=F(Ob(Wa)),bc[186]=\"TSX\",cc[186]=s(),bc[187]=\"uLAS\",cc[187]=O(Ob(Wa)),bc[188]=\"LDY\",cc[188]=H(Ob(Va)),bc[189]=\"LDA\",cc[189]=F(Ob(Va)),bc[190]=\"LDX\",cc[190]=G(Ob(Wa)),bc[191]=\"uLAX\",cc[191]=P(Ob(Wa)),bc[192]=\"CPY\",cc[192]=D(Kb),bc[193]=\"CMP\",cc[193]=B(Nb),bc[194]=\"uNOP\",cc[194]=x(Kb),bc[195]=\"uDCP\",cc[195]=ea(_b),bc[196]=\"CPY\",cc[196]=D(Lb),bc[197]=\"CMP\",cc[197]=B(Lb),bc[198]=\"DEC\",cc[198]=_(Xb),bc[199]=\"uDCP\",cc[199]=ea(Xb),bc[200]=\"INY\";cc[200]=i();bc[201]=\"CMP\",cc[201]=B(Kb),bc[202]=\"DEX\",cc[202]=f(),bc[203]=\"uSBX\",cc[203]=R(Kb),bc[204]=\"CPY\",cc[204]=D(Mb),bc[205]=\"CMP\",cc[205]=B(Mb),bc[206]=\"DEC\",cc[206]=_(Yb),bc[207]=\"uDCP\",cc[207]=ea(Yb),bc[208]=\"BNE\",cc[208]=ua(Za,0),bc[209]=\"CMP\",cc[209]=B(Qb),bc[210]=\"uKIL\",cc[210]=w(),bc[211]=\"uDCP\",cc[211]=ea(ac),bc[212]=\"uNOP\",cc[212]=x(Pb(Va)),bc[213]=\"CMP\",cc[213]=B(Pb(Va)),bc[214]=\"DEC\",cc[214]=_(Zb(Va)),bc[215]=\"uDCP\",cc[215]=ea(Zb(Va)),bc[216]=\"CLD\",cc[216]=c(),bc[217]=\"CMP\",cc[217]=B(Ob(Wa)),bc[218]=\"uNOP\",cc[218]=x(Jb),bc[219]=\"uDCP\",cc[219]=ea($b(Wa)),bc[220]=\"uNOP\",cc[220]=x(Ob(Va)),bc[221]=\"CMP\",cc[221]=B(Ob(Va)),bc[222]=\"DEC\",cc[222]=_($b(Va)),bc[223]=\"uDCP\",cc[223]=ea($b(Va)),bc[224]=\"CPX\",cc[224]=C(Kb),bc[225]=\"SBC\",cc[225]=J(Nb),bc[226]=\"uNOP\",cc[226]=x(Kb),bc[227]=\"uISB\",cc[227]=fa(_b),bc[228]=\"CPX\",cc[228]=C(Lb),bc[229]=\"SBC\",cc[229]=J(Lb),bc[230]=\"INC\",cc[230]=aa(Xb),bc[231]=\"uISB\",cc[231]=fa(Xb),bc[232]=\"newINX\",cc[232]=h(),bc[233]=\"SBC\",cc[233]=J(Kb),bc[234]=\"NOP\",cc[234]=k(),bc[235]=\"SBC\",cc[235]=J(Kb),bc[236]=\"CPX\",cc[236]=C(Mb),bc[237]=\"SBC\",cc[237]=J(Mb),bc[238]=\"INC\",cc[238]=aa(Yb),bc[239]=\"uISB\",cc[239]=fa(Yb),bc[240]=\"BEQ\",cc[240]=ua(Za,1),bc[241]=\"SBC\",cc[241]=J(Qb),bc[242]=\"uKIL\",cc[242]=w(),bc[243]=\"uISB\",cc[243]=fa(ac),bc[244]=\"uNOP\",cc[244]=x(Pb(Va)),bc[245]=\"SBC\",cc[245]=J(Pb(Va)),bc[246]=\"INC\",cc[246]=aa(Zb(Va)),bc[247]=\"uISB\",cc[247]=fa(Zb(Va)),bc[248]=\"SED\",cc[248]=o(),bc[249]=\"SBC\",cc[249]=J(Ob(Wa)),bc[250]=\"uNOP\",cc[250]=x(Jb),bc[251]=\"uISB\",cc[251]=fa($b(Wa)),bc[252]=\"uNOP\",cc[252]=x(Ob(Va)),bc[253]=\"SBC\",cc[253]=J(Ob(Va)),bc[254]=\"INC\",cc[254]=aa($b(Va)),bc[255]=\"uISB\",cc[255]=fa($b(Va)),this.saveState=function(){return{PC:za,A:Ba,X:Ca,Y:Da,SP:Aa,N:Ea,V:Fa,D:Ga,I:Ha,Z:Ia,C:Ja,T:Ka,o:La,R:0|ya,d:Ma,AD:Na,BA:Oa,BC:0|Pa,IA:Qa,bo:Ra,boa:Sa}},this.loadState=function(a){za=a.PC,Ba=a.A,Ca=a.X,Da=a.Y,Aa=a.SP,Ea=a.N,Fa=a.V,Ga=a.D,Ha=a.I,Ia=a.Z,Ja=a.C,Ka=a.T,La=a.o,ya=!!a.R,Ma=a.d,Na=a.AD,Oa=a.BA,Pa=!!a.BC,Qa=a.IA,Ra=a.bo,Sa=a.boa,xa=cc[La]},this.toString=function(){return\"CPU  PC: \"+za.toString(16)+\"  op: \"+La.toString()+\"  T: \"+Ka+\"  data: \"+Ma+\"\\n A: \"+Ba.toString(16)+\"  X: \"+Ca.toString(16)+\"  Y: \"+Da.toString(16)+\"  SP: \"+Aa.toString(16)+\"     N\"+Ea+\"  V\"+Fa+\"  D\"+Ga+\"  I\"+Ha+\"  Z\"+Ia+\"  C\"+Ja+\"  \"},this.breakpoint=function(a){if(jt.Util.log(a),this.trace){var b=\"CPU Breakpoint!  \"+(a?\"(\"+a+\")\":\"\")+\"\\n\\n\"+this.toString();jt.Util.message(b)}},this.runCycles=function(a){for(var b=performance.now(),c=0;c<a;c++)this.clockPulse();var d=performance.now();jt.Util.message(\"Done running \"+a+\" cycles in \"+(d-b)+\" ms.\")}},jt.Ram=function(){\"use strict\";function a(){for(var a=b.length-1;a>=0;a--)b[a]=256*Math.random()|0}this.powerOn=function(){},this.powerOff=function(){},this.read=function(a){return b[a&c]},this.write=function(a,d){b[a&c]=d},this.powerFry=function(){for(var a=1-f+2*Math.random()*f,c=a*d,g=0;g<c;g++)b[128*Math.random()|0]&=256*Math.random()|0;var h=a*e;for(g=0;g<h;g++)b[128*Math.random()|0]|=1<<(8*Math.random()|0)},this.saveState=function(){return{b:jt.Util.storeInt8BitArrayToStringBase64(b)}},this.loadState=function(a){b=jt.Util.restoreStringBase64ToInt8BitArray(a.b,b)};var b=new Array(128),c=127,d=120,e=25,f=.3;a()},jt.Pia=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.clockPulse=function(){--h<=0&&a()},this.connectBus=function(a){g=a},this.read=function(a){var b=a&u;return 4===b||6===b?(c(),o):0===b?k:2===b?m:1===b?l:3===b?n:5===b||7===b?p:0},this.write=function(a,c){var f=a&u;return 4===f?(q=c,void b(c,1)):5===f?(r=c,void b(c,8)):6===f?(s=c,void b(c,64)):7===f?(t=c,void b(c,1024)):2===f?void d(c):3===f?(n=c,void e(\">>>> Ineffective Write to PIA SWBCNT: \"+c)):0===f?void e(\">>>> Unsupported Write to PIA SWCHA: \"+c):1===f?void e(\">>>> Unsupported Write to PIA SWACNT \"+c):0};var a=function(){--o<0?(p|=192,o=255,h=i=1):h=i},b=function(b,c){o=b,p&=63,h=i=j=c,a()},c=function(){p&=191,1===i&&(h=i=j)},d=function(a){m=203&m|34&a},e=function(a){self.debug&&jt.Util.log(a)},f=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case f.JOY0_UP:return void(b?k&=239:k|=16);case f.JOY0_DOWN:return void(b?k&=223:k|=32);case f.PADDLE1_BUTTON:case f.JOY0_LEFT:return void(b?k&=191:k|=64);case f.PADDLE0_BUTTON:case f.JOY0_RIGHT:return void(b?k&=127:k|=128);case f.JOY1_UP:return void(b?k&=254:k|=1);case f.JOY1_DOWN:return void(b?k&=253:k|=2);case f.JOY1_LEFT:return void(b?k&=251:k|=4);case f.JOY1_RIGHT:return void(b?k&=247:k|=8);case f.RESET:return void(b?m&=254:m|=1);case f.SELECT:return void(b?m&=253:m|=2)}if(b)switch(a){case f.BLACK_WHITE:return 0==(8&m)?m|=8:m&=247,void g.getTia().getVideoOutput().showOSD(0!=(8&m)?\"COLOR\":\"B/W\",!0);case f.DIFFICULTY0:return 0==(64&m)?m|=64:m&=191,void g.getTia().getVideoOutput().showOSD(0!=(64&m)?\"P1 Expert\":\"P1 Novice\",!0);case f.DIFFICULTY1:return 0==(128&m)?m|=128:m&=127,void g.getTia().getVideoOutput().showOSD(0!=(128&m)?\"P2 Expert\":\"P2 Novice\",!0)}},this.controlsStateReport=function(a){a[f.BLACK_WHITE]=0===(8&m),a[f.DIFFICULTY0]=0!==(64&m),a[f.DIFFICULTY1]=0!==(128&m),a[f.SELECT]=0===(2&m),a[f.RESET]=0===(1&m)},this.saveState=function(){return{t:h,c:i,l:j,SA:k,SAC:l,SB:m,SBC:n,IT:o,IS:p,T1:q,T8:r,T6:s,T2:t}},this.loadState=function(a){h=a.t,i=a.c,j=a.l,l=a.SAC,m=a.SB,n=a.SBC,o=a.IT,p=a.IS,q=a.T1,r=a.T8,s=a.T6,t=a.T2},this.debug=!1;var g,h=1024,i=1024,j=1024,k=255,l=0,m=11,n=0,o=256*Math.random()|0,p=0,q=0,r=0,s=0,t=0,u=7},function(){\"use strict\";for(var a=[0,4210752,7105644,9474192,11579568,13158600,14474460,16053492,17476,1074276,2393220,3448992,4241592,5296336,6088936,6880508,10352,1328260,2645144,3963052,5016764,6070476,6862044,7915756,6276,1586328,3166380,4745408,6062288,7378144,8431852,9747708,136,2105500,3947696,5789888,7368912,8947936,10526956,11842812,6029432,7610508,8928416,10246320,11563200,12616912,13671644,14725356,7864392,9445472,10763384,12081292,13398176,14451892,15506628,16560340,8650772,9969712,11287628,12605544,13660284,14715028,15507624,16561340,8912896,10231836,11550776,12606544,13661288,14716028,15508624,16562340,8132608,9451548,11031608,12349520,13404264,14457980,15512720,16566436,6040576,7883804,9463864,11306064,12622952,13939836,15256720,16572580,2898944,4742172,6585400,8428624,9745512,11325564,12641424,13958308,15360,2120736,4226112,6069340,7648372,9228428,10806436,12123320,14356,1858612,3701840,5281900,6861956,8178844,9495732,10812616,12332,1855564,3436648,5016708,6596764,7913652,8967372,10284256,10308,1591396,3172484,4490400,5807288,7124176,8178920,9232636],b=[0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,22656,2125972,3966120,5807292,7384268,8700124,10277100,11591932,23620,2127964,3969140,5811340,7389344,8705200,10283204,11599060,13424,2117768,3958944,5801140,7379144,8695004,10273004,11588860,1336320,3440672,5281852,7123032,8701040,10279044,11856028,13171888,1310832,3416200,5258400,7100596,8679624,10257628,11836652,13152508,6052864,7631904,9210940,10789976,12105840,13158532,14474396,15527088,6029424,7610500,8928404,10246312,11563188,12616900,13671632,14725344,7355392,8935452,10515512,11832400,13149288,14465148,15518864,16572580,7340120,8921196,10501248,11819156,13136036,14451892,15506628,16560340,7348224,8928284,10508344,11826256,13142120,14459004,15512720,16566436,8388668,9707604,11025516,12343424,13398164,14451880,15506616,16560328,8912896,10231840,11549756,12605528,13660272,14713988,15506588,16560304,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113],c=new Uint32Array(256),d=new Uint32Array(256),e=0,f=a.length;e<f;e++)c[2*e]=c[2*e+1]=a[e]+4278190080,\nd[2*e]=d[2*e+1]=b[e]+4278190080;a=b=void 0,jt.TiaPalettes={NTSC:c,PAL:d}}(),jt.TiaAudio=function(){\"use strict\";function a(){e||(e=new jt.AudioSignal(\"TiaAudio\",c,k,j)),d.connectAudioSignal(e)}function b(){e&&d.disconnectAudioSignal(e)}var c=this;this.connectAudioSocket=function(a){d=a},this.cartridgeInserted=function(a){f=a&&a.needsAudioClock()?a:null},this.audioClockPulse=function(){d.audioClockPulse()},this.getChannel0=function(){return h},this.getChannel1=function(){return i},this.powerOn=function(){this.reset(),a()},this.powerOff=function(){b()},this.reset=function(){h.setVolume(0),i.setVolume(0),g=0},this.nextSample=function(){f&&f.audioClockPulse();var a=h.nextSample()-i.nextSample();return a!==g&&(a=(9*a+g)/10,g=a),a};var d,e,f,g=0,h=new jt.TiaAudioChannel,i=new jt.TiaAudioChannel,j=.4,k=31440},jt.TiaAudioChannel=function(){\"use strict\";this.nextSample=function(){return--s<=0&&(s+=r,t=o()),1===t?p:0},this.setVolume=function(a){p=a/E},this.setDivider=function(a){r!==a&&(s=s/r*a,r=a)},this.setControl=function(b){q!==b&&(q=b,o=0===b||11===b?a:1===b?c:2===b?k:3===b?l:4===b||5===b?f:6===b||10===b?j:7===b||9===b?d:8===b?e:12===b||13===b?h:14===b?m:15===b?n:a)};var a=function(){return 1},b=function(){return z[y]},c=function(){return 15===++y&&(y=0),z[y]},d=function(){return 31===++A&&(A=0),B[A]},e=function(){var a=1&x,b=1&(x>>4^a);return x>>>=1,0===b?x&=255:x|=256,a},f=function(){return 1===r?1:u=u?0:1},g=function(){return v},h=function(){return 0===--w&&(w=3,v=v?0:1),v},i=function(){return D[C]},j=function(){return 31===++C&&(C=0),D[C]},k=function(){return i()!==j()?c():b()},l=function(){return d()?c():b()},m=function(){return i()!=j()?h():g()},n=function(){return d()?h():g()},o=a,p=0,q=0,r=1,s=1,t=0,u=1,v=1,w=3,x=511,y=14,z=[1,1,1,1,0,0,0,1,0,0,1,1,0,1,0],A=30,B=[1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0],C=30,D=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],E=15},jt.Tia=function(pCpu,pPia,audioSocket){\"use strict\";function init(){generateObjectsLineSprites(),generateObjectsCopiesOffsets()}function renderLineTo(a){var b,c=a>LINE_WIDTH?LINE_WIDTH:a;if(vBlankOn)for(var d=renderClock;d<c;++d)linePixels[d]=vBlankColor;else{for(var e=collisions,f=renderClock-HBLANK_DURATION,g=c-HBLANK_DURATION;f<g;++f){var h=0,i=collisionsPossible;playfieldPriority&&(playfieldEnabled&&(1&(f<80?playfieldPatternL>>(f>>2):playfieldPatternR>>(f-80>>2))?h=playfieldColor:i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),player0Enabled&&(b=f-player0Pixel,b<0&&(b+=160),playerLineSprites[player0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player0Color):i&=P0C),missile0Enabled&&(b=f-missile0Pixel,b<0&&(b+=160),missileBallLineSprites[missile0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile0Color):i&=M0C),player1Enabled&&(b=f-player1Pixel,b<0&&(b+=160),playerLineSprites[player1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player1Color):i&=P1C),missile1Enabled&&(b=f-missile1Pixel,b<0&&(b+=160),missileBallLineSprites[missile1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile1Color):i&=M1C),playfieldPriority||(playfieldEnabled&&(f<80?playfieldPatternL>>(f>>2)&1?h||(h=playfieldLeftColor):i&=PFC:playfieldPatternR>>(f-80>>2)&1?h||(h=playfieldRightColor):i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),linePixels[f+HBLANK_DURATION]=h||playfieldBackground,e|=i}debugNoCollisions||(collisions=e)}}function changeAt(a){vBlankOn||(a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock)}function changeAtClock(){changeAt(clock)}function changeAtClockPlus(a){changeAt(clock+a)}function changePlayfieldAtClock(){if(debug&&debugPixel(DEBUG_PF_GR_COLOR),clock<renderClock-1)return changeAtClock();var a=3&clock;changeAtClockPlus(a<3?4-a:5)}function changeVBlankAtClockPlus1(){var a=clock+1;a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock}function updateToClock(){vBlankOn||clock>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(clock),renderClock=clock)}function augmentCollisionsPossible(){collisionsPossible=65534,player0Enabled||(collisionsPossible&=P0C),player1Enabled||(collisionsPossible&=P1C),missile0Enabled||(collisionsPossible&=M0C),missile1Enabled||(collisionsPossible&=M1C),playfieldEnabled||(collisionsPossible&=PFC),ballEnabled||(collisionsPossible&=BLC)}function playfieldUpdateSprite(){playfieldPatternL=PF2<<12|jt.Util.reverseInt8(PF1)<<4|(240&PF0)>>4,playfieldUpdateSpriteR()}function playfieldUpdateSpriteR(){playfieldPatternR=playfieldReflected?jt.Util.reverseInt8(PF0)<<16|PF1<<8|jt.Util.reverseInt8(PF2):playfieldPatternL,0!==playfieldPatternL||0!==playfieldPatternR?(playfieldEnabled=!0,augmentCollisionsPossible()):(playfieldEnabled=!1,collisionsPossible&=PFC)}function ballSetEnabled(a){a?(ballEnabled=!0,augmentCollisionsPossible()):(ballEnabled=!1,collisionsPossible&=BLC)}function player0SetShape(a){if(NUSIZ0!==a){var b=NUSIZ0^a,c=NUSIZ0;NUSIZ0=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player0Alt){var f=e-player0Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];if(h!==g)if(player0Enabled&&changeAtClockPlus(2),player0Alt=player0Pixel>=80?1:2,player0LineSpritePointer+=20,player0AltFrom=f,player0AltLength=playerCopyLengthPerShape[d],192&g)player0AltCopyOffset=191&g;else if(clock<HBLANK_DURATION&&hMoveHitBlank)player0AltCopyOffset=128;else{var i=playerPixelSizePerShape[d];player0AltCopyOffset=playerScanStartPerShape[d]+g*i+(1&f),player0AltLength-=(192&h?0:h)*i}}player0UpdateSprite(2)}if(55&b){if(!missile0Alt&&(f=e-missile0Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],h=missileScanOffsetsShape[160*((48&a)>>1|d)+f],h!==g)){missile0Enabled&&changeAtClockPlus(2),missile0Alt=missile0Pixel>=80?1:2,missile0LineSpritePointer+=20,missile0AltFrom=f;var j=(48&a)>>4;missile0AltLength=4+(1<<j),192&g?missile0AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile0AltCopyOffset=128:(missile0AltCopyOffset=4+(g<<j)+(1&f),missile0AltLength-=(192&h?0:h)<<j)}missile0UpdateSprite(2)}}}function player0SetSprite(a){debug&&debugPixel(DEBUG_P0_GR_COLOR),GRP0d!==a&&(GRP0d=a,VDELP0||player0UpdateSprite(1)),GRP1!==GRP1d&&(GRP1=GRP1d,VDELP1&&player1UpdateSprite(1))}function player0UpdateSprite(a){var b=VDELP0?GRP0:GRP0d;if(b){var c=((REFP0<<11|b<<3|7&NUSIZ0)<<6)+(player0Alt?20:0);player0Enabled&&player0LineSpritePointer===c||(changeAtClockPlus(a),player0LineSpritePointer=c,player0Alt&&player0DefineAlt()),player0Enabled||(player0Enabled=!0,augmentCollisionsPossible())}else player0Enabled&&(changeAtClockPlus(a),player0Enabled=!1,collisionsPossible&=P0C)}function player1SetShape(a){if(NUSIZ1!==a){var b=NUSIZ1^a,c=NUSIZ1;NUSIZ1=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player1Alt){var f=e-player1Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];h!==g&&(player1Enabled&&changeAtClockPlus(2),player1Alt=player1Pixel>=80?1:2,player1LineSpritePointer+=40,player1AltFrom=f,player1AltLength=playerCopyLengthPerShape[d],192&g?player1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?player1AltCopyOffset=128:(player1AltCopyOffset=playerScanStartPerShape[d]+g*playerPixelSizePerShape[d]+(1&f),player1AltLength-=(192&h?0:h)*playerPixelSizePerShape[d]))}player1UpdateSprite(2)}if(55&b){if(!missile1Alt&&(f=e-missile1Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],h=missileScanOffsetsShape[160*((48&a)>>1|d)+f],h!==g)){missile1Enabled&&changeAtClockPlus(2),missile1Alt=missile1Pixel>=80?1:2,missile1LineSpritePointer+=40,missile1AltFrom=f;var i=(48&a)>>4;\nmissile1AltLength=4+(1<<i),192&g?missile1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile1AltCopyOffset=128:(missile1AltCopyOffset=4+(g<<i)+(1&f),missile1AltLength-=(192&h?0:h)<<i)}missile1UpdateSprite(2)}}}function player1SetSprite(a){debug&&debugPixel(DEBUG_P1_GR_COLOR),GRP1d!==a&&(GRP1d=a,VDELP1||player1UpdateSprite(1)),GRP0!==GRP0d&&(GRP0=GRP0d,VDELP0&&player0UpdateSprite(1)),ENABL!==ENABLd&&(ENABL=ENABLd,VDELBL&&changeAtClockPlus(1),ballSetEnabled(ENABL))}function player1UpdateSprite(a){var b=VDELP1?GRP1:GRP1d;if(b){var c=((REFP1<<11|b<<3|7&NUSIZ1)<<6)+(player1Alt?40:0);player1Enabled&&player1LineSpritePointer===c||(changeAtClockPlus(a),player1LineSpritePointer=c,player1Alt&&player1DefineAlt()),player1Enabled||(player1Enabled=!0,augmentCollisionsPossible())}else player1Enabled&&(changeAtClockPlus(a),player1Enabled=!1,collisionsPossible&=P1C)}function missile0UpdateSprite(a){var b=(((48&NUSIZ0)>>1|7&NUSIZ0)<<6)+(missile0Alt?20:0);missile0LineSpritePointer!==b&&(missile0Enabled?(changeAtClockPlus(a),missile0LineSpritePointer=b,missile0Alt&&missile0DefineAlt()):missile0LineSpritePointer=b)}function missile0SetEnabled(a){a?(missile0Enabled=!0,augmentCollisionsPossible(),missile0Alt&&missile0DefineAlt()):(missile0Enabled=!1,collisionsPossible&=M0C)}function missile0SetResetToPlayer(a){RESMP0!==(2&a)&&(ENAM0?(changeAtClock(),missile0SetEnabled(!(RESMP0=2&a))):RESMP0=2&a,RESMP0||(missile0Pixel=player0Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ0],missile0Pixel>=160&&(missile0Pixel-=160)))}function missile1UpdateSprite(a){var b=(((48&NUSIZ1)>>1|7&NUSIZ1)<<6)+(missile1Alt?40:0);missile1LineSpritePointer!==b&&(missile1Enabled?(changeAtClockPlus(a),missile1LineSpritePointer=b,missile1Alt&&missile1DefineAlt()):missile1LineSpritePointer=b)}function missile1SetEnabled(a){a?(missile1Enabled=!0,augmentCollisionsPossible(),missile1Alt&&missile1DefineAlt()):(missile1Enabled=!1,collisionsPossible&=M1C)}function missile1SetResetToPlayer(a){RESMP1!==(2&a)&&(ENAM1?(changeAtClock(),missile1SetEnabled(!(RESMP1=2&a))):RESMP1=2&a,RESMP1||(missile1Pixel=player1Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ1],missile1Pixel>=160&&(missile1Pixel-=160)))}function player0DefineAlt(){var a=player0AltFrom<<16|player0AltLength<<8|player0AltCopyOffset,b=player0LineSpritePointer-20>>6;if(player0AltControl[b]!==a){for(var c=player0LineSpritePointer-20,d=0;d<20;++d)playerLineSprites[player0LineSpritePointer+d]=playerLineSprites[c+d];var e=player0AltFrom;if(128&player0AltCopyOffset)for(var f=0;f<player0AltLength;++f)playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=player0AltCopyOffset,h=player0AltCopyOffset+player0AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player0LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player0AltControl[b]=a}}function player1DefineAlt(){var a=player1AltFrom<<16|player1AltLength<<8|player1AltCopyOffset,b=player1LineSpritePointer-40>>6;if(player1AltControl[b]!==a){for(var c=player1LineSpritePointer-40,d=0;d<20;++d)playerLineSprites[player1LineSpritePointer+d]=playerLineSprites[c+d];var e=player1AltFrom;if(128&player1AltCopyOffset)for(var f=0;f<player1AltLength;++f)playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=player1AltCopyOffset,h=player1AltCopyOffset+player1AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player1LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player1AltControl[b]=a}}function missile0DefineAlt(){var a=missile0AltFrom<<16|missile0AltLength<<8|missile0AltCopyOffset,b=missile0LineSpritePointer-20>>6;if(missile0AltControl[b]!==a){for(var c=missile0LineSpritePointer-20,d=0;d<20;++d)missileBallLineSprites[missile0LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile0AltFrom;if(128&missile0AltCopyOffset)for(var f=0;f<missile0AltLength;++f)missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=missile0AltCopyOffset,h=missile0AltCopyOffset+missile0AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile0LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile0AltControl[b]=a}}function missile1DefineAlt(){var a=missile1AltFrom<<16|missile1AltLength<<8|missile1AltCopyOffset,b=missile1LineSpritePointer-40>>6;if(missile1AltControl[b]!==a){for(var c=missile1LineSpritePointer-40,d=0;d<20;++d)missileBallLineSprites[missile1LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile1AltFrom;if(128&missile1AltCopyOffset)for(var f=0;f<missile1AltLength;++f)missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=missile1AltCopyOffset,h=missile1AltCopyOffset+missile1AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile1LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile1AltControl[b]=a}}function getRESxPixel(){if(clock>=HBLANK_DURATION+(hMoveHitBlank?7:0))return clock-HBLANK_DURATION;if(hMoveHitBlank){if(clock>=HBLANK_DURATION)return-6;var a=clock-hMoveHitClock-4>>2;return a>8?-6:a>1?-(a-2):-(158+a)}return-158}function checkLateHMOVE(){hMoveLateHit?(hMoveLateHit=!1,hMoveHitBlank=hMoveLateHitBlank,performHMOVE()):hMoveHitBlank=!1}function updateExtendedHBLANK(){hMoveHitBlank!==(linePixels[HBLANK_DURATION]===hBlankColor)&&(hMoveHitBlank?linePixels[HBLANK_DURATION]=linePixels[HBLANK_DURATION+1]=linePixels[HBLANK_DURATION+2]=linePixels[HBLANK_DURATION+3]=linePixels[HBLANK_DURATION+4]=linePixels[HBLANK_DURATION+5]=linePixels[HBLANK_DURATION+6]=linePixels[HBLANK_DURATION+7]=hBlankColor:changeClock=HBLANK_DURATION),hMoveHitBlank&&(renderClock=HBLANK_DURATION+8)}function endObjectsAltStatusMidLine(){1===player0Alt&&(player0Enabled&&changeAtClock(),player0Alt=0,player0LineSpritePointer-=20),1===player1Alt&&(player1Enabled&&changeAtClock(),player1Alt=0,player1LineSpritePointer-=40),1===missile0Alt&&(missile0Enabled&&changeAtClock(),missile0Alt=0,missile0LineSpritePointer-=20),1===missile1Alt&&(missile1Enabled&&changeAtClock(),missile1Alt=0,missile1LineSpritePointer-=40)}function endObjectsAltStatusEndOfLine(){2===player0Alt&&(player0Alt=0,player0LineSpritePointer-=20),2===player1Alt&&(player1Alt=0,player1LineSpritePointer-=40),2===missile0Alt&&(missile0Alt=0,missile0LineSpritePointer-=20),2===missile1Alt&&(missile1Alt=0,missile1LineSpritePointer-=40)}function vSyncSet(a){debug?(debugPixel(VSYNC_COLOR),changeAtClock(),vSyncOn=0!==(2&a),vBlankColor=vSyncOn?VSYNC_COLOR:DEBUG_VBLANK_COLOR):vSyncOn=0!==(2&a)}function generateObjectsLineSprites(){function a(a,b,c){for(var d=0;d<8;++d)a[c+d]=b>>d&1}function b(a,b,c){for(var d=0;d<8;++d)a[c+2*d]=a[c+2*d+1]=b>>d&1}function c(a,b,c){for(var d=0;d<8;++d)a[c+4*d]=a[c+4*d+1]=a[c+4*d+2]=a[c+4*d+3]=b>>d&1}function d(a,b,c,d,e){for(var f=((a<<11|b<<3|c)<<6)+20*d,g=0;g<20;++g)for(var h=0;h<8;++h)e[8*g+h]&&(playerLineSprites[f+g]|=1<<h)}function e(a,b,c,d){for(var e=((a<<3|b)<<6)+20*c,f=0;f<20;++f)for(var g=0;g<8;++g)d[8*f+g]&&(missileBallLineSprites[e+f]|=1<<g)}for(var f=new Uint8Array(160),g=0;g<=1;++g)for(var h=0;h<256;++h){var i=g?h:jt.Util.reverseInt8(h);a(f,i,5),d(g,h,0,0,f),a(f,i,21),d(g,h,1,0,f),a(f,i,37),d(g,h,3,0,f),a(f,0,21),d(g,h,2,0,f),a(f,i,69),d(g,h,6,0,f),a(f,0,37),d(g,h,4,0,f),a(f,0,69),f[5]=0,b(f,i,6),d(g,h,5,0,f),c(f,i,6),d(g,h,7,0,f),c(f,0,6)}jt.Util.arrayFill(f,0);for(var j=0;j<4;++j)i=(1<<(1<<j))-1,\na(f,i,4),e(j,0,0,f),e(j,5,0,f),e(j,7,0,f),a(f,i,20),e(j,1,0,f),a(f,i,36),e(j,3,0,f),a(f,0,20),e(j,2,0,f),a(f,i,68),e(j,6,0,f),a(f,0,36),e(j,4,0,f),a(f,0,4),a(f,0,68)}function generateObjectsCopiesOffsets(){var a=new Uint8Array(40);a[0]=0,a[1]=1,a[2]=2,a[3]=3,jt.Util.arrayFill(playerCopyOffsetsReset,128),jt.Util.arrayFill(playerScanOffsetsShape,128);for(var b=0;b<13;++b){var c=b-a[b];playerCopyOffsetsReset[0+b]=c,playerCopyOffsetsReset[160+b]=c,playerCopyOffsetsReset[160+b+16]=c,playerCopyOffsetsReset[320+b]=c,playerCopyOffsetsReset[320+b+32]=c,playerCopyOffsetsReset[480+b]=c,playerCopyOffsetsReset[480+b+16]=c,playerCopyOffsetsReset[480+b+32]=c,playerCopyOffsetsReset[640+b]=c,playerCopyOffsetsReset[640+b+64]=c,playerCopyOffsetsReset[960+b]=c,playerCopyOffsetsReset[960+b+32]=c,playerCopyOffsetsReset[960+b+64]=c,c=b<5?64|b:b-5,playerScanOffsetsShape[0+b]=c,playerScanOffsetsShape[160+b]=c,playerScanOffsetsShape[160+b+16]=c,playerScanOffsetsShape[320+b]=c,playerScanOffsetsShape[320+b+32]=c,playerScanOffsetsShape[480+b]=c,playerScanOffsetsShape[480+b+16]=c,playerScanOffsetsShape[480+b+32]=c,playerScanOffsetsShape[640+b]=c,playerScanOffsetsShape[640+b+64]=c,playerScanOffsetsShape[960+b]=c,playerScanOffsetsShape[960+b+32]=c,playerScanOffsetsShape[960+b+64]=c}for(b=0;b<22;b++)c=b-a[b],playerCopyOffsetsReset[800+b]=c,c=b<6?64|b:b-6>>1,playerScanOffsetsShape[800+b]=c;for(b=0;b<38;b++)c=b-a[b],playerCopyOffsetsReset[1120+b]=c,c=b<6?64|b:b-6>>2,playerScanOffsetsShape[1120+b]=c;jt.Util.arrayFill(missileCopyOffsetsReset,128),jt.Util.arrayFill(missileScanOffsetsShape,128);for(var d=0;d<=3;++d){var e=4+(1<<d);for(b=0;b<e;++b)c=b-a[b],missileCopyOffsetsReset[8*d*160+0+b]=c,missileCopyOffsetsReset[8*d*160+160+b]=c,missileCopyOffsetsReset[8*d+160+b+16]=c,missileCopyOffsetsReset[8*d*160+320+b]=c,missileCopyOffsetsReset[8*d+320+b+32]=c,missileCopyOffsetsReset[8*d*160+480+b]=c,missileCopyOffsetsReset[8*d+480+b+16]=c,missileCopyOffsetsReset[8*d*160+480+b+32]=c,missileCopyOffsetsReset[8*d*160+640+b]=c,missileCopyOffsetsReset[8*d+640+b+64]=c,missileCopyOffsetsReset[8*d*160+800+b]=c,missileCopyOffsetsReset[8*d*160+960+b]=c,missileCopyOffsetsReset[8*d+960+b+32]=c,missileCopyOffsetsReset[8*d*160+960+b+64]=c,missileCopyOffsetsReset[8*d*160+1120+b]=c,c=b<4?64|b:b-4>>d,missileScanOffsetsShape[8*d*160+0+b]=c,missileScanOffsetsShape[8*d*160+160+b]=c,missileScanOffsetsShape[8*d+160+b+16]=c,missileScanOffsetsShape[8*d*160+320+b]=c,missileScanOffsetsShape[8*d+320+b+32]=c,missileScanOffsetsShape[8*d*160+480+b]=c,missileScanOffsetsShape[8*d+480+b+16]=c,missileScanOffsetsShape[8*d*160+480+b+32]=c,missileScanOffsetsShape[8*d*160+640+b]=c,missileScanOffsetsShape[8*d+640+b+64]=c,missileScanOffsetsShape[8*d*160+800+b]=c,missileScanOffsetsShape[8*d*160+960+b]=c,missileScanOffsetsShape[8*d+960+b+32]=c,missileScanOffsetsShape[8*d*160+960+b+64]=c,missileScanOffsetsShape[8*d*160+1120+b]=c}}var self=this;this.powerOn=function(){jt.Util.arrayFill(linePixels,VBLANK_COLOR),jt.Util.arrayFill(debugPixels,0),audioSignal.getChannel0().setVolume(0),audioSignal.getChannel1().setVolume(0),initLatchesAtPowerOn(),hMoveLateHit=!1,changeClock=changeClockPrevLine=-1,audioSignal.powerOn(),powerOn=!0},this.powerOff=function(){powerOn=!1,videoSignal.signalOff(),audioSignal.powerOff()},this.frame=function(){do{clock=0,changeClock=-1,renderClock=HBLANK_DURATION,debug&&(debugLevel>=4?jt.Util.arrayFill(linePixels,4278190080):debugLevel>=2&&debugLevel<4&&(changeClock=0)),checkLateHMOVE(),bus.clockPulse(),cpu.setRDY(!0);for(var a=0;a<22;++a)clock+=3,bus.clockPulse();updateExtendedHBLANK();for(var b=0;b<27;++b)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),endObjectsAltStatusMidLine();for(var c=0;c<26;++c)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),finishLine()}while(!videoSignal.nextLine(linePixels,vSyncOn));videoSignal.finishFrame()},this.connectBus=function(a){bus=a},this.getVideoOutput=function(){return videoSignal},this.getAudioOutput=function(){return audioSignal},this.setVideoStandard=function(a){videoSignal.setVideoStandard(a),palette=jt.TiaPalettes[a.name]},this.debug=function(a){debugLevel=a>4?0:a,debug=0!==debugLevel,videoSignal.showOSD(debug?\"Debug Level \"+debugLevel:\"Debug OFF\",!0),pia.debug=debug,debug?debugSetColors():debugRestoreColors()},this.getDebugNoCollisions=function(){return debugNoCollisions},this.read=function(a){switch(a&READ_ADDRESS_MASK){case 0:return updateToClock(),(1024&collisions)>>3|(16384&collisions)>>8;case 1:return updateToClock(),(8192&collisions)>>6|(512&collisions)>>3;case 2:return updateToClock(),(4096&collisions)>>5|(2048&collisions)>>5;case 3:return updateToClock(),(256&collisions)>>1|(128&collisions)>>1;case 4:return updateToClock(),(32&collisions)<<2|(16&collisions)<<2;case 5:return updateToClock(),(8&collisions)<<4|(4&collisions)<<4;case 6:return updateToClock(),(2&collisions)<<6;case 7:return updateToClock(),(32768&collisions)>>8|64&collisions;case 8:return INPT0;case 9:return INPT1;case 10:return INPT2;case 11:return INPT3;case 12:return INPT4;case 13:return INPT5;default:return 0}},this.write=function(a,b){switch(a&WRITE_ADDRESS_MASK){case 0:return void vSyncSet(b);case 1:return void vBlankSet(b);case 2:return cpu.setRDY(!1),void(debug&&debugPixel(DEBUG_WSYNC_COLOR));case 9:return void(COLUBK===b||debug||(changeAtClock(),COLUBK=b,playfieldBackground=palette[b]));case 13:return void(PF0!==(240&b)&&(changePlayfieldAtClock(),PF0=240&b,playfieldUpdateSprite()));case 14:return void(PF1!==b&&(changePlayfieldAtClock(),PF1=b,playfieldUpdateSprite()));case 15:return void(PF2!==b&&(changePlayfieldAtClock(),PF2=b,playfieldUpdateSprite()));case 8:return void(COLUPF===b||debug||((playfieldEnabled&&!playfieldScoreMode||ballEnabled)&&changeAtClock(),COLUPF=b,ballColor=palette[b],playfieldScoreMode||(playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)));case 10:return void(CTRLPF!==b&&playfieldSetShape(b));case 20:return void hitRESBL();case 31:return void(ENABLd!==(2&b)&&(ENABLd=2&b,VDELBL||(changeAtClock(),ballSetEnabled(ENABLd))));case 39:return void(VDELBL!==(1&b)&&(VDELBL=1&b,ENABL!==ENABLd&&(changeAtClock(),ballSetEnabled(VDELBL?ENABL:ENABLd))));case 4:return void player0SetShape(b);case 6:return void(COLUP0===b||debug||(COLUP0=b,(player0Enabled||missile0Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player0Color=missile0Color=palette[b],playfieldScoreMode&&(playfieldLeftColor=player0Color)));case 11:return void(REFP0!==(b>>3&1)&&(REFP0=b>>3&1,player0UpdateSprite(0)));case 16:return void hitRESP0();case 27:return void player0SetSprite(b);case 37:return void(VDELP0!==(1&b)&&(VDELP0=1&b,GRP0!==GRP0d&&player0UpdateSprite(0)));case 5:return void player1SetShape(b);case 7:return void(COLUP1===b||debug||(COLUP1=b,(player1Enabled||missile1Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player1Color=missile1Color=palette[b],playfieldScoreMode&&(playfieldRightColor=player1Color)));case 12:return void(REFP1!==(b>>3&1)&&(REFP1=b>>3&1,player1UpdateSprite(0)));case 17:return void hitRESP1();case 28:return void player1SetSprite(b);case 38:return void(VDELP1!==(1&b)&&(VDELP1=1&b,GRP1!==GRP1d&&player1UpdateSprite(0)));case 18:return void hitRESM0();case 29:return void(ENAM0!==(2&b)&&(ENAM0=2&b,RESMP0||(changeAtClock(),missile0SetEnabled(ENAM0))));case 40:return void missile0SetResetToPlayer(b);case 19:return void hitRESM1();case 30:return void(ENAM1!==(2&b)&&(ENAM1=2&b,RESMP1||(changeAtClock(),missile1SetEnabled(ENAM1))));case 41:return void missile1SetResetToPlayer(b);case 32:return void(HMP0=(b>127?-16:0)+(b>>4));case 33:return void(HMP1=(b>127?-16:0)+(b>>4));case 34:return void(HMM0=(b>127?-16:0)+(b>>4));case 35:return void(HMM1=(b>127?-16:0)+(b>>4));case 36:return void(HMBL=(b>127?-16:0)+(b>>4));case 42:return void hitHMOVE();case 43:return void(HMP0=HMP1=HMM0=HMM1=HMBL=0);case 44:return changeAtClock(),void(collisions=0);case 21:return void(AUDC0!==b&&(AUDC0=b,\naudioSignal.getChannel0().setControl(15&b)));case 22:return void(AUDC1!==b&&(AUDC1=b,audioSignal.getChannel1().setControl(15&b)));case 23:return void(AUDF0!==b&&(AUDF0=b,audioSignal.getChannel0().setDivider((31&b)+1)));case 24:return void(AUDF1!==b&&(AUDF1=b,audioSignal.getChannel1().setDivider((31&b)+1)));case 25:return void(AUDV0!==b&&(AUDV0=b,audioSignal.getChannel0().setVolume(15&b)));case 26:return void(AUDV1!==b&&(AUDV1=b,audioSignal.getChannel1().setVolume(15&b)))}};var finishLine=function(){changeClock>=0?(renderLineTo(LINE_WIDTH),changeClockPrevLine=changeClock):changeClockPrevLine>=0&&(renderLineTo(changeClockPrevLine),changeClockPrevLine=-1),endObjectsAltStatusEndOfLine(),paddle0Position>=0&&!paddleCapacitorsGrounded&&(INPT0<128&&++paddle0CapacitorCharge>=paddle0Position&&(INPT0|=128),INPT1<128&&++paddle1CapacitorCharge>=paddle1Position&&(INPT1|=128)),debugLevel>=1&&processDebugPixelsInLine()},playfieldSetShape=function(a){if(CTRLPF!==a){var b=7&a;b!==(7&CTRLPF)&&(playfieldEnabled&&changeAtClock(),b=0!==(1&a),playfieldReflected!==b&&(playfieldReflected=b,playfieldUpdateSpriteR()),b=0!==(2&a),playfieldScoreMode!==b&&(playfieldScoreMode=b,debug||(b?(playfieldLeftColor=player0Color,playfieldRightColor=player1Color):playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)),playfieldPriority=0!==(4&a)),b=48&a,b!==(48&CTRLPF)&&(ballEnabled&&changeAtClock(),ballLineSpritePointer=b>>1<<6),CTRLPF=a}},hitRESP0=function(){debug&&debugPixel(DEBUG_P0_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player0Pixel!==b){player0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player0Pixel;d<0&&(d+=160),player0Pixel=b;var e=7&NUSIZ0;if(player0Alt){if(d<=playerCopyLengthPerShape[e])return}else player0LineSpritePointer+=20;var f=c-b;f<-100&&(f+=160),player0Alt=b>=80?1:2,player0AltFrom=f>=0?f:160+f,player0AltLength=playerCopyLengthPerShape[e]-f,player0AltCopyOffset=playerCopyOffsetsReset[160*e+d],player0Enabled&&player0DefineAlt()}},hitRESP1=function(){debug&&debugPixel(DEBUG_P1_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player1Pixel!==b){player1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player1Pixel;d<0&&(d+=160),player1Pixel=b;var e=7&NUSIZ1;if(player1Alt){if(d<=playerCopyLengthPerShape[e])return}else player1LineSpritePointer+=40;var f=c-b;f<-100&&(f+=160),player1Alt=b>=80?1:2,player1AltFrom=f>=0?f:160+f,player1AltLength=playerCopyLengthPerShape[e]-f,player1AltCopyOffset=playerCopyOffsetsReset[160*e+d],player1Enabled&&player1DefineAlt()}},hitRESM0=function(){debug&&debugPixel(DEBUG_M0_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(missile0Pixel!==b){missile0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile0Pixel;if(d<0&&(d+=160),missile0Pixel=b,missile0Alt){if(d<=4+(1<<((48&NUSIZ0)>>4)))return}else missile0LineSpritePointer+=20;var e=c-b;e<-100&&(e+=160),missile0Alt=b>=80?1:2,missile0AltFrom=e>=0?e:160+e,missile0AltLength=4+(1<<((48&NUSIZ0)>>4))-e,missile0AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ0)>>1|7&NUSIZ0)+d],missile0Enabled&&missile0DefineAlt()}},hitRESM1=function(){debug&&debugPixel(DEBUG_M1_COLOR);var a=getRESxPixel(),b=a>=1?a:-a;if(missile1Pixel!==b){missile1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile1Pixel;if(d<0&&(d+=160),missile1Pixel=b,missile1Alt){if(d<=4+(1<<((48&NUSIZ1)>>4)))return}else missile1LineSpritePointer+=40;var e=c-b;e<-100&&(e+=160),missile1Alt=b>=80?1:2,missile1AltFrom=e>=0?e:160+e,missile1AltLength=4+(1<<((48&NUSIZ1)>>4))-e,missile1AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ1)>>1|7&NUSIZ1)+d],missile1Enabled&&missile1DefineAlt()}},hitRESBL=function(){debug&&debugPixel(DEBUG_BL_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;ballPixel!==b&&(ballEnabled&&changeAtClock(),ballPixel=b)},hitHMOVE=function(){return debug&&debugPixel(DEBUG_HMOVE_COLOR),clock<HBLANK_DURATION?(hMoveHitClock=clock,hMoveHitBlank=!0,void performHMOVE()):void(clock<219||(hMoveHitClock=160-clock,hMoveLateHit=!0,hMoveLateHitBlank=clock>=225))},performHMOVE=function(){var a,b=!1;a=hMoveHitBlank?HMP0:HMP0+8,0!==a&&(player0Pixel-=a,player0Pixel>=160?player0Pixel-=160:player0Pixel<0&&(player0Pixel+=160),player0Enabled&&(b=!0)),a=hMoveHitBlank?HMP1:HMP1+8,0!==a&&(player1Pixel-=a,player1Pixel>=160?player1Pixel-=160:player1Pixel<0&&(player1Pixel+=160),player1Enabled&&(b=!0)),a=hMoveHitBlank?HMM0:HMM0+8,0!==a&&(missile0Pixel-=a,missile0Pixel>=160?missile0Pixel-=160:missile0Pixel<0&&(missile0Pixel+=160),missile0Enabled&&(b=!0)),a=hMoveHitBlank?HMM1:HMM1+8,0!==a&&(missile1Pixel-=a,missile1Pixel>=160?missile1Pixel-=160:missile1Pixel<0&&(missile1Pixel+=160),missile1Enabled&&(b=!0)),a=hMoveHitBlank?HMBL:HMBL+8,0!==a&&(ballPixel-=a,ballPixel>=160?ballPixel-=160:ballPixel<0&&(ballPixel+=160),ballEnabled&&(b=!0)),b&&(changeClock=hMoveHitBlank?HBLANK_DURATION+8:HBLANK_DURATION)},vBlankSet=function(a){var b=0!==(2&a);vBlankOn!==b&&(changeVBlankAtClockPlus1(),vBlankOn=b),0!==(64&a)?controlsButtonsLatched=!0:(controlsButtonsLatched=!1,controlsJOY0ButtonPressed?INPT4&=127:INPT4|=128,controlsJOY1ButtonPressed?INPT5&=127:INPT5|=128),0!=(128&a)?(paddleCapacitorsGrounded=!0,paddle0CapacitorCharge=paddle1CapacitorCharge=0,INPT0&=127,INPT1&=127,INPT2&=127,INPT3&=127):paddleCapacitorsGrounded=!1},initLatchesAtPowerOn=function(){collisions=0,INPT0=INPT1=INPT2=INPT3=0,INPT4=INPT5=128},debugPixel=function(a){debugPixels[clock]=a},processDebugPixelsInLine=function(){if(jt.Util.arrayFillSegment(linePixels,0,HBLANK_DURATION+(hMoveHitBlank?8:0),hBlankColor),debugLevel>=3&&videoSignal.monitor.currentLine()%10==0)for(var a=0;a<LINE_WIDTH;a++)debugPixels[a]||(a<HBLANK_DURATION?a%6!=0&&66!=a&&63!=a||(debugPixels[a]=DEBUG_MARKS_COLOR):(a-HBLANK_DURATION-1)%6==0&&(debugPixels[a]=DEBUG_MARKS_COLOR));if(debugLevel>=2)for(a=0;a<LINE_WIDTH;a++)debugPixels[a]&&(linePixels[a]=debugPixels[a],debugPixels[a]=0)},debugSetColors=function(){player0Color=DEBUG_P0_COLOR,player1Color=DEBUG_P1_COLOR,missile0Color=DEBUG_M0_COLOR,missile1Color=DEBUG_M1_COLOR,ballColor=DEBUG_BL_COLOR,playfieldColor=playfieldLeftColor=playfieldRightColor=DEBUG_PF_COLOR,playfieldBackground=DEBUG_BK_COLOR,hBlankColor=debugLevel>=1?DEBUG_HBLANK_COLOR:HBLANK_COLOR,vBlankColor=debugLevel>=1?DEBUG_VBLANK_COLOR:VBLANK_COLOR},debugRestoreColors=function(){hBlankColor=HBLANK_COLOR,vBlankColor=VBLANK_COLOR,playfieldBackground=palette[0],jt.Util.arrayFill(linePixels,hBlankColor),changeAtClock()},info=function(a){console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},debugInfo=function(a){debug&&console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case controls.JOY0_BUTTON:return void(b?(controlsJOY0ButtonPressed=!0,INPT4&=127):(controlsJOY0ButtonPressed=!1,controlsButtonsLatched||(INPT4|=128)));case controls.JOY1_BUTTON:return void(b?(controlsJOY1ButtonPressed=!0,INPT5&=127):(controlsJOY1ButtonPressed=!1,controlsButtonsLatched||(INPT5|=128)))}if(b)switch(a){case controls.DEBUG:return void self.debug(debugLevel+1);case controls.SHOW_INFO:return void videoSignal.toggleShowInfo();case controls.NO_COLLISIONS:debugNoCollisions=!debugNoCollisions,videoSignal.showOSD(debugNoCollisions?\"No Collisions: ON\":\"No Collisions: OFF\",!0)}},this.controlValueChanged=function(a,b){switch(a){case controls.PADDLE0_POSITION:return void(paddle0Position=b);case controls.PADDLE1_POSITION:return void(paddle1Position=b)}},this.saveState=function(){return{ccp:changeClockPrevLine,lpx:jt.Util.storeInt32BitArrayToStringBase64(linePixels),vs:vSyncOn,vb:vBlankOn,pfe:playfieldEnabled,pfl:playfieldPatternL,pfr:playfieldPatternR,pfc:playfieldColor,pflc:playfieldLeftColor,pfrc:playfieldRightColor,pfb:playfieldBackground,pfrl:playfieldReflected,pfsc:playfieldScoreMode,pfp:playfieldPriority,be:ballEnabled,bx:ballPixel,blp:ballLineSpritePointer,bc:ballColor,p0e:player0Enabled,p0x:player0Pixel,p0lp:player0LineSpritePointer,p0a:player0Alt,\np0af:player0AltFrom,p0al:player0AltLength,p0ao:player0AltCopyOffset,p0c:player0Color,p1e:player1Enabled,p1x:player1Pixel,p1lp:player1LineSpritePointer,p1a:player1Alt,p1af:player1AltFrom,p1al:player1AltLength,p1ao:player1AltCopyOffset,p1c:player1Color,m0e:missile0Enabled,m0x:missile0Pixel,m0lp:missile0LineSpritePointer,m0a:missile0Alt,m0af:missile0AltFrom,m0al:missile0AltLength,m0ao:missile0AltCopyOffset,m0c:missile0Color,m1e:missile1Enabled,m1x:missile1Pixel,m1lp:missile1LineSpritePointer,m1a:missile1Alt,m1af:missile1AltFrom,m1al:missile1AltLength,m1ao:missile1AltCopyOffset,m1c:missile1Color,hmh:hMoveHitBlank,hmc:hMoveHitClock,hmlh:hMoveLateHit,hmlb:hMoveLateHitBlank,co:collisions,cop:collisionsPossible,CTRLPF:CTRLPF,COLUPF:COLUPF,COLUBK:COLUBK,PF0:PF0,PF1:PF1,PF2:PF2,ENABL:ENABL,ENABLd:ENABLd,VDELBL:VDELBL,NUSIZ0:NUSIZ0,COLUP0:COLUP0,REFP0:REFP0,GRP0:GRP0,GRP0d:GRP0d,VDELP0:VDELP0,NUSIZ1:NUSIZ1,COLUP1:COLUP1,REFP1:REFP1,GRP1:GRP1,GRP1d:GRP1d,VDELP1:VDELP1,ENAM0:ENAM0,RESMP0:RESMP0,ENAM1:ENAM1,RESMP1:RESMP1,HMP0:HMP0,HMP1:HMP1,HMM0:HMM0,HMM1:HMM1,HMBL:HMBL,AUDC0:AUDC0,AUDC1:AUDC1,AUDF0:AUDF0,AUDF1:AUDF1,AUDV0:AUDV0,AUDV1:AUDV1}},this.loadState=function(a){changeClockPrevLine=a.ccp,jt.Util.restoreStringBase64ToInt32BitArray(a.lpx,linePixels),vSyncOn=a.vs,vBlankOn=a.vb,playfieldEnabled=a.pfe,playfieldPatternL=0|a.pfl,playfieldPatternR=0|a.pfr,playfieldColor=0|a.pfc,playfieldLeftColor=0|a.pflc,playfieldRightColor=0|a.pfrc,playfieldBackground=0|a.pfb,playfieldReflected=a.pfrl,playfieldScoreMode=a.pfsc,playfieldPriority=a.pfp,ballEnabled=a.be,ballPixel=0|a.bx,ballLineSpritePointer=0|a.blp,ballColor=0|a.bc,player0Enabled=a.p0e,player0Pixel=0|a.p0x,player0LineSpritePointer=0|a.p0lp,player0Alt=0|a.p0a,player0AltFrom=0|a.p0af,player0AltLength=0|a.p0al,player0AltCopyOffset=0|a.p0ao,jt.Util.arrayFill(player0AltControl,0),player0Color=0|a.p0c,player1Enabled=a.p1e,player1Pixel=0|a.p1x,player1LineSpritePointer=0|a.p1lp,player1Alt=0|a.p1a,player1AltFrom=0|a.p1af,player1AltLength=0|a.p1al,player1AltCopyOffset=0|a.p1ao,jt.Util.arrayFill(player1AltControl,0),player1Color=0|a.p1c,missile0Enabled=a.m0e,missile0Pixel=0|a.m0x,missile0LineSpritePointer=0|a.m0lp,missile0Alt=0|a.m0a,missile0AltFrom=0|a.m0af,missile0AltLength=0|a.m0al,missile0AltCopyOffset=0|a.m0ao,jt.Util.arrayFill(missile0AltControl,0),missile0Color=0|a.m0c,missile1Enabled=a.m1e,missile1Pixel=0|a.m1x,missile1LineSpritePointer=0|a.m1lp,missile1Alt=0|a.m1a,missile1AltFrom=0|a.m1af,missile1AltLength=0|a.m1al,missile1AltCopyOffset=0|a.m1ao,jt.Util.arrayFill(missile1AltControl,0),missile1Color=0|a.m1c,hMoveHitBlank=a.hmh,hMoveHitClock=0|a.hmc,hMoveLateHit=a.hmlh,hMoveLateHitBlank=a.hmlb,collisions=0|a.co,collisionsPossible=0|a.cop,CTRLPF=0|a.CTRLPF,COLUPF=0|a.COLUPF,COLUBK=0|a.COLUBK,PF0=0|a.PF0,PF1=0|a.PF1,PF2=0|a.PF2,ENABL=0|a.ENABL,ENABLd=0|a.ENABLd,VDELBL=0|a.VDELBL,NUSIZ0=0|a.NUSIZ0,COLUP0=0|a.COLUP0,REFP0=0|a.REFP0,GRP0=0|a.GRP0,GRP0d=0|a.GRP0d,VDELP0=0|a.VDELP0,NUSIZ1=0|a.NUSIZ1,COLUP1=0|a.COLUP1,REFP1=0|a.REFP1,GRP1=0|a.GRP1,GRP1d=0|a.GRP1d,VDELP1=0|a.VDELP1,ENAM0=0|a.ENAM0,RESMP0=0|a.RESMP0,ENAM1=0|a.ENAM1,RESMP1=0|a.RESMP1,HMP0=0|a.HMP0,HMP1=0|a.HMP1,HMM0=0|a.HMM0,HMM1=0|a.HMM1,HMBL=0|a.HMBL,AUDC0=0|a.AUDC0,audioSignal.getChannel0().setControl(15&AUDC0),AUDC1=0|a.AUDC1,audioSignal.getChannel1().setControl(15&AUDC1),AUDF0=0|a.AUDF0,audioSignal.getChannel0().setDivider((31&AUDF0)+1),AUDF1=0|a.AUDF1,audioSignal.getChannel1().setDivider((31&AUDF1)+1),AUDV0=0|a.AUDV0,audioSignal.getChannel0().setVolume(15&AUDV0),AUDV1=0|a.AUDV1,audioSignal.getChannel1().setVolume(15&AUDV1),debug&&debugSetColors()};var HBLANK_DURATION=68,LINE_WIDTH=228,VBLANK_COLOR=4278190080,HBLANK_COLOR=4261412864,VSYNC_COLOR=4292730333,DEBUG_P0_COLOR=4278190335,DEBUG_P0_RES_COLOR=4280427195,DEBUG_P0_GR_COLOR=4279308663,DEBUG_P1_COLOR=4294901760,DEBUG_P1_RES_COLOR=4290454050,DEBUG_P1_GR_COLOR=4285993233,DEBUG_M0_COLOR=4284901119,DEBUG_M1_COLOR=4294927974,DEBUG_PF_COLOR=4282681412,DEBUG_PF_GR_COLOR=4281589043,DEBUG_BK_COLOR=4281549875,DEBUG_BL_COLOR=4278255615,DEBUG_MARKS_COLOR=4280295456,DEBUG_HBLANK_COLOR=4282664004,DEBUG_VBLANK_COLOR=4280953386,DEBUG_WSYNC_COLOR=4287103112,DEBUG_HMOVE_COLOR=4294967295,DEBUG_ALT_COLOR=4289374720,READ_ADDRESS_MASK=15,WRITE_ADDRESS_MASK=63,P0C=-63489,P1C=-34689,M0C=-17521,M1C=-8781,PFC=-4395,BLC=-2199,cpu=pCpu,pia=pPia,bus,powerOn=!1,clock,changeClock,changeClockPrevLine,renderClock,linePixels=new Uint32Array(LINE_WIDTH),vSyncOn=!1,vBlankOn=!1,vBlankColor=VBLANK_COLOR,hBlankColor=HBLANK_COLOR,playfieldEnabled=!1,playfieldPatternL=0,playfieldPatternR=0,playfieldColor=4278190080,playfieldLeftColor=4278190080,playfieldRightColor=4278190080,playfieldBackground=4278190080,playfieldReflected=!1,playfieldScoreMode=!1,playfieldPriority=!1,ballEnabled=!1,ballPixel=0,ballLineSpritePointer=0,ballColor=4278190080,player0Enabled=!1,player0Pixel=0,player0LineSpritePointer=0,player0Alt=0,player0AltFrom=0,player0AltLength=0,player0AltCopyOffset=0,player0AltControl=new Uint32Array(4096),player0Color=4278190080,player1Enabled=!1,player1Pixel=0,player1LineSpritePointer=0,player1Alt=0,player1AltFrom=0,player1AltLength=0,player1AltCopyOffset=0,player1AltControl=new Uint32Array(4096),player1Color=4278190080,missile0Enabled=!1,missile0Pixel=0,missile0LineSpritePointer=0,missile0Alt=0,missile0AltFrom=0,missile0AltLength=0,missile0AltCopyOffset=0,missile0AltControl=new Uint32Array(32),missile0Color=4278190080,missile1Enabled=!1,missile1Pixel=0,missile1LineSpritePointer=0,missile1Alt=0,missile1AltFrom=0,missile1AltLength=0,missile1AltCopyOffset=0,missile1AltControl=new Uint32Array(32),missile1Color=4278190080,hMoveHitBlank=!1,hMoveHitClock=0,hMoveLateHit=!1,hMoveLateHitBlank=!1,collisions=0,collisionsPossible=0,debug=!1,debugLevel=0,debugNoCollisions=!1,debugPixels=new Uint32Array(LINE_WIDTH),controlsButtonsLatched=!1,controlsJOY0ButtonPressed=!1,controlsJOY1ButtonPressed=!1,paddleCapacitorsGrounded=!1,paddle0Position=-1,paddle0CapacitorCharge=0,paddle1Position=-1,paddle1CapacitorCharge=0,playerLineSprites=new Uint8Array(262144),missileBallLineSprites=new Uint8Array(2048),playerCopyLengthPerShape=new Uint8Array([13,13,13,13,13,22,13,38]),playerScanStartPerShape=new Uint8Array([5,5,5,5,5,6,5,6]),playerPixelSizePerShape=new Uint8Array([1,1,1,1,1,2,1,4]),playerCopyOffsetsReset=new Uint8Array(1280),playerScanOffsetsShape=new Uint8Array(1280),missileCopyOffsetsReset=new Uint8Array(5120),missileScanOffsetsShape=new Uint8Array(5120),objectsLineSpritePointerDeltaToSingleCopy=new Uint16Array([0,64,128,192,256,0,384,0]),missileCenterOffsetsPerPlayerSize=new Uint8Array([5,5,5,5,5,10,5,18]),videoSignal=new jt.VideoSignal,palette,audioSignal=new jt.TiaAudio(audioSocket),INPT0=0,INPT1=0,INPT2=0,INPT3=0,INPT4=0,INPT5=0,CTRLPF=0,COLUPF=0,COLUBK=0,PF0=0,PF1=0,PF2=0,ENABL=0,ENABLd=0,VDELBL=0,NUSIZ0=0,COLUP0=0,REFP0=0,GRP0=0,GRP0d=0,VDELP0=0,NUSIZ1=0,COLUP1=0,REFP1=0,GRP1=0,GRP1d=0,VDELP1=0,ENAM0=0,RESMP0=0,ENAM1=0,RESMP1=0,HMP0=0,HMP1=0,HMM0=0,HMM1=0,HMBL=0,AUDC0=0,AUDC1=0,AUDF0=0,AUDF1=0,AUDV0=0,AUDV1=0;init(),self.eval=function(code){return eval(code)}},jt.Clock=function(clockPulse){\"use strict\";this.go=function(){running||(useRequestAnimationFrame=vSynch&&cyclesPerSecond===jt.Clock.HOST_NATIVE_FPS,running=!0,useRequestAnimationFrame?animationFrame=requestAnimationFrame(pulse):interval=setInterval(pulse,cycleTimeMs))},this.pause=function(){running=!1,animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),interval&&(clearInterval(interval),interval=null)},this.isRunning=function(){return running},this.getFrequency=function(){return cyclesPerSecond},this.setFrequency=function(a){running?(this.pause(),internalSetFrequency(a),this.go()):internalSetFrequency(a)},this.setVSynch=function(a){running?(this.pause(),vSynch=a,this.go()):vSynch=a};var internalSetFrequency=function(a){cyclesPerSecond=a,cycleTimeMs=1e3/a},pulse=function(){animationFrame=null,\nclockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0},jt.Clock.HOST_NATIVE_FPS=Javatari.SCREEN_FORCE_HOST_NATIVE_FPS,jt.Clock.detectHostNativeFPSAndCallback=function(a){if(Javatari.SCREEN_VSYNCH_MODE===-1)return jt.Util.warning(\"Video native V-Synch disabled in configuration\"),void(a&&a(jt.Clock.HOST_NATIVE_FPS));if(jt.Clock.HOST_NATIVE_FPS!==-1)return jt.Util.warning(\"Host video frequency forced in configuration: \"+jt.Clock.HOST_NATIVE_FPS),void(a&&a(jt.Clock.HOST_NATIVE_FPS));var b=0,c=[],d=0,e=0,f=0,g=0,h=0,i=.06,j=function(){if(e>=10||f>=10||g>=10||h>=10)return jt.Clock.HOST_NATIVE_FPS=e>=10?60:f>=10?50:g>=10?120:100,jt.Util.log(\"Video native frequency detected: \"+jt.Clock.HOST_NATIVE_FPS+\"Hz\"),void(a&&a(jt.Clock.HOST_NATIVE_FPS));if(b++,b<=50){var k=jt.Util.performanceNow(),l=k-d;c[c.length]=l,d=k,l>=1e3/60*(1-i)&&l<=1e3/60*(1+i)&&e++,l>=20*(1-i)&&l<=20*(1+i)&&f++,l>=1e3/120*(1-i)&&l<=1e3/120*(1+i)&&g++,l>=10*(1-i)&&l<=10*(1+i)&&h++,requestAnimationFrame(j)}else jt.Clock.HOST_NATIVE_FPS=-1,jt.Util.warning(\"Could not detect video native frequency. V-Synch DISABLED!\"),a&&a(jt.Clock.HOST_NATIVE_FPS)};j()},jt.Bus=function(a,b,c,d){\"use strict\";function e(e){f=a,g=b,h=c,i=d,f.connectBus(e),g.connectBus(e),h.connectBus(e)}this.powerOn=function(){l=0,j||(g.getVideoOutput().showOSD(\"NO CARTRIDGE INSERTED!\",!0),l=256*Math.random()|0),null!=j&&j.powerOn(),i.powerOn(),h.powerOn(),f.powerOn(),g.powerOn()},this.powerOff=function(){g.powerOff(),f.powerOff(),h.powerOff(),i.powerOff()},this.setCartridge=function(a){j=a,j&&(l=0,j.connectBus(this)),k=j&&j.needsBusMonitoring()},this.getCartridge=function(){return j},this.getTia=function(){return g},this.clockPulse=function(){h.clockPulse(),f.clockPulse()},this.read=function(a){return k&&j.monitorBusBeforeRead(a,l),(a&m)===n?j?l=j.read(a):l:l=(a&o)===p?i.read(a):(a&s)===t?h.read(a):63&l|g.read(a)},this.write=function(a,b){k&&j.monitorBusBeforeWrite(a,b),l=b,(a&q)===r?g.write(a,b):(a&o)===p?i.write(a,b):(a&s)===t?h.write(a,b):j&&j.write(a,b)};var f,g,h,i,j,k=!1,l=0,m=4096,n=4096,o=4736,p=128,q=4224,r=0,s=4736,t=640;e(this)},jt.AtariConsole=function(){\"use strict\";function init(){mainComponentsCreate(),socketsCreate(),self.setDefaults()}function videoFrame(){userPaused&&userPauseMoreFrames--<=0||(videoStandardAutoDetectionInProgress&&videoStandardAutoDetectionTry(),tia.frame())}function vSynchToggleMode(){return vSynchMode===-1?void self.showOSD(\"V-Synch is DISABLED / UNSUPPORTED\",!0,!0):(vSynchMode=vSynchMode?0:1,updateVideoSynchronization(),self.showOSD(\"V-Synch: \"+(vSynchMode?\"ON\":\"OFF\"),!0),Javatari.userPreferences.current.vSynch=vSynchMode,Javatari.userPreferences.setDirty(),void Javatari.userPreferences.save())}function updateVideoSynchronization(){videoPulldown=1===vSynchMode?videoStandard.pulldowns[jt.Clock.HOST_NATIVE_FPS]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER,videoPulldownStep=videoPulldown.steps,mainVideoClockUpdateSpeed()}function mainVideoClockUpdateSpeed(){var a=videoPulldown.frequency;mainVideoClock.setVSynch(vSynchMode>0),mainVideoClock.setFrequency(a*(alternateSpeed||speedControl)|0),audioSocket.setFps(a)}function CartridgeSocket(){this.insert=function(a,b){b&&self.powerIsOn&&self.powerOff(),setCartridge(a),b&&!self.powerIsOn&&self.powerOn()},this.inserted=function(){return getCartridge()},this.cartridgeInserted=function(a,b){tia.getAudioOutput().cartridgeInserted(a,b),consoleControlsSocket.cartridgeInserted(a,b),saveStateSocket.cartridgeInserted(a,b),tia.getVideoOutput().monitor.cartridgeInserted(a,b)},this.loadCartridgeData=function(a,b,c){},this.saveCartridgeDataFile=function(a){}}function ConsoleControlsSocket(){this.setDefaults=function(){self.setDefaults()},this.connectControls=function(b){a=b},this.cartridgeInserted=function(b,c){a&&a.cartridgeInserted(b,c)},this.controlStateChanged=function(a,b){self.controlStateChanged(a,b),pia.controlStateChanged(a,b),tia.controlStateChanged(a,b),tia.getVideoOutput().monitor.controlStateChanged(a,b)},this.controlValueChanged=function(a,b){tia.controlValueChanged(a,b)},this.controlsStateReport=function(a){self.controlsStateReport(a),pia.controlsStateReport(a)},this.controlsStatesRedefined=function(){tia.getVideoOutput().monitor.controlsStatesRedefined()},this.firePowerAndUserPauseStateUpdate=function(){a.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused),tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused)},this.releaseControllers=function(){a.releaseControllers()},this.controlsClockPulse=function(){a.controlsClockPulse()},this.getControlReport=function(a){switch(a){case jt.ConsoleControls.VIDEO_STANDARD:return{label:videoStandardIsAuto?\"Auto\":videoStandard.name,active:!videoStandardIsAuto};case jt.ConsoleControls.VSYNCH:return{label:vSynchMode===-1?\"DISABL\":vSynchMode?\"ON\":\"OFF\",active:1===vSynchMode};case jt.ConsoleControls.NO_COLLISIONS:return{label:tia.getDebugNoCollisions()?\"ON\":\"OFF\",active:tia.getDebugNoCollisions()};default:return{label:\"Unknown\",active:!1}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD(\"State \"+c+\" saved\",!0):self.showOSD(\"State \"+c+\" save failed\",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD(\"State \"+c+\" load failed, wrong version\",!0):(self.powerIsOn||self.powerOn(),loadState(d),void self.showOSD(\"State \"+c+\" loaded\",!0)):void self.showOSD(\"State \"+c+\" not found\",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD(\"State Cartridge saved\",!0):self.showOSD(\"State file save failed\",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD(\"State file load failed, wrong version\",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD(\"State file loaded\",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.powerOn=function(){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),consoleControlsSocket.firePowerAndUserPauseStateUpdate(),mainVideoClock.isRunning()||mainVideoClock.go()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.releaseControllers(),consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||this.powerOn()},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){\nvar c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){if(!systemPaused&&(consoleControlsSocket.controlsClockPulse(),self.powerIsOn)){if(1===videoPulldown.steps)videoFrame();else{var a=videoPulldown.cadence[--videoPulldownStep];for(0===videoPulldownStep&&(videoPulldownStep=videoPulldown.steps);a>0;)a--,videoFrame()}audioSocket.audioFinishFrame()}},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b){this.getVideoOutput().showOSD(a,b)},this.vSynchSetSupported=function(a){vSynchMode=a?null===Javatari.userPreferences.current.vSynch?Javatari.SCREEN_VSYNCH_MODE:Javatari.userPreferences.current.vSynch:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization()),self.showOSD((videoStandardIsAuto?\"AUTO: \":\"\")+videoStandard.name,!1)},setVideoStandardAuto=function(){videoStandardIsAuto=!0,self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries<VIDEO_STANDARD_AUTO_DETECTION_FRAMES||(a?setVideoStandard(a):self.showOSD(\"AUTO: FAILED\",!1),videoStandardAutoDetectionInProgress=!1)},setVideoStandardForced=function(a){videoStandardIsAuto=!1,setVideoStandard(a)},powerFry=function(){ram.powerFry()},cycleCartridgeFormat=function(){},saveState=function(){return{t:tia.saveState(),p:pia.saveState(),r:ram.saveState(),c:cpu.saveState(),ca:getCartridge()&&getCartridge().saveState(),vs:videoStandard.name}},loadState=function(a){mainVideoClockUpdateSpeed(),tia.loadState(a.t),pia.loadState(a.p),ram.loadState(a.r),cpu.loadState(a.c),setCartridge(a.ca&&jt.CartridgeCreator.recreateCartridgeFromSaveState(a.ca,getCartridge())),setVideoStandard(jt.VideoStandard[a.vs]),consoleControlsSocket.controlsStatesRedefined()};this.setDefaults=function(){setVideoStandardAuto(),speedControl=1,alternateSpeed=null,mainVideoClockUpdateSpeed(),tia.debug(0)};var mainComponentsCreate=function(){self.mainVideoClock=mainVideoClock=new jt.Clock(self.videoClockPulse),cpu=new jt.M6502,pia=new jt.Pia,tia=new jt.Tia(cpu,pia),self.tia=tia,ram=new jt.Ram,bus=new jt.Bus(cpu,tia,pia,ram)},socketsCreate=function(){consoleControlsSocket=new ConsoleControlsSocket,cartridgeSocket=new CartridgeSocket,saveStateSocket=new SaveStateSocket,audioSocket=new AudioSocket,tia.getAudioOutput().connectAudioSocket(audioSocket)};this.powerIsOn=!1;var isLoading=!1,userPaused=!1,userPauseMoreFrames=0,systemPaused=!1,speedControl=1,alternateSpeed=!1,mainVideoClock,cpu,pia,tia,ram,bus,videoStandard,videoPulldown,videoPulldownStep,consoleControlsSocket,cartridgeSocket,saveStateSocket,audioSocket,videoStandardIsAuto=!1,videoStandardAutoDetectionInProgress=!1,videoStandardAutoDetectionTries=0,vSynchMode=-1,VIDEO_STANDARD_AUTO_DETECTION_FRAMES=90,SPEEDS=[.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.25,1.5,2,3,5,10],SPEED_FAST=10,SPEED_SLOW=.3,controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){if(a===controls.FAST_SPEED)return void(b&&alternateSpeed!==SPEED_FAST?(alternateSpeed=SPEED_FAST,mainVideoClockUpdateSpeed(),self.showOSD(\"FAST FORWARD\",!0)):b||alternateSpeed!==SPEED_FAST||(alternateSpeed=null,mainVideoClockUpdateSpeed(),self.showOSD(null,!0)));if(a===controls.SLOW_SPEED)return void(b&&alternateSpeed!==SPEED_SLOW?(alternateSpeed=SPEED_SLOW,mainVideoClockUpdateSpeed(),self.showOSD(\"SLOW MOTION\",!0)):b||alternateSpeed!==SPEED_SLOW||(alternateSpeed=null,mainVideoClockUpdateSpeed(),self.showOSD(null,!0)));if(b)switch(a){case controls.POWER:self.powerIsOn?self.powerOff():self.userPowerOn();break;case controls.POWER_OFF:self.powerIsOn&&self.powerOff();break;case controls.POWER_FRY:powerFry();break;case controls.PAUSE:return self.userPause(!userPaused,!1),void self.getVideoOutput().showOSD(userPaused?\"PAUSE\":\"RESUME\",!0);case controls.PAUSE_AUDIO_ON:return self.userPause(!userPaused,!0),void self.getVideoOutput().showOSD(userPaused?\"PAUSE with AUDIO ON\":\"RESUME\",!0);case controls.FRAME:return void(userPaused&&(userPauseMoreFrames=1));case controls.INC_SPEED:case controls.DEC_SPEED:case controls.NORMAL_SPEED:case controls.MIN_SPEED:var c=SPEEDS.indexOf(speedControl);a===controls.INC_SPEED&&c<SPEEDS.length-1?++c:a===controls.DEC_SPEED&&c>0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD(\"Speed: \"+(100*speedControl|0)+\"%\",!0),mainVideoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(a.to),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(a.from),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:self.showOSD(null,!0),videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat()}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.runFramesAtTopSpeed=function(a){mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c<a;c++)self.videoClockPulse();var d=jt.Util.performanceNow()-b;jt.Util.log(\"Done running \"+a+\" frames in \"+(0|d)+\" ms\"),jt.Util.log((a/(d/1e3)).toFixed(2)+\"  frames/sec\"),mainVideoClock.go()},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:\"J_UP\",mask:1,n:\"UP\"},J_DOWN:{button:\"J_DOWN\",mask:2,n:\"DOWN\"},J_LEFT:{button:\"J_LEFT\",mask:4,n:\"LEFT\"},J_RIGHT:{button:\"J_RIGHT\",mask:8,n:\"RIGHT\"},J_A:{button:\"J_A\",mask:16,n:\"A\"},J_B:{button:\"J_B\",mask:32,n:\"B\"},J_AB:{button:\"J_AB\",mask:48,n:\"AB\"},J_X:{button:\"J_X\",n:\"X\"},J_Y:{button:\"J_Y\",n:\"Y\"},J_L:{button:\"J_L\",n:\"L\"},J_R:{button:\"J_R\",n:\"R\"},J_BACK:{button:\"J_BACK\",\nn:\"BACK\"},J_START:{button:\"J_START\",n:\"START\"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_POSITION:31,PADDLE1_POSITION:32,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,SAVE_STATE_0:{to:0},SAVE_STATE_1:{to:1},SAVE_STATE_2:{to:2},SAVE_STATE_3:{to:3},SAVE_STATE_4:{to:4},SAVE_STATE_5:{to:5},SAVE_STATE_6:{to:6},SAVE_STATE_7:{to:7},SAVE_STATE_8:{to:8},SAVE_STATE_9:{to:9},SAVE_STATE_10:{to:10},SAVE_STATE_11:{to:11},SAVE_STATE_12:{to:12},LOAD_STATE_0:{from:0},LOAD_STATE_1:{from:1},LOAD_STATE_2:{from:2},LOAD_STATE_3:{from:3},LOAD_STATE_4:{from:4},LOAD_STATE_5:{from:5},LOAD_STATE_6:{from:6},LOAD_STATE_7:{from:7},LOAD_STATE_8:{from:8},LOAD_STATE_9:{from:9},LOAD_STATE_10:{from:10},LOAD_STATE_11:{from:11},LOAD_STATE_12:{from:12},SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){\"use strict\";this.source=a,this.content=b,c?this.info=c:this.info=jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){\"use strict\";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))},data:\"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\"\n},jt.Cartridge=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.getDataDesc=function(){return null},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a,b){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.saveState=function(){},this.loadState=function(a){},this.rom=null},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=new Array(4096);for(var e=a.content.length,f=0;f<d.length;f+=e)jt.Util.arrayCopy(a.content,0,d,f,e)}this.read=function(a){return d[a&e]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d)};var d,e=4095;a&&c(this)},jt.Cartridge4K.prototype=jt.Cartridge.base,jt.Cartridge4K.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge4K;return c.loadState(a),c},jt.Cartridge2K_CV=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=new Array(4096);for(var d=a.content.length,f=0;f<e.length;f+=d)jt.Util.arrayCopy(a.content,0,e,f,d)}this.read=function(a){var b=d(a);return b<1024?f[b]:e[b]},this.write=function(a,b){var c=d(a);c>=1024&&c<=2047&&(f[c-1024]=b)};var d=function(a){return a&g};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),ra:jt.Util.compressInt8BitArrayToStringBase64(f)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,f)};var e,f=jt.Util.arrayFill(new Array(1024),0),g=4095;a&&c(this)},jt.Cartridge2K_CV.prototype=jt.Cartridge.base,jt.Cartridge2K_CV.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge2K_CV;return c.loadState(a),c},jt.CartridgeBankedByMaskedRange=function(a,b,c,d,e){\"use strict\";function f(f){f.rom=a,f.format=b,h=a.content;var g=h.length/q;i=c,j=i+g-1,l=e,null==d||void 0==d?(o=!1,k=!0):(o=!!d,k=!1),m=d!==!1?jt.Util.arrayFill(new Array(l),0):null}this.read=function(a){var b=g(a);return o&&b>=l&&b<2*l?m[b-l]:h[n+b]},this.write=function(a,b){var c=g(a);c<l&&(o||k)&&(o||(o=!0),m[c]=b)};var g=function(a){var b=a&p;return b>=i&&b<=j&&(n=q*(b-i)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(h),bo:n,bb:i,es:l,tb:j,s:0|o,sa:0|k,e:m&&jt.Util.compressInt8BitArrayToStringBase64(m)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),h=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,h),n=a.bo,i=a.bb,l=a.es,j=a.tb,o=!!a.s,k=!!a.sa,m=a.e&&jt.Util.uncompressStringBase64ToInt8BitArray(a.e,m)};var h,i,j,k,l,m,n=0,o=!1,p=4095,q=4096;a&&f(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.recreateFromSaveState=function(a,b){var c=b||new jt.CartridgeBankedByMaskedRange;return c.loadState(a),c},jt.Cartridge8K_E0=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return b<1024?e[f+b]:b<2048?e[g+b-1024]:b<3072?e[h+b-2048]:e[4096+b]},this.write=function(a,b){d(a)};var d=function(a){var b=a&i;return b>=4064&&b<=4087&&(b<=4071?f=1024*(b-4064):b<=4079?g=1024*(b-4072):b<=4087&&(h=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),s0:f,s1:g,s2:h}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.s0,g=a.s1,h=a.s2};var e,f=0,g=0,h=0,i=4095;a&&c(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_E0;return c.loadState(a),c},jt.Cartridge64K_F0=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return e[f+b]},this.write=function(a,b){d(a)};var d=function(a){var b=a&g;return b==j&&(f+=i,f>=h&&(f=0)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.bo};var e,f=0,g=4095,h=65536,i=4096,j=4080;a&&c(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_F0;return c.loadState(a),c},jt.Cartridge8K_FE=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return e[f+b]},this.write=function(a,b){d(a)};var d=function(a){return 0!==(8192&a)?0!==f&&(f=0):f!=h&&(f=h),a&g};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.bo};var e,f=0,g=4095,h=4096;a&&c(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_FE;return c.loadState(a),c},jt.Cartridge16K_E7=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return b>=2304&&b<=2559?h[j+b-2304]:i&&b>=1024&&b<=2047?h[b-1024]:b<n?e[f+b]:e[o+b]},this.write=function(a,b){var c=d(a);c>=2048&&c<=2303?h[j+c-2048]=b:i&&c<=1023&&(h[c]=b)};var d=function(a){var b=a&k;return b>=4064&&b<=4075&&(b<=4070?f=m*(b-4064):4071==b?i=!0:b<=4075&&(j=g+p*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:f,rs:i,ro:j,ra:jt.Util.compressInt8BitArrayToStringBase64(h)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),f=a.bo,i=a.rs,j=a.ro,h=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,h)};var e,f=0,g=1024,h=jt.Util.arrayFill(new Array(2048),0),i=!1,j=g,k=4095,l=16384,m=2048,n=2048,o=l-m-n,p=256;a&&c(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge16K_E7;return c.loadState(a),c},jt.Cartridge10K_DPCa=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,m=a.content}this.powerOn=function(){y=p,z=0},this.connectBus=function(a){l=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=d(a);return b<=63||b>=2048&&b<=2111?f(255&b):m[r+b]},this.write=function(a,b){var c=d(a);(c>=64&&c<=127||c>=2112&&c<=2175)&&g(255&c,b)},this.audioClockPulse=function(){if((z+y|0)>(0|z))for(var a=5;a<=7;a++)x[a]&&(t[a]--,255==(255&t[a])&&h(a,65280&t[a]|u[a]),j(a),A||(A=!0));z+=y,A&&(e(),l.setVolume(B))};var d=function(a){var b=a&o;return 4088===b?r=0:4089===b&&(r=4096),b},e=function(){B=n[(x[5]?4&w[5]:0)|(x[6]?2&w[6]:0)|(x[7]?1&w[7]:0)],A=!1},f=function(a){var b;return a>=0&&a<=3?(k(),s):a>=4&&a<=7?(A&&e(),B):a>=8&&a<=15?(b=m[q-t[a-8]],i(a-8),b):a>=16&&a<=23?(b=m[q-t[a-16]]&w[a-16],i(a-16),b):a>=24&&a<=31?(b=m[q-t[a-24]]&w[a-24],i(a-24),b=240&b|15&b):a>=32&&a<=39?(b=m[q-t[a-32]]&w[a-32],i(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=m[q-t[a-40]]&w[a-40],i(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=m[q-t[a-48]]&w[a-48],i(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?w[a-56]:0},g=function(a,b){\nif(a>=64&&a<=71){var c=a-64;return u[c]=b,void((255&t[c])===u[c]&&(w[c]=255))}return a>=72&&a<=79?(v[a-72]=b,void(w[a-72]=0)):a>=80&&a<=87?void h(a-80,65280&t[a-80]|255&b):a>=88&&a<=91?void h(a-88,255&t[a-88]|(7&b)<<8):92==a?void h(4,255&t[4]|(7&b)<<8):a>=93&&a<=95?(h(a-88,(255&t[a-88])+((7&b)<<8)),void(x[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(s=0))},h=function(a,b){t[a]=b},i=function(a){var b=t[a]-1;b<0&&(b=2047),h(a,b),j(a)},j=function(a){var b=255&t[a];b==u[a]?w[a]=255:b==v[a]&&(w[a]=0)},k=function(){s=255&(s<<1|1&~(s>>7^s>>5^s>>4^s>>3)),255===s&&(s=0)};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(m),bo:r,rn:s,fp:jt.Util.compressInt8BitArrayToStringBase64(t),fs:jt.Util.compressInt8BitArrayToStringBase64(u),fe:jt.Util.compressInt8BitArrayToStringBase64(v),fm:jt.Util.compressInt8BitArrayToStringBase64(w),a:jt.Util.compressInt8BitArrayToStringBase64(x)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,m),r=a.bo,s=a.rn,t=jt.Util.uncompressStringBase64ToInt8BitArray(a.fp,t),u=jt.Util.uncompressStringBase64ToInt8BitArray(a.fs,u),v=jt.Util.uncompressStringBase64ToInt8BitArray(a.fe,v),w=jt.Util.uncompressStringBase64ToInt8BitArray(a.fm,w),x=jt.Util.uncompressStringBase64ToInt8BitArray(a.a,x)};var l,m,n=[0,5,5,10,5,10,10,15],o=4095,p=.62,q=10239,r=0,s=0,t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=jt.Util.arrayFill(new Array(8),0),y=p,z=0,A=!0,B=0;a&&c(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge10K_DPCa;return c.loadState(a),c},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){\"use strict\";function d(d){d.rom=a,d.format=b,n=a.content,p=c||0,q=p;var e=(n.length-p)/x;o=r+e-1}var e=this;this.connectBus=function(a){l=a},this.connectSaveStateSocket=function(a){m=a},this.read=function(a){var b,c=f(a);if(b=c>=256&&c<512?s[c-256]:n[q+c],c!==y)return b;if(0===u){var d=s[z];if(1===d||2===d)return g(d),64|b}return 0===u?191&b:(j(),0!==u?64|b:191&b)},this.write=function(a,b){var c=f(a);c<256&&(s[c]=b)};var f=function(a){var b=a&w;return b>=r&&b<=o&&(q=p+x*(b-r)),b},g=function(a){u=a,t=Date.now(),1===a?h():2===a&&i()},h=function(){if(l.getTia().getVideoOutput().showOSD(\"Reading from Cartridge Flash Memory...\",!0),m){var a=m.getMedia().loadResource(k());a&&(v=jt.Util.uncompressStringBase64ToInt8BitArray(a,v))}jt.Util.arrayCopy(v,0,s)},i=function(){l.getTia().getVideoOutput().showOSD(\"Writing to Cartridge Flash Memory...\",!0),jt.Util.arrayCopy(s,0,v),m&&m.getMedia().saveResource(k(),jt.Util.compressInt8BitArrayToStringBase64(v))},j=function(){Date.now()-t>1100&&(t=Date.now(),u=0,s[z]=0,l.getTia().getVideoOutput().showOSD(\"Done.\",!0),m&&m.externalStateChange())},k=function(){return\"hfm\"+e.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(n),rs:p,bo:q,tb:o,e:jt.Util.compressInt8BitArrayToStringBase64(s),ho:u,ht:t}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),n=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,n),p=a.rs||0,q=a.bo,o=a.tb,s=jt.Util.uncompressStringBase64ToInt8BitArray(a.e,s),u=a.ho||0,t=Date.now()};var l,m,n,o,p=0,q=0,r=4085,s=jt.Util.arrayFill(new Array(256),0),t=Date.now(),u=0,v=jt.Util.arrayFill(new Array(256),0),w=4095,x=4096,y=4084,z=255;a&&d(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge24K_28K_32K_FA2;return c.loadState(a),c},jt.CartridgeBankedByBusMonitoring=function(a,b){\"use strict\";this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content,e=(d.length-i)/i-1,f=d.length-2*i}this.read=function(a){var b=a&h;return b>=j?d[f+b]:d[g+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=e&&(g=c*i)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:g,sm:e,fo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),g=a.bo,e=a.sm,f=a.fo};var d,e,f,g=0,h=4095,i=2048,j=2048;a&&c(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3F;return c.loadState(a),c},jt.Cartridge8K_512K_3E=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=a.content,f=(e.length-m)/m-1,g=e.length-2*m}this.read=function(a){var b=d(a);return b>=n?e[g+b]:j>=0&&b<1024?k[j+b]||0:e[i+b]},this.write=function(a,b){if(!(j<0)){var c=d(a);c>=1024&&c<=2047&&(k[j+c-1024]=b)}};var d=function(a){return a&l};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=f&&(i=c*m,j=-1))}if(62===a){var d=255&b;j=d*h}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e),bo:i,sm:f,fo:g,ro:j,ra:jt.Util.compressInt8BitArrayToStringBase64(k)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e),i=a.bo,f=a.sm,g=a.fo,j=a.ro,k=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,k)};var e,f,g,h=1024,i=0,j=-1,k=jt.Util.arrayFill(new Array(h),0),l=4095,m=2048,n=2048;a&&c(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3E;return c.loadState(a),c},jt.Cartridge8K_256K_SB=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content,e=d.length/h-1}this.read=function(a){return d[f+(a&g)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048===(6144&a)){var b=127&a;b>e||(f=b*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:f,m:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),f=a.bo,e=a.m};var d,e,f=0,g=4095,h=4096;a&&c(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_256K_SB;return c.loadState(a),c},jt.Cartridge8K_64K_AR=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,e=jt.Util.arrayFill(new Array(4*M)),o()}this.powerOn=function(){h(0),E=0},this.connectBus=function(a){d=a},this.read=function(a){return f<M?e[q+f]:e[r+f-M]},this.write=function(a,b){r===N&&f>=K&&f<K+256&&i(f-K)},this.performBankSwitchOnMonitoredAccess=function(a){return f=a&Q,a&=8191,8184==a?void h(t):w>0?void(a!==v&&(v=a,0===--w&&(a&R)===S&&(f<M?e[q+f]=t:r<N&&(e[r+f-M]=t)))):void((a&R)===S&&f<=255&&(t=f,u&&(v=a,w=5)))};var d,e,f,g,h=function(a){var b=a>>2&7;switch(b){case 0:q=2*M,r=N;break;case 1:q=0*M,r=N;break;case 2:q=2*M,r=0*M;break;case 3:q=0*M,r=2*M;break;case 4:q=2*M,r=N;break;case 5:q=1*M,r=N;break;case 6:q=2*M,r=1*M;break;case 7:q=1*M,r=2*M;break;default:throw new Error(\"Invalid bank configuration\")}w=0,u=0!==(2&a),x=0===(1&a)},i=function(b){for(var c=!1;;){if(E>a.content.length-1){\nif(c)return 0===b?d.getTia().getVideoOutput().showOSD(\"Could not load Tape from Start. Not a Start Tape ROM!\",!0):d.getTia().getVideoOutput().showOSD(\"Could not find next Part to load in Tape!\",!0),void n(!1);E=0,c=!0}if(jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,E)===b)return 0===b?d.getTia().getVideoOutput().showOSD(\"Loaded Tape from Start\",!0):d.getTia().getVideoOutput().showOSD(\"Loaded next Part from Tape\",!0),void j();E+=O}},j=function(){k(),l(),m()},k=function(){jt.Util.arrayCopy(a.content,E+4*M,s,0,s.length),y=s[1]<<8|255&s[0],z=s[2],A=s[3],B=s[4],C=s[5],D=s[7]<<8|255&s[6],g=jt.Util.arrayFill(new Array(A),0),jt.Util.arrayCopy(s,16,g,0,A)},l=function(){jt.Util.arrayFillSegment(e,7*L,8*L-1,0);for(var b=E,c=0,d=g.length;c<d;c++){var f=g[c],h=(3&f)*M,i=(f>>2)*L;h+i+255<N&&jt.Util.arrayCopy(a.content,b,e,h+i,L),b+=L}E+=O},m=function(){e[N+G-63488]=z,e[N+F-63488]=C,e[N+I-63488]=256*Math.random()|0,e[N+H-63488]=255&y,e[N+H+1-63488]=y>>8&255,n(!0)},n=function(a){e[N+J-63488]=a?1:0},o=function(){var a=jt.Util.uncompressStringBase64ToInt8BitArray(P);jt.Util.arrayCopy(a,0,e,N,M)},p=256,q=0,r=0,s=jt.Util.arrayFill(new Array(p),0),t=0,u=!1,v=-1,w=0,x=!1,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=64256,G=64257,H=64258,I=64260,J=64261,K=3072,L=256,M=8*L,N=3*M,O=4*M+p,P=\"7dSxCsIwEAbgv6niGkeddPVZ8kCOXc43yCIokkGIUN+gLxAoZHTxHRxjYq2xk7vSIPS75bb7uYNTuOJWu/bod3iU42BzUTiBe9sTzSjToBnNBVxfQz/nQ+2NhA2a05KYmhhjmxhoQZymxGil8gpeesOdyioW5DN25yxsiri3chQOUO1WeCSI/hPx9AJ/m/576KROMUhlfdE4dQ+AfJoPNBikgOZdLw==\",Q=4095,R=4096,S=4096;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(e)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,e)},a&&c(this)},jt.Cartridge8K_64K_AR.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_64K_AR.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_64K_AR;return c.loadState(a),c},jt.Cartridge8K_64K_AR.HEADER_SIZE=256,jt.Cartridge8K_64K_AR.PAGE_SIZE=256,jt.Cartridge8K_64K_AR.BANK_SIZE=8*jt.Cartridge8K_64K_AR.PAGE_SIZE,jt.Cartridge8K_64K_AR.PART_SIZE=4*jt.Cartridge8K_64K_AR.BANK_SIZE+jt.Cartridge8K_64K_AR.HEADER_SIZE,jt.Cartridge8K_64K_AR.peekPartNoOnTape=function(a,b){return a[b+4*jt.Cartridge8K_64K_AR.BANK_SIZE+5]},jt.Cartridge8K_64K_AR.checkTape=function(a){return 0===jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,0)||(jt.Util.warning(\"Wrong Supercharger Tape Part ROM! Please load a Full Tape ROM file\"),!1)},jt.Cartridge64K_X07=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){2061===(6159&a)?e=((240&a)>>4)*g:e>=h&&0===(6272&a)&&(e=(0===(64&a)?14:15)*g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),e=a.bo};var d,e=0,f=4095,g=4096,h=14*g;a&&c(this)},jt.Cartridge64K_X07.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge64K_X07.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_X07;return c.loadState(a),c},jt.Cartridge8K_0840=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){var b=6208&a;2048===b?0!==e&&(e=0):2112===b&&e!==g&&(e=g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),e=a.bo};var d,e=0,f=4095,g=4096;a&&c(this)},jt.Cartridge8K_0840.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_0840.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_0840;return c.loadState(a),c},jt.Cartridge8K_UA=function(a,b){\"use strict\";function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){544===a?0!==e&&(e=0):576===a&&e!==g&&(e=g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),e=a.bo};var d,e=0,f=4095,g=4096;a&&c(this)},jt.Cartridge8K_UA.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_UA.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_UA;return c.loadState(a),c},jt.CartridgeFormats={\"4K\":{name:\"4K\",desc:\"4K Atari\",priority:101,tryFormat:function(a){if(a.content.length>=8&&a.content.length<=4096&&4096%a.content.length===0)return this},createCartridgeFromRom:function(a){return new jt.Cartridge4K(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge4K.recreateFromSaveState(a,b)}},CV:{name:\"CV\",desc:\"2K Commavid +RAM\",priority:102,tryFormat:function(a){if(2048===a.content.length||4096===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge2K_CV(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge2K_CV.recreateFromSaveState(a,b)}},E0:{name:\"E0\",desc:\"8K Parker Bros.\",priority:102,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_E0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_E0.recreateFromSaveState(a,b)}},F0:{name:\"F0\",desc:\"64K Dynacom Megaboy\",priority:101,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_F0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_F0.recreateFromSaveState(a,b)}},FE:{name:\"FE\",desc:\"8K Robotank/Decathlon\",priority:103,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_FE(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_FE.recreateFromSaveState(a,b)}},E7:{name:\"E7\",desc:\"16K M-Network\",priority:102,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge16K_E7(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge16K_E7.recreateFromSaveState(a,b)}},F8:{name:\"F8\",desc:\"8K Atari (+RAM)\",priority:101,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F6:{name:\"F6\",desc:\"16K Atari (+RAM)\",priority:101,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F4:{name:\"F4\",desc:\"32K Atari (+RAM)\",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},FA2cu:{name:\"FA2cu\",desc:\"32K CBS RAM Plus CU Image\",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},recreateCartridgeFromSaveState:function(a,b){\nreturn jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)},cuMagicWord:[30,171,173,16]},FA2:{name:\"FA2\",desc:\"24K/28K/32K CBS RAM Plus\",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)}},FA:{name:\"FA\",desc:\"12K CBS RAM Plus\",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},EF:{name:\"EF\",desc:\"8K-64K H. Runner (+RAM)\",priority:114,tryFormat:function(a){if(a.content.length%4096===0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},DPC:{name:\"DPC\",desc:\"10K DPC Pitfall 2 (Enhanced Audio)\",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge10K_DPCa.recreateFromSaveState(a,b)}},\"3F\":{name:\"3F\",desc:\"8K-512K Tigervision\",priority:112,tryFormat:function(a){if(a.content.length%2048===0&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3F.recreateFromSaveState(a,b)}},\"3E\":{name:\"3E\",desc:\"8K-512K Tigervision (+RAM)\",priority:111,tryFormat:function(a){if(a.content.length%2048===0&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3E.recreateFromSaveState(a,b)}},X07:{name:\"X07\",desc:\"64K AtariAge\",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_X07.recreateFromSaveState(a,b)}},\"0840\":{name:\"0840\",desc:\"8K Econobanking\",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_0840.recreateFromSaveState(a,b)}},UA:{name:\"UA\",desc:\"8K UA Limited\",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_UA.recreateFromSaveState(a,b)}},SB:{name:\"SB\",desc:\"8K-256K Superbanking\",priority:113,tryFormat:function(a){if(a.content.length%4096===0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_256K_SB.recreateFromSaveState(a,b)}},AR:{name:\"AR\",desc:\"8K-64K Arcadia/Starpath/Supercharger\",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE===0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8&&jt.Cartridge8K_64K_AR.checkTape(a))return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_64K_AR.recreateFromSaveState(a,b)}}},jt.CartridgeCreatorImpl=function(){\"use strict\";this.createCartridgeFromRom=function(b){var c=a(b);if(0!==c.length){var d=c[0];return jt.Util.log(\"\"+d.name+\": \"+d.desc+\", priority: \"+d.priority+(d.priorityBoosted?\" (\"+d.priorityBoosted+\")\":\"\")),d.createCartridgeFromRom(b)}},this.recreateCartridgeFromSaveState=function(a,b){var c=jt.CartridgeFormats[a.f];if(!c)throw new Error(\"Unsupported ROM Format: \"+a.f);return b&&b.format!==c&&(b=null),c.recreateCartridgeFromSaveState(a,b)},this.produceInfo=function(a,d){var e=a.content.length,f=jt.MD5(a.content);a.content.length>e&&a.content.splice(e);var g=jt.CartridgeDatabase[f];return g?jt.Util.log(\"\"+g.n+\" (\"+f+\")\"):(g=b(a.source),jt.Util.log(\"Unknown ROM: \"+g.n+\" (\"+f+\")\")),c(g,a.source,f,d),g};var a=function(a){var b,c,e=[];for(var f in jt.CartridgeFormats)try{if(b=jt.CartridgeFormats[f].tryFormat(a),!b)continue;d(b,a.info),e.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}return e.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),e},b=function(a){var b={n:\"Unknown\"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf(\"/\"),e=c.lastIndexOf(\"\\\\\"),f=c.lastIndexOf(\"?\"),g=Math.max(d,Math.max(e,f));g>=0&&g<c.length-1&&(c=c.substring(g+1));var h=c.lastIndexOf(\".\");return h>=0&&(c=c.substring(0,h)),b.n=c.trim()||\"Unknown\",b},c=function(a,b,c,d){a.h=c,a.l||(a.l=e(a.n));var m=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!m.match(k+\"JOYSTICK(S)?\"+l)))if(m.match(k+\"PADDLE(S)?\"+l))a.p=1;else for(var n=0;n<i.length;n++)if(m.match(i[n])){a.p=1;break a}a:if(!a.c)if(m.match(k+\"CRT(_|-)?MODE\"+l))a.c=1;else for(n=0;n<j.length;n++)if(m.match(j[n])){a.c=1;break a}if(d){d=d.trim().toUpperCase();for(var o in jt.CartridgeFormats)if(o.toUpperCase()===d){a.f=o;break}}a:if(!a.f){var p=b.toUpperCase();for(o in jt.CartridgeFormats)if(f(o,m)||f(o,p)){a.f=o;break a}for(o in h)if(g(o,m)){a.f=o;break a}}},d=function(a,b){b.f&&a.name===b.f?a.priorityBoosted=a.priority-m:a.priorityBoosted=void 0},e=function(a){return a.split(/(\\(|\\[)/)[0].trim()},f=function(a,b){return b.match(k+a+l)},g=function(a,b){var c=h[a];if(!c)return!1;for(var d=0;d<c.length;d++)if(b.match(c[d]))return!0;return!1},h={E0:[\"^.*MONTEZUMA.*$\",\"^.*MONTZREV.*$\",\"^.*GYRUS.*$\",\"^.*TOOTH.*PROTECTORS.*$\",\"^.*TOOTHPRO.*$\",\"^.*DEATH.*STAR.*BATTLE.*$\",\"^.*DETHSTAR.*$\",\"^.*JAMES.*BOND.*$\",\"^.*JAMEBOND.*$\",\"^.*SUPER.*COBRA.*$\",\"^.*SPRCOBRA.*$\",\"^.*TUTANKHAM.*$\",\"^.*TUTANK.*$\",\"^.*POPEYE.*$\",\"^.*(SW|STAR.?WARS).*ARCADE.*GAME.*$\",\"^.*SWARCADE.*$\",\"^.*Q.*BERT.*QUBES.*$\",\"^.*QBRTQUBE.*$\",\"^.*FROGGER.?(2|II).*$\",\"^.*DO.*CASTLE.*$\"],FE:[\"^.*ROBOT.*TANK.*$\",\"^.*ROBOTANK.*$\",\"^.*DECATHLON.*$\",\"^.*DECATHLN.*$\"],E7:[\"^.*BUMP.*JUMP.*$\",\"^.*BNJ.*$\",\"^.*BURGER.*TIME.*$\",\"^.*BURGTIME.*$\",\"^.*POWER.*HE.?MAN.*$\",\"^.*HE_MAN.*$\"],\"3F\":[\"^.*POLARIS.*$\",\"^.*RIVER.*PATROL.*$\",\"^.*RIVERP.*$\",\"^.*SPRINGER.*$\",\"^.*MINER.*2049.*$\",\"^.*MNR2049R.*$\",\"^.*MINER.*2049.*VOLUME.*$\",\"^.*MINRVOL2.*$\",\"^.*ESPIAL.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],\"3E\":[\"^.*BOULDER.*DASH.*$\",\"^.*BLDRDASH.*$\"],DPC:[\"^.*PITFALL.*II.*$\"]},i=[\"^.*PADDLES.*$\",\"^.*BREAKOUT.*$\",\"^.*SUPER.*BREAKOUT.*$\",\"^.*SUPERB.*$\",\"^.*WARLORDS.*$\",\"^.*STEEPLE.*CHASE.*$\",\"^.*STEPLCHS.*$\",\"^.*VIDEO.*OLYMPICS.*$\",\"^.*VID(|_)OLYM(|P).*$\",\"^.*CIRCUS.*ATARI.*$\",\"^.*CIRCATRI.*$\",\"^.*KABOOM.*$\",\"^.*BUGS((?!BUNNY).)*\",\"^.*BACHELOR.*PARTY.*$\",\"^.*BACHELOR.*$\",\"^.*BACHELORETTE.*PARTY.*$\",\"^.*BACHLRTT.*$\",\"^.*BEAT.*EM.*EAT.*EM.*$\",\"^.*BEATEM.*$\",\"^.*PHILLY.*FLASHER.*$\",\"^.*PHILLY.*$\",\"^.*JEDI.*ARENA.*$\",\"^.*JEDIAREN.*$\",\"^.*EGGOMANIA.*$\",\"^.*EGGOMANA.*$\",\"^.*PICNIC.*$\",\"^.*PIECE.*O.*CAKE.*$\",\"^.*PIECECKE.*$\",\"^.*BACKGAMMON.*$\",\"^.*BACKGAM.*$\",\"^.*BLACKJACK.*$\",\"^.*BLACK(|_)J.*$\",\"^.*CANYON.*BOMBER.*$\",\"^.*CANYONB.*$\",\"^.*CASINO.*$\",\"^.*DEMONS.*DIAMONDS.*$\",\"^.*DEMONDIM.*$\",\"^.*DUKES.*HAZZARD.*2.*$\",\"^.*STUNT.?2.*$\",\"^.*ENCOUNTER.*L.?5.*$\",\"^.*ENCONTL5.*$\",\"^.*G.*I.*JOE.*COBRA.*STRIKE.*$\",\"^.*GIJOE.*$\",\"^.*GUARDIAN.*$\",\"^.*MARBLE.*CRAZE.*$\",\"^.*MARBCRAZ.*$\",\"^.*MEDIEVAL.*MAYHEM.*$\",\"^.*MONDO.*PONG.*$\",\"^.*NIGHT.*DRIVER.*$\",\"^.*NIGHTDRV.*$\",\"^.*PARTY.*MIX.*$\",\"^.*POKER.*PLUS.*$\",\"^.*PONG.*SPORTS.*$\",\"^.*SCSICIDE.*$\",\"^.*SECRET.*AGENT.*$\",\"^.*SOLAR.*STORM.*$\",\"^.*SOLRSTRM.*$\",\"^.*SPEEDWAY.*$\",\"^.*STREET.*RACER.*$\",\"^.*STRTRACE.*$\",\"^.*STUNT.*CYCLE.*$\",\"^.*STUNT.?1.*$\",\"^.*TAC.?SCAN.*$\",\"^.*MUSIC.*MACHINE.*$\",\"^.*MUSCMACH.*$\",\"^.*VONG.*$\",\"^.*WARPLOCK.*$\"],j=[\"^.*STAR.*CASTLE.*$\",\"^.*SEAWEED.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],k=\"^(|.*?(\\\\W|_|%20))\",l=\"(|(\\\\W|_|%20).*)$\",m=50;\n},jt.CartridgeCreator=new jt.CartridgeCreatorImpl,jt.Images={embedded:!1,count:5,urls:{logo:Javatari.IMAGES_PATH+\"logo.png\",loading:Javatari.IMAGES_PATH+\"loading.gif\",mouseCursor:Javatari.IMAGES_PATH+\"mouse-cursor.png\",panel:Javatari.IMAGES_PATH+\"panel.jpg\",panelSprites:Javatari.IMAGES_PATH+\"panel-sprites.jpg\",controllers:Javatari.IMAGES_PATH+\"controllers.jpg\",iconSprites:Javatari.IMAGES_PATH+\"icon-sprites.png\"}},jt.RecentStoredROMs=function(){function a(){if(!e){try{e=JSON.parse(localStorage.javataristoredromsdata)}catch(a){}e||b()}return e}function b(){d=[],localStorage.javataristoredromsicatalog=JSON.stringify(d),e=[],localStorage.javataristoredromsdata=JSON.stringify(e)}this.getCatalog=function(){if(!d){try{d=JSON.parse(localStorage.javataristoredromsicatalog)}catch(a){}d||b()}return d},this.storeROM=function(b){this.getCatalog();var c=d.find(function(a){return a&&a.h===b.info.h});if(c&&c.n==b.info.n&&c.f==b.info.f)this.lastROMLoadedIndex=d.indexOf(c);else{if(a(),c){var g=d.indexOf(c);d.splice(g,1),e.splice(g,1)}else d.length>=f&&(d=d.slice(0,f-1),e=e.slice(0,f-1));d.unshift({n:b.info.l,h:b.info.h,f:b.info.f});for(var h=0;h<d.length;++h)d[h].i=h;localStorage.javataristoredromsicatalog=JSON.stringify(d),e.unshift(b.saveState(!0)),localStorage.javataristoredromsdata=JSON.stringify(e),this.lastROMLoadedIndex=0,jt.Util.log(\"New ROM stored: \"+b.info.n+\", \"+b.info.h)}localStorage.javataristoredromslastindex=this.lastROMLoadedIndex},this.getROM=function(b){this.lastROMLoadedIndex=b,localStorage.javataristoredromslastindex=b;var c=a()[b];return c?jt.ROM.loadState(c):null};var c=localStorage.javataristoredromslastindex;this.lastROMLoadedIndex=void 0!==c?Number.parseInt(c):-1;var d,e,f=10},jt.FileLoader=function(a){\"use strict\";function b(a,b,d,e,f,g,h){for(var i=0;i<a.length;i++)if(c(a[i],b,d,e,f,g,h))return!0;return!1}function c(a,b,e,f,g,h,i,j){try{i&&!a.content&&(a.content=a.asUint8Array());var k=a.content;if(!j){var l=jt.Util.checkContentIsZIP(k);if(l){for(var m=jt.Util.getZIPFilesSorted(l),n=0;n<m.length;n++)if(c(m[n],b,e,f,g,h,!0,!0))return!0;return!1}}var o=jt.Util.checkContentIsGZIP(k);if(o)return c({name:a.name,content:o},b,e,f,g,h,!1,!0)}catch(a){return jt.Util.error(a),!1}return d(a.name,k,b,e,f,g,h)}function d(a,b,c,d,e,f,g){if(c=c||w.AUTO,(c===w.STATE||c===w.AUTO)&&m.loadStateFile(b))return!0;if((c===w.CART_DATA||c===w.AUTO)&&l.loadCartridgeData(d,a,b))return!0;if(c===w.ROM||c===w.AUTO){var h=new jt.ROM(a,b,null,g);return j.loadROM(h,d,e,f)}return!1}function e(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),this.files&&0!==this.files.length){var b=jt.Util.asNormalArray(this.files);try{n.value=\"\"}catch(a){}var c=k.systemPause(!0),d=function(a){c||k.systemPause(!1)};return b&&b.length>0&&(1===b.length?j.readFromFile(b[0],p,q,r,s,d):j.readFromFiles(b,p,q,r,s,d)),!1}}function f(a){a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.dataTransfer&&(Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect=\"none\":a.ctrlKey?a.dataTransfer.dropEffect=\"copy\":a.altKey&&(a.dataTransfer.dropEffect=\"link\")),t=a.buttons>0?a.buttons:u}function g(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),!Javatari.CARTRIDGE_CHANGE_DISABLED&&a.dataTransfer){var b=k.systemPause(!0),c=a.shiftKey?1:0,d=t&v,e=a.ctrlKey,f=w.AUTO,g=a.dataTransfer&&a.dataTransfer.files,h=function(a){b||k.systemPause(!1)};if(g&&g.length>0)1===g.length?j.readFromFile(g[0],f,c,d,e,h):j.readFromFiles(g,f,c,d,e,h);else{var i=a.dataTransfer.getData(\"text\");i&&i.length>0?j.readFromURL(i,f,c,d,e,h):h()}}}function h(a){jt.Util.message(\"Could not load file(s):\\n\\n\"+a+\"\\n\")}function i(){n=document.createElement(\"input\"),n.id=\"jt-file-loader-input\",n.type=\"file\",n.multiple=!0,n.accept=x.AUTO,n.style.display=\"none\",n.addEventListener(\"change\",e),o.appendChild(n)}var j=this;this.connect=function(a){k=a,l=k.getCartridgeSocket(),m=k.getSavestateSocket()},this.registerForDnD=function(a){a.addEventListener(\"dragover\",f,!1),a.addEventListener(\"drop\",g,!1)},this.registerForFileInputElement=function(a){o=a},this.openFileChooserDialog=function(a,b,c,d){n||i(),n.multiple=y[w[a]||w.AUTO],n.accept=x[w[a]||w.AUTO],p=a,q=c?1:0,r=b,s=d,n.click()},this.openURLChooserDialog=function(a,b,c,d){var e,f=c?1:0;try{e=localStorage&&localStorage[A]}catch(a){}var g=k.systemPause(!0);if(e=prompt(\"Load file from URL:\",e||\"\"),e=e&&e.toString().trim()){try{localStorage[A]=e}catch(a){}this.readFromURL(e,a,f,b,d,function(){g||k.systemPause(!1)})}else g||k.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){jt.Util.log(\"Reading file: \"+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};j.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){h(\"File reading error: \"+a.target.error.name+B),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new jt.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};j.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){h(\"URL reading error: \"+a[0].error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){var g=new jt.MultiFileReader(a,function(a){j.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=B),h(\"File reading error: \"+b),f&&f(!1)});g.start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,c,d,e,f,g){var i;if(i=jt.Util.checkContentIsZIP(a.content))try{var j=jt.Util.getZIPFilesSorted(i);if(b(j,c,d,e,f,g,!0))return}catch(a){jt.Util.error(a)}else if(b([a],c,d,e,f,g,!1))return;h(\"No valid \"+z[c]+\" found.\")},this.loadFromFiles=function(a,c,d,e,f){a=jt.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0}),b(a,c,d,e,f,null,!1)||h(\"No valid \"+z[c]+\" found.\")},this.loadROM=function(b,c,d,e){var f=jt.CartridgeCreator.createCartridgeFromRom(b);return!!f&&(l.insert(f,!d),a.storeROM(b),!0)};var k,l,m,n,o,p,q=0,r=!1,s=!1,t=1,u=1,v=2,w=jt.FileLoader.OPEN_TYPE;this.OPEN_TYPE=w;var x={ROM:\".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\",STATE:\".jst,.JST\",CART_DATA:\".dat,.DAT,.sram,.SRAM\",AUTO:\".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\"},y={ROM:!1,STATE:!1,CART_DATA:!1,AUTO:!1},z={ROM:\"ROM\",STATE:\"Savestate\",CART_DATA:\"Cartridge Data\",AUTO:\"ROM\"},A=\"javatarilasturl\",B=\"\\n\\nIMPORTANT: Directories are not supported for loading!\";Javatari.fileLoader=this},jt.FileLoader.OPEN_TYPE={AUTO:\"AUTO\",ROM:\"ROM\",STATE:\"STATE\",CART_DATA:\"CART_DATA\"},jt.FileDownloader=function(){\"use strict\";function a(){if(\"NONE\"===c)return alert(\"Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage.\"),!0}function b(){c=jt.Util.isIOSDevice()?jt.Util.isBrowserStandaloneMode()?\"NONE\":\"DATA\":\"SAFARI\"===jt.Util.browserInfo().name?\"DATA\":\"BLOB\",\"NONE\"!==c&&(d=document.createElement(\"a\"),d.style.display=\"none\",d.target=\"_blank\",d.href=\"#\",e.appendChild(d))}this.connectPeripherals=function(a){f=a},this.registerForDownloadElement=function(a){e=a},this.startDownloadBinary=function(e,g,h){try{if(c||b(),a())return;var i;if(\"BLOB\"===c){d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href);var j=new Blob([g],{type:\"data:application/octet-stream\"});i=(window.URL||window.webkitURL).createObjectURL(j)}else i=\"data:application/octet-stream;base64,\"+btoa(\"string\"==typeof g?g:jt.Util.int8BitArrayToByteString(g));d.download=e&&e.trim(),d.href=i,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}},this.startDownloadURL=function(e,g,h){try{if(c||b(),a())return;\"BLOB\"===c&&d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href),d.download=e&&e.trim(),\nd.href=g,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}};var c,d,e,f},jt.DOMKeys={},jt.DOMKeys.MOD_SHIFT=16,jt.DOMKeys.LOC_SHIFT=24,jt.DOMKeys.SHIFT=65536,jt.DOMKeys.CONTROL=131072,jt.DOMKeys.ALT=262144,jt.DOMKeys.META=524288,jt.DOMKeys.LOCNONE=0,jt.DOMKeys.LOCLEFT=16777216,jt.DOMKeys.LOCRIGHT=33554432,jt.DOMKeys.LOCNUM=50331648,jt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK=~(jt.DOMKeys.SHIFT|jt.DOMKeys.CONTROL|jt.DOMKeys.ALT|jt.DOMKeys.META),function(a,b,c,d){a.VK_F1={c:112,n:\"F1\"},a.VK_F2={c:113,n:\"F2\"},a.VK_F3={c:114,n:\"F3\"},a.VK_F4={c:115,n:\"F4\"},a.VK_F5={c:116,n:\"F5\"},a.VK_F6={c:117,n:\"F6\"},a.VK_F7={c:118,n:\"F7\"},a.VK_F8={c:119,n:\"F8\"},a.VK_F9={c:120,n:\"F9\"},a.VK_F10={c:121,n:\"F10\"},a.VK_F11={c:122,n:\"F11\"},a.VK_F12={c:123,n:\"F12\"},a.VK_1={c:49,n:\"1\"},a.VK_2={c:50,n:\"2\"},a.VK_3={c:51,n:\"3\"},a.VK_4={c:52,n:\"4\"},a.VK_5={c:53,n:\"5\"},a.VK_6={c:54,n:\"6\"},a.VK_7={c:55,n:\"7\"},a.VK_8={c:56,n:\"8\"},a.VK_9={c:57,n:\"9\"},a.VK_0={c:48,n:\"0\"},a.VK_Q={c:81,n:\"Q\"},a.VK_W={c:87,n:\"W\"},a.VK_E={c:69,n:\"E\"},a.VK_R={c:82,n:\"R\"},a.VK_T={c:84,n:\"T\"},a.VK_Y={c:89,n:\"Y\"},a.VK_U={c:85,n:\"U\"},a.VK_I={c:73,n:\"I\"},a.VK_O={c:79,n:\"O\"},a.VK_P={c:80,n:\"P\"},a.VK_A={c:65,n:\"A\"},a.VK_S={c:83,n:\"S\"},a.VK_D={c:68,n:\"D\"},a.VK_F={c:70,n:\"F\"},a.VK_G={c:71,n:\"G\"},a.VK_H={c:72,n:\"H\"},a.VK_J={c:74,n:\"J\"},a.VK_K={c:75,n:\"K\"},a.VK_L={c:76,n:\"L\"},a.VK_Z={c:90,n:\"Z\"},a.VK_X={c:88,n:\"X\"},a.VK_C={c:67,n:\"C\"},a.VK_V={c:86,n:\"V\"},a.VK_B={c:66,n:\"B\"},a.VK_N={c:78,n:\"N\"},a.VK_M={c:77,n:\"M\"},a.VK_ESCAPE={c:27,n:\"Esc\"},a.VK_ENTER={c:13,n:\"Enter\"},a.VK_SPACE={c:32,n:\"Space\"},a.VK_TAB={c:9,n:\"Tab\"},a.VK_BACKSPACE={c:8,n:\"BackSpc\"},a.VK_CONTEXT={c:93,n:\"Context\"},a.VK_LSHIFT={c:16|b,n:\"L-Shift\"},a.VK_LCONTROL={c:17|b,n:\"L-Control\"},a.VK_LALT={c:18|b,n:\"L-Alt\"},a.VK_LMETA={c:91|b,n:\"L-Meta\"},a.VK_RSHIFT={c:16|c,n:\"R-Shift\"},a.VK_RCONTROL={c:17|c,n:\"R-Control\"},a.VK_RALT={c:18|c,n:\"R-Alt\"},a.VK_RMETA={c:91|c,n:\"R-Meta\"},a.VK_CAPS_LOCK={c:20,n:\"CapsLock\"},a.VK_PRINT_SCREEN={c:44,n:\"PrtScr\"},a.VK_SCROLL_LOCK={c:145,n:\"ScrLck\"},a.VK_PAUSE={c:19,n:\"Pause\"},a.VK_BREAK={c:3,n:\"Break\"},a.VK_INSERT={c:45,n:\"Ins\"},a.VK_DELETE={c:46,n:\"Del\"},a.VK_HOME={c:36,n:\"Home\"},a.VK_END={c:35,n:\"End\"},a.VK_PAGE_UP={c:33,n:\"PgUp\"},a.VK_PAGE_DOWN={c:34,n:\"PgDown\"},a.VK_NUM_INSERT={c:45|d,n:\"Num Ins\"},a.VK_NUM_DELETE={c:46|d,n:\"Num Del\"},a.VK_NUM_HOME={c:36|d,n:\"Num Home\"},a.VK_NUM_END={c:35|d,n:\"Num End\"},a.VK_NUM_PAGE_UP={c:33|d,n:\"Num PgUp\"},a.VK_NUM_PAGE_DOWN={c:34|d,n:\"Num PgDown\"},a.VK_UP={c:38,n:\"Up\"},a.VK_DOWN={c:40,n:\"Down\"},a.VK_LEFT={c:37,n:\"Left\"},a.VK_RIGHT={c:39,n:\"Right\"},a.VK_NUM_UP={c:38|d,n:\"Num Up\"},a.VK_NUM_DOWN={c:40|d,n:\"Num Down\"},a.VK_NUM_LEFT={c:37|d,n:\"Num Left\"},a.VK_NUM_RIGHT={c:39|d,n:\"Num Right\"},a.VK_NUMLOCK={c:144,n:\"NumLock\"},a.VK_NUM_COMMA={c:110|d,n:\"Num ,\"},a.VK_NUM_DIVIDE={c:111|d,n:\"Num /\"},a.VK_NUM_MULTIPLY={c:106|d,n:\"Num *\"},a.VK_NUM_MINUS={c:109|d,n:\"Num -\"},a.VK_NUM_PLUS={c:107|d,n:\"Num +\"},a.VK_NUM_PERIOD={c:194|d,n:\"Num .\"},a.VK_NUM_0={c:96|d,n:\"Num 0\"},a.VK_NUM_1={c:97|d,n:\"Num 1\"},a.VK_NUM_2={c:98|d,n:\"Num 2\"},a.VK_NUM_3={c:99|d,n:\"Num 3\"},a.VK_NUM_4={c:100|d,n:\"Num 4\"},a.VK_NUM_5={c:101|d,n:\"Num 5\"},a.VK_NUM_6={c:102|d,n:\"Num 6\"},a.VK_NUM_7={c:103|d,n:\"Num 7\"},a.VK_NUM_8={c:104|d,n:\"Num 8\"},a.VK_NUM_9={c:105|d,n:\"Num 9\"},a.VK_NUM_CLEAR={c:12|d,n:\"Num Clear\"},a.VK_NUM_ENTER={c:13|d,n:\"Num Enter\"},a.VK_QUOTE={c:222,n:\"'\"},a.VK_BACKQUOTE={c:192,n:\"`\"},a.VK_MINUS={c:189,n:\"-\"},a.VK_EQUALS={c:187,n:\"=\"},a.VK_OPEN_BRACKET={c:219,n:\"[\"},a.VK_CLOSE_BRACKET={c:221,n:\"]\"},a.VK_COMMA={c:188,n:\",\"},a.VK_PERIOD={c:190,n:\".\"},a.VK_SEMICOLON={c:186,n:\";\"},a.VK_SLASH={c:191,n:\"/\"},a.VK_BACKSLASH={c:220,n:\"\\\\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:[\"Alt\",\"F1\"]},a.VK_FF_MINUS={c:173,n:\"-\"},a.VK_FF_EQUALS={c:61,n:\"=\"},a.VK_FF_SEMICOLON={c:59,n:\";\"},a.VK_BR_QUOTE={c:192,n:\"'\"},a.VK_BR_OPEN_BRACKET={c:221,n:\"[\"},a.VK_BR_CLOSE_BRACKET={c:220,n:\"]\"},a.VK_BR_SEMICOLON={c:191,n:\";\"},a.VK_BR_SLASH={c:193,n:\"/\"},a.VK_BR_BACKSLASH={c:226,n:\"\\\\\"},a.VK_BR_CEDILLA={c:186,n:\"Ç\"},a.VK_BR_TILDE={c:222,n:\"~\"},a.VK_BR_ACUTE={c:219,n:\"´\"},a.VK_FF_BR_TILDE={c:176,n:\"~\"},a.VK_VOID={c:-1,n:\"\"}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:\"Esc\",13:\"Enter\",32:\"Space\",9:\"Tab\",8:\"BkSpc\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",91:\"Meta\",93:\"Context\",20:\"Caps\",44:\"PrtScr\",145:\"ScrLck\",19:\"Pause\",3:\"Break\",45:\"Ins\",46:\"Del\",36:\"Home\",35:\"End\",33:\"PgUp\",34:\"PgDown\",38:\"Up\",40:\"Down\",37:\"Left\",39:\"Right\"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<<this.LOC_SHIFT:b|a.location<<this.LOC_SHIFT|(a.shiftKey?this.SHIFT:0)|(a.ctrlKey?this.CONTROL:0)|(a.altKey?this.ALT:0)|(a.metaKey?this.META:0)},jt.DOMKeys.nameForKeyboardEvent=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift(\"Meta\"),a.altKey&&c.unshift(\"Alt\"),a.ctrlKey&&c.unshift(\"Ctrl\"),a.shiftKey&&c.unshift(\"Shift\")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return c},jt.GamepadButtons={GB_1:{b:0,n:\"1\"},GB_2:{b:1,n:\"2\"},GB_3:{b:2,n:\"3\"},GB_4:{b:3,n:\"4\"},GB_L1:{b:4,n:\"L1\"},GB_R1:{b:5,n:\"R1\"},GB_L2:{b:6,n:\"L2\"},GB_R2:{b:7,n:\"R2\"},GB_BACK:{b:8,n:\"BACK\"},GB_START:{b:9,n:\"START\"},GB_S1:{b:10,n:\"S1\"},GB_S2:{b:11,n:\"S2\"},GB_UP:{b:12,n:\"&#9650;\"},GB_DOWN:{b:13,n:\"&#9660;\"},GB_LEFT:{b:14,n:\"&#9668;\"},GB_RIGHT:{b:15,n:\"&#9658;\"},GB_LOGO:{b:16,n:\"LOGO\"},GB_VOID:{b:-1,n:\"Unbound\"}},jt.TouchControls={buttons:[\"T_B\",\"T_A\"]},jt.GamepadConsoleControls=function(a){\"use strict\";function b(a,b){this.index=a,this.update=function(b){return c=b[a],!!c},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return\"object\"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)<l?a=0:a*=f,(b<0?-b:b)<l?b=0:b*=g,0===a&&0===b)return-1;var h=(1-Math.atan2(a,b)/Math.PI)/2;return h+=1/16,h>=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=b.paddleSens*-190,k=b.paddleCenter*-190+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){r=!!navigator.getGamepads,r&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){return r?(++u,u>0&&(u=-2),u===-2?j=k=null:u===-1&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),void i.showOSD(\"Gamepads \"+this.getModeDesc(),!0)):void i.showOSD(\"Joysticks unavailable (not supported by browser)\",!0,!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&u!==-2&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();\nj?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a),j&&c(!0,!0)),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a),k&&c(!1,!0))}};var c=function(a,b){i.showOSD((a^x^w?\"P1\":\"P2\")+\" Gamepad \"+(b?\"connected\":\"disconnected\"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f<g;f++)if(d[f]&&d[f].buttons.length>0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,h.controlValueChanged(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(g!==-1||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var i=!1,j=!1,k=!1,l=!1;switch(g){case 0:i=!0;break;case 1:i=j=!0;break;case 2:j=!0;break;case 3:k=j=!0;break;case 4:k=!0;break;case 5:k=l=!0;break;case 6:l=!0;break;case 7:i=l=!0}a.processKey(e.up.c,i),a.processKey(e.right.c,j),a.processKey(e.down.c,k),a.processKey(e.left.c,l),c.direction=g}var m=b.getButtonDigital(d.button);m!==c.button&&(a.processKey(e.button.c,m),c.button=m),m=b.getButtonDigital(d.buttonT),m!==c.buttonT&&(a.processKey(e.buttonT.c,m),c.buttonT=m);var n=b.getButtonDigital(d.select);n!==c.select&&(h.controlStateChanged(t.SELECT,n),c.select=n);var o=b.getButtonDigital(d.reset);o!==c.reset&&(h.controlStateChanged(t.RESET,o),c.reset=o);var p=b.getButtonDigital(d.pause);p!==c.pause&&(h.controlStateChanged(t.PAUSE,p),c.pause=p);var q=b.getButtonDigital(d.fastSpeed);q!==c.fastSpeed&&(h.controlStateChanged(t.FAST_SPEED,q),c.fastSpeed=q);var r=b.getButtonDigital(d.slowSpeed);r!==c.slowSpeed&&(h.controlStateChanged(t.SLOW_SPEED,r),c.slowSpeed=r)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return\"AUTO\";case 0:return\"AUTO (swapped)\";default:return r?\"DISABLED\":\"NOT SUPPORTED\"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){\"use strict\";function b(){v.classList.toggle(\"jt-poweroff\",!I),v.classList.toggle(\"jt-paused\",J)}function c(){var a=z>0;document.documentElement.classList.toggle(\"jt-touch-active\",a),document.documentElement.classList.toggle(\"jt-dir-big\",B),s.touchControlsActiveUpdate(a,B)}function d(a){if(jt.Util.blockEvent(a),null===D){void 0===t&&i();var b=a.changedTouches[0];D=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==D&&(D=null,h(-1))}function f(a){if(jt.Util.blockEvent(a),null!==D)for(var b=a.changedTouches,c=0;c<b.length;++c)if(b[c].identifier===D)return void g(b[c].pageX,b[c].pageY)}function g(a,b){var c=-1,d=a-t,e=b-u,f=Math.sqrt(d*d+e*e);f>F&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(E!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(w.up.c,c),a.processKey(w.right.c,d),a.processKey(w.down.c,e),a.processKey(w.left.c,f),E=b}}function i(){var a=C.getBoundingClientRect();F=.14*(a.right-a.left)|0,t=((a.left+a.right)/2|0)+window.pageXOffset,u=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(w[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),r.controlStateChanged(I?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.hapticFeedback(),r.controlStateChanged(J?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function o(b){jt.Util.blockEvent(b),J||(a.hapticFeedback(),r.controlStateChanged(J?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1))}function p(){H.reset(),t=u=void 0,D=null,h(-1)}function q(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){r=a},this.connectScreen=function(a){s=a},this.powerOn=function(){this.applyPreferences(),p(),c()},this.powerOff=function(){},this.releaseControllers=function(){p()},this.updateConsolePanelSize=function(a,b,c,d,e){if(v&&d){var f=!e&&(a-b-10)/2<L;v.classList.toggle(\"jt-center\",f),f?v.style.bottom=\"\"+(jt.ScreenGUI.BAR_HEIGHT+c+3)+\"px\":v.style.removeProperty(\"bottom\")}},this.toggleMode=function(){return x?(z++,z>2&&(z=0),p(),this.applyPreferences(),c(),void s.showOSD(\"Touch Controls \"+this.getModeDesc(),!0)):void s.showOSD(\"Touch Controls unavailable. Not a touch device!\",!0,!0)},this.setP1ControlsMode=function(a){A=a,this.applyPreferences()},this.getModeDesc=function(){switch(z){case-1:return\"AUTO\";case 0:return\"DISABLED\";case 1:return\"ENABLED\";case 2:return\"ENABLED (swapped)\"}},this.toggleTouchDirBig=function(){B=!B,K.touch.directionalBig=B,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return B},this.setupTouchControlsIfNeeded=function(a){function c(){function a(a){var c=document.createElement(\"div\");c.classList.add(\"jt-touch-dir-\"+a),b.appendChild(c);var d=document.createElement(\"div\");d.classList.add(\"jt-arrow-\"+a),b.appendChild(d)}var b=document.createElement(\"div\");return b.classList.add(\"jt-touch-dir\"),b.classList.add(\"jt-touch-dir-joy\"),a(\"left\"),a(\"right\"),a(\"up\"),a(\"down\"),b}function g(a,b){var c=document.createElement(\"div\");c.id=\"jt-touch-\"+b,c.classList.add(\"jt-touch-button\"),c.classList.add(\"jt-touch-button-joy\"),c.classList.add(\"jt-touch-button-joy-\"+b),c.jtControl=b,c.addEventListener(\"touchstart\",j),c.addEventListener(\"touchmove\",jt.Util.blockEvent),c.addEventListener(\"touchend\",k),c.addEventListener(\"touchcancel\",k),c.addEventListener(\"mousedown\",j),c.addEventListener(\"mouseup\",k),G[b]=c,a.appendChild(c)}if(!(C||z<=0)){v=document.createElement(\"div\"),v.id=\"jt-touch-speed\";var h=document.createElement(\"div\");h.id=\"jt-touch-pause\",h.addEventListener(\"touchstart\",m),v.appendChild(h);var i=document.createElement(\"div\");i.id=\"jt-touch-fast\",i.addEventListener(\"touchstart\",n),i.addEventListener(\"touchend\",o),v.appendChild(i),a.appendChild(v);var l=document.createElement(\"div\");l.id=\"jt-touch-left\",C=c(),C.addEventListener(\"touchstart\",d),C.addEventListener(\"touchmove\",f),C.addEventListener(\"touchend\",e),C.addEventListener(\"touchcancel\",e),l.appendChild(C),a.appendChild(l),l=document.createElement(\"div\"),l.id=\"jt-touch-right\",g(l,\"buttonT\"),g(l,\"button\"),a.appendChild(l),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){I=a,J=c,v&&b()},this.applyPreferences=function(){B=!!K.touch.directionalBig;var a=2===z?1:0;w=K.joystickKeys[a]};var r,s,t,u,v,w,x=jt.Util.isTouchDevice(),y=jt.Util.isMobileDevice(),z=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:x&&y?1:0,A=!1,B=!1,C=null,D=null,E=-1,F=0,G={},H=new q,I=!1,J=!1,K=Javatari.userPreferences.current,L=84;this.saveState=function(){return{}},this.loadState=function(a){p()}},jt.DOMConsoleControls=function(a){\"use strict\";function b(){l=new jt.GamepadConsoleControls(g),m=new jt.DOMTouchControls(g),g.applyPreferences()}function c(a){B=a,C=B?60/F[B]|0:0,E=C/2|0,D=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return g.processKey(c,b),!1}function e(a,b){y&&(a=o(a),p(a,b))||b!==u[a]&&(h.controlStateChanged(a,b),u[a]=b)}function f(){i.controlsModeStateUpdate()}var g=this;this.connect=function(a){h=a,h.connectControls(this),l.connect(a),m.connect(a)},this.connectPeripherals=function(a){i=a,l.connectScreen(a),m.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener(\"keydown\",this.keyDown),\na.addEventListener(\"keyup\",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){m.setupTouchControlsIfNeeded(a)},this.powerOn=function(){n(),l.powerOn(),m.powerOn(),0===O?q(!1,!1):1===O&&q(!0,!1)},this.powerOff=function(){q(!1,!1),l.powerOff(),m.powerOff()},this.releaseControllers=function(){for(var a in u)u[a]&&(h.controlStateChanged(0|a,!1),u[a]=!1);I=J=M=N=!1,v[t.JOY0_BUTTON]=v[t.JOY1_BUTTON]=!1,m.releaseControllers()},this.getTouchControls=function(){return m},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!x),r(),f()},this.setP1ControlsMode=function(a){x=a,l.setP1ControlsMode(a),m.setP1ControlsMode(a),this.releaseControllers(),s()},this.isP1ControlsMode=function(){return x},this.togglePaddleMode=function(){q(!y,!0),f()},this.isPaddleMode=function(){return y},this.toggleGamepadMode=function(){l.toggleMode(),f()},this.getGamepadModeDesc=function(){return l.getModeDesc()},this.toggleTouchControlsMode=function(){m.toggleMode(),f()},this.toggleTouchDirBig=function(){m.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((B+1)%11),i.showOSD(\"Turbo Fire\"+(B?\" speed: \"+this.getTurboFireSpeedDesc():\": OFF\"),!0),w.turboFireSpeed=B,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return B?B+\"x\":\"OFF\"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:y?\"ON\":\"OFF\",active:y};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:m.isDirBig()?\"ON\":\"OFF\",active:m.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:A?\"ON\":\"OFF\",active:!!A};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!B}}return{label:\"Unknown\",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){m.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(C){if(--D,D===E||0===D){var a=D>0;v[t.JOY0_BUTTON]&&e(t.JOY0_BUTTON,a),v[t.JOY1_BUTTON]&&e(t.JOY1_BUTTON,a)}D<=0&&(D=C)}l.controlsClockPulse(),y&&(J?I||(G-=H,G<0&&(G=0),h.controlValueChanged(t.PADDLE0_POSITION,G)):I&&(G+=H,G>380&&(G=380),h.controlValueChanged(t.PADDLE0_POSITION,G)),N?M||(K-=L,K<0&&(K=0),h.controlValueChanged(t.PADDLE1_POSITION,K)):M&&(K+=L,K>380&&(K=380),h.controlValueChanged(t.PADDLE1_POSITION,K)))},this.toggleHapticFeedback=function(){z?(A=!A,w.hapticFeedback=A,Javatari.userPreferences.setDirty()):i.showOSD(\"Haptic Feedback not available\",!0,!0)},this.hapticFeedback=function(){A&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!A||\"touchstart\"!==a.type&&\"touchend\"!==a.type&&\"touchmove\"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(O>=0)){var b=1===a.rom.info.p;y!==b&&q(b,!1)}},this.processKey=function(b,c){var d=k[b];if(d){if(c===v[d])return;c&&(D=E),v[d]=c}else if(d=j[b],!d)return a.processKey(b,c);e(d,c)},this.applyPreferences=function(){s(),c(w.turboFireSpeed),m.applyPreferences(),l.applyPreferences()};var h,i,j,k,l,m,n=function(){window.onhelp=function(){return!1}},o=function(a){switch(a){case t.JOY0_BUTTON:return t.PADDLE0_BUTTON;case t.JOY1_BUTTON:return t.PADDLE1_BUTTON;default:return a}},p=function(a,b){if(b)switch(a){case t.JOY0_LEFT:return I=!0,!0;case t.JOY0_RIGHT:return J=!0,!0;case t.JOY0_UP:return H<10&&H++,i.showOSD(\"P1 Paddle speed: \"+H,!0),!0;case t.JOY0_DOWN:return H>1&&H--,i.showOSD(\"P1 Paddle speed: \"+H,!0),!0;case t.JOY1_LEFT:return M=!0,!0;case t.JOY1_RIGHT:return N=!0,!0;case t.JOY1_UP:return L<10&&L++,i.showOSD(\"P2 Paddle speed: \"+L,!0),!0;case t.JOY1_DOWN:return L>1&&L--,i.showOSD(\"P2 Paddle speed: \"+L,!0),!0}else switch(a){case t.JOY0_LEFT:return I=!1,!0;case t.JOY0_RIGHT:return J=!1,!0;case t.JOY1_LEFT:return M=!1,!0;case t.JOY1_RIGHT:return N=!1,!0}return!1},q=function(a,b){y!==a&&g.releaseControllers(),y=a,H=L=2,G=K=y?190:-1,h.controlValueChanged(t.PADDLE0_POSITION,G),h.controlValueChanged(t.PADDLE1_POSITION,K),l.setPaddleMode(y),b&&r()},r=function(){i.showOSD(\"Controllers: \"+(y?\"Paddles\":\"Joysticks\")+(x?\", Swapped\":\"\"),!0)},s=function(){var a=jt.DOMKeys;j={},k={},j[P]=t.POWER,j[P|a.ALT]=t.POWER,j[P|a.SHIFT]=t.POWER_FRY,j[P|a.SHIFT|a.ALT]=t.POWER_FRY,j[Q]=t.BLACK_WHITE,j[Q|a.ALT]=t.BLACK_WHITE,j[R]=t.SELECT,j[R|a.ALT]=t.SELECT,j[S]=t.RESET,j[S|a.ALT]=t.RESET,j[T]=t.DIFFICULTY0,j[T|a.ALT]=t.DIFFICULTY0,j[U]=t.DIFFICULTY1,j[U|a.ALT]=t.DIFFICULTY1,j[V]=t.FAST_SPEED,j[V|a.ALT]=t.FAST_SPEED,j[V|a.SHIFT]=t.SLOW_SPEED,j[V|a.SHIFT|a.ALT]=t.SLOW_SPEED,j[W|a.SHIFT|a.ALT]=t.INC_SPEED,j[X|a.SHIFT|a.ALT]=t.DEC_SPEED,j[Y|a.SHIFT|a.ALT]=t.NORMAL_SPEED,j[Z|a.SHIFT|a.ALT]=t.MIN_SPEED,j[$|a.ALT]=t.PAUSE,j[$|a.SHIFT|a.ALT]=t.PAUSE_AUDIO_ON,j[_|a.ALT]=t.FRAME,j[aa|a.ALT]=t.FRAME,j[ca|a.ALT]=t.TRACE,j[da|a.ALT]=t.SHOW_INFO,j[ba|a.ALT]=t.DEBUG,j[ea|a.ALT]=t.NO_COLLISIONS,j[fa|a.ALT]=t.VIDEO_STANDARD,j[ga|a.ALT]=t.VIDEO_STANDARD,j[ha|a.ALT]=t.VSYNCH,j[ia|a.CONTROL]=t.SAVE_STATE_0,j[ja|a.CONTROL]=t.SAVE_STATE_0,j[ia|a.CONTROL|a.ALT]=t.SAVE_STATE_0,j[ja|a.CONTROL|a.ALT]=t.SAVE_STATE_0,j[ka|a.CONTROL]=t.SAVE_STATE_1,j[ka|a.CONTROL|a.ALT]=t.SAVE_STATE_1,j[la|a.CONTROL]=t.SAVE_STATE_2,j[la|a.CONTROL|a.ALT]=t.SAVE_STATE_2,j[ma|a.CONTROL]=t.SAVE_STATE_3,j[ma|a.CONTROL|a.ALT]=t.SAVE_STATE_3,j[na|a.CONTROL]=t.SAVE_STATE_4,j[na|a.CONTROL|a.ALT]=t.SAVE_STATE_4,j[oa|a.CONTROL]=t.SAVE_STATE_5,j[oa|a.CONTROL|a.ALT]=t.SAVE_STATE_5,j[pa|a.CONTROL]=t.SAVE_STATE_6,j[pa|a.CONTROL|a.ALT]=t.SAVE_STATE_6,j[qa|a.CONTROL]=t.SAVE_STATE_7,j[qa|a.CONTROL|a.ALT]=t.SAVE_STATE_7,j[ra|a.CONTROL]=t.SAVE_STATE_8,j[ra|a.CONTROL|a.ALT]=t.SAVE_STATE_8,j[sa|a.CONTROL]=t.SAVE_STATE_9,j[sa|a.CONTROL|a.ALT]=t.SAVE_STATE_9,j[ta|a.CONTROL]=t.SAVE_STATE_10,j[ta|a.CONTROL|a.ALT]=t.SAVE_STATE_10,j[ua|a.CONTROL]=t.SAVE_STATE_11,j[va|a.CONTROL]=t.SAVE_STATE_11,j[ua|a.CONTROL|a.ALT]=t.SAVE_STATE_11,j[va|a.CONTROL|a.ALT]=t.SAVE_STATE_11,j[wa|a.CONTROL]=t.SAVE_STATE_12,j[xa|a.CONTROL]=t.SAVE_STATE_12,j[wa|a.CONTROL|a.ALT]=t.SAVE_STATE_12,j[xa|a.CONTROL|a.ALT]=t.SAVE_STATE_12,j[ia|a.ALT]=t.LOAD_STATE_0,j[ja|a.ALT]=t.LOAD_STATE_0,j[ka|a.ALT]=t.LOAD_STATE_1,j[la|a.ALT]=t.LOAD_STATE_2,j[ma|a.ALT]=t.LOAD_STATE_3,j[na|a.ALT]=t.LOAD_STATE_4,j[oa|a.ALT]=t.LOAD_STATE_5,j[pa|a.ALT]=t.LOAD_STATE_6,j[qa|a.ALT]=t.LOAD_STATE_7,j[ra|a.ALT]=t.LOAD_STATE_8,j[sa|a.ALT]=t.LOAD_STATE_9,j[ta|a.ALT]=t.LOAD_STATE_10,j[ua|a.ALT]=t.LOAD_STATE_11,j[va|a.ALT]=t.LOAD_STATE_11,j[wa|a.ALT]=t.LOAD_STATE_12,j[xa|a.ALT]=t.LOAD_STATE_12;var b=x?1:0,c=x?0:1;j[w.joystickKeys[b].left.c]=t.JOY0_LEFT,j[w.joystickKeys[b].up.c]=t.JOY0_UP,j[w.joystickKeys[b].right.c]=t.JOY0_RIGHT,j[w.joystickKeys[b].down.c]=t.JOY0_DOWN,j[w.joystickKeys[b].button.c]=t.JOY0_BUTTON,j[w.joystickKeys[c].left.c]=t.JOY1_LEFT,j[w.joystickKeys[c].up.c]=t.JOY1_UP,j[w.joystickKeys[c].right.c]=t.JOY1_RIGHT,j[w.joystickKeys[c].down.c]=t.JOY1_DOWN,j[w.joystickKeys[c].button.c]=t.JOY1_BUTTON,k[w.joystickKeys[b].buttonT.c]=t.JOY0_BUTTON,k[w.joystickKeys[c].buttonT.c]=t.JOY1_BUTTON},t=jt.ConsoleControls,u={},v={},w=Javatari.userPreferences.current,x=!1,y=!1,z=!!navigator.vibrate,A=z&&!!w.hapticFeedback,B=0,C=0,D=0,E=0,F=[0,1,2,2.4,3,4,5,6,7.5,10,12],G=0,H=3,I=!1,J=!1,K=0,L=3,M=!1,N=!1,O=Javatari.PADDLES_MODE,P=jt.DOMKeys.VK_F1.c,Q=jt.DOMKeys.VK_F2.c,R=jt.DOMKeys.VK_F11.c,S=jt.DOMKeys.VK_F12.c,T=jt.DOMKeys.VK_F4.c,U=jt.DOMKeys.VK_F9.c,V=jt.DOMKeys.VK_TAB.c,W=jt.DOMKeys.VK_UP.c,X=jt.DOMKeys.VK_DOWN.c,Y=jt.DOMKeys.VK_RIGHT.c,Z=jt.DOMKeys.VK_LEFT.c,$=jt.DOMKeys.VK_P.c,_=jt.DOMKeys.VK_O.c,aa=jt.DOMKeys.VK_F.c,ba=jt.DOMKeys.VK_D.c,ca=jt.DOMKeys.VK_VOID,da=jt.DOMKeys.VK_I.c,ea=jt.DOMKeys.VK_C.c,fa=jt.DOMKeys.VK_V.c,ga=jt.DOMKeys.VK_Q.c,ha=jt.DOMKeys.VK_W.c,ia=jt.DOMKeys.VK_QUOTE.c,ja=jt.DOMKeys.VK_BACKQUOTE.c,ka=jt.DOMKeys.VK_1.c,la=jt.DOMKeys.VK_2.c,ma=jt.DOMKeys.VK_3.c,na=jt.DOMKeys.VK_4.c,oa=jt.DOMKeys.VK_5.c,pa=jt.DOMKeys.VK_6.c,qa=jt.DOMKeys.VK_7.c,ra=jt.DOMKeys.VK_8.c,sa=jt.DOMKeys.VK_9.c,ta=jt.DOMKeys.VK_0.c,ua=jt.DOMKeys.VK_MINUS.c,va=jt.DOMKeys.VK_FF_MINUS.c,wa=jt.DOMKeys.VK_EQUALS.c,xa=jt.DOMKeys.VK_FF_EQUALS.c;\nb(),jt.DOMConsoleControls.hapticFeedback=this.hapticFeedback,jt.DOMConsoleControls.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},jt.ScreenGUI=jt.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},jt.ScreenGUI.html=function(){return'<div id=\"jt-screen-fs\" tabindex=\"0\"> <div id=\"jt-screen-fs-center\" tabindex=\"-1\"> <div id=\"jt-screen-canvas-outer\"> <canvas id=\"jt-screen-canvas\" tabindex=\"-1\"></canvas> <img id=\"jt-canvas-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <div id=\"jt-logo\"> <div id=\"jt-logo-center\"> <img id=\"jt-logo-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <img id=\"jt-logo-image\" draggable=\"false\" src=\"'+jt.Images.urls.logo+'\"> <div id=\"jt-logo-message\"> <div id=\"jt-logo-message-text\"></div> <div id=\"jt-logo-message-ok\"> <div id=\"jt-logo-message-ok-text\"></div> </div> </div> </div> </div> <div id=\"jt-osd\"></div> </div> <div id=\"jt-bar\"> <div id=\"jt-bar-inner\"></div> </div> <div id=\"jt-console-panel\" class=\"jt-console-panel\" tabindex=\"-1\"> </div> </div> <div id=\"jt-screen-scroll-message\"> Swipe up/down on the Screen <br>to hide the browser bars! </div> </div>'},jt.ScreenGUI.htmlConsolePanel='<div id=\"jt-console-panel-p0-diff-label\" class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-p1-diff-label\" class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power-labels\" class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-reset-labels\" class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power\" class=\"jt-console-panel-power jt-console-panel-lever\"></div> <div id=\"jt-console-panel-color\" class=\"jt-console-panel-color jt-console-panel-lever\"></div> <div id=\"jt-console-panel-select\" class=\"jt-console-panel-select jt-console-panel-lever\"></div> <div id=\"jt-console-panel-reset\" class=\"jt-console-panel-reset jt-console-panel-lever\"></div> <div id=\"jt-console-panel-p0-diff\" class=\"jt-console-panel-p0-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-p1-diff\" class=\"jt-console-panel-p1-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-cart-image\" class=\"jt-console-panel-cart-image\"></div> <div id=\"jt-console-panel-cart-load\" class=\"jt-console-panel-cart-load\"></div> <div id=\"jt-console-panel-cart-file\" class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-url\" class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-label\" class=\"jt-console-panel-cart-label\"></div>',jt.ScreenGUI.css=function(){return\"html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: \"+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+\"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646;    /* one behind fsElement */ } html.jt-started #\"+Javatari.SCREEN_ELEMENT_ID+\" { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center {      /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: \"+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible;                    /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url(\"'+jt.Images.urls.iconSprites+'\"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 8px 0 6px; } #jt-bar-select { margin: 0 2px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+\"px; font-size: \"+this.BAR_MENU_ITEM_FONT_SIZE+\"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: \"+this.BAR_MENU_WIDTH+\"px; height: \"+this.BAR_MENU_ITEM_HEIGHT+\"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: \"+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: \"\"; position: absolute; width: 6px; height: 19px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+\"px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -\"+(jt.ConsolePanel.DEFAULT_HEIGHT+2)+\"px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: \"+(jt.ScreenGUI.BAR_HEIGHT+2)+'px; border: none; transform-origin: center bottom; } #jt-screen-fs .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-screen-fs .jt-select-dialog.jt-show { display: block; } #jt-screen-fs .jt-select-dialog .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } #jt-screen-fs .jt-select-dialog ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } #jt-screen-fs .jt-select-dialog li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px;       /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } #jt-screen-fs .jt-select-dialog li.jt-visible { display: block; } #jt-screen-fs .jt-select-dialog li.jt-selected { color: white; background: hsl(358, 67%, 46%); } #jt-screen-fs .jt-select-dialog li.jt-droptarget { color: white; border-color: lightgray; } #jt-screen-fs .jt-select-dialog li.jt-toggle::after { content: \"\"; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } #jt-screen-fs .jt-select-dialog li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up    { border-bottom-color: inherit; } .jt-arrow-down  { border-top-color: inherit; } .jt-arrow-left  { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 310px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: \"Quick Options\"; display: block; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: \"\"; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: \"\"; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: \"\"; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow:  inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: \"\"; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button  { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: \"\"; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused  #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:'+jt.ConsolePanel.DEFAULT_WIDTH+\"px; height:\"+jt.ConsolePanel.DEFAULT_HEIGHT+'px; background: black url(\"'+jt.Images.urls.panel+'\") no-repeat; background-size: 460px 134px; box-shadow: '+jt.ConsolePanel.sameBoxShadowAsScreen()+'; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url(\"'+jt.Images.urls.iconSprites+'\") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: \"\"; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: \"\"; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) {    /* Landscape */ #jt-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { left: calc(-6px - \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px; right: \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px; } } @media only screen and (orientation: portrait) {    /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: \"+(this.BAR_HEIGHT+12)+\"px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) {    /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) {    /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } \";\n},jt.Monitor=function(a){\"use strict\";function b(){n(),m(),e.setVideoStandard(H)}function c(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(10*b)/10}function d(a){var b=a<.5?.5:a;return Math.round(10*b)/10}var e=this;this.connect=function(a){s=a,s.connectMonitor(this)},this.nextLine=function(a,b){var c=!1;return I<u?I>=B&&I<B+y&&r.set(a,(I-B)*t):c=g(),I++,F||L++,b&&(F||h(),c|=f()),c};var f=function(){return!(I<v)&&(N&&a.showOSD(H.name+\"  \"+I+\" lines\",!0),I=0,J++,!0)},g=function(){return I>w&&f()};this.setVideoStandard=function(a){H=a,t=a.totalWidth,u=a.totalHeight,v=u-R,w=u+R+S,K&&(z=H.defaultHeightPct,C=H.defaultOriginYPct),k(x,z),j(A,C)};var h=function(){var a=L;L=0,(a>=250&&a<=281||a>=300&&a<=325)&&++G>=5&&i(a)},i=function(a){F=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=M,c=a-F.totalHeight;c=c>2?(c>6?6:c)-2:0,c!=b&&(M=c,e.setVideoStandard(F))};this.videoSignalOff=function(){I=0,a.videoSignalOff()};var j=function(a,b){A=a,A<0?A=0:A>t-x&&(A=t-x),C=b,C<0?C=0:C/100*u>u-y&&(C=(u-y)/u*100);var c=M/2;B=C/100*u+c|0,B+y>u&&(B=u-y)},k=function(a,b){x=a,x<10?x=10:x>t&&(x=t),z=b,z<10?z=10:z>100&&(z=100),y=z/100*(u+M)|0,y>u&&(y=u),o.width=x,o.height=y,j(A,C),l()},l=function(){a&&a.displayMetrics(x,y)},m=function(){K=!0,A=Q,C=H.defaultOriginYPct,k(O,H.defaultHeightPct)},n=function(){o=document.createElement(\"canvas\"),o.width=O,o.height=P,p=o.getContext(\"2d\",{alpha:!1,antialias:!1}),p.globalCompositeOperation=\"copy\",p.globalAlpha=1,q=p.createImageData(jt.VideoStandard.PAL.totalWidth,jt.VideoStandard.PAL.totalHeight),r=new Uint32Array(q.data.buffer)};this.currentLine=function(){return I},this.refresh=function(){p.putImageData(q,-A,0,A,0,x,y),a.refresh(o,x,y)},this.videoStandardDetectionStart=function(){F=null,G=0,L=0},this.getVideoStandardDetected=function(){return F},this.toggleShowInfo=function(){N=!N,N||a.showOSD(null,!0)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDefaults=function(){m(),a.crtModeSetDefault(),a.crtFilterSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtModeToggle=function(){a.crtModeToggle()},this.crtFilterToggle=function(){a.crtFilterToggle()},this.fullscreenToggle=function(){a.displayToggleFullscreen()},this.displayAspectDecrease=function(){this.displayScale(c(D-T),E),this.showOSD(\"Display Aspect: \"+D.toFixed(2)+\"x\",!0)},this.displayAspectIncrease=function(){this.displayScale(c(D+T),E),this.showOSD(\"Display Aspect: \"+D.toFixed(2)+\"x\",!0)},this.displayScaleDecrease=function(){this.displayScale(D,d(E-T)),this.showOSD(\"Display Size: \"+E.toFixed(2)+\"x\",!0)},this.displayScaleIncrease=function(){this.displayScale(D,d(E+T)),this.showOSD(\"Display Size: \"+E.toFixed(2)+\"x\",!0)},this.viewportOriginDecrease=function(){K=!1,j(A,C+U),this.showOSD(\"Viewport Origin: \"+B,!0)},this.viewportOriginIncrease=function(){K=!1,j(A,C-U),this.showOSD(\"Viewport Origin: \"+B,!0)},this.viewportSizeDecrease=function(){m(),this.showOSD(\"Viewport Size: Standard\",!0)},this.viewportSizeIncrease=function(){K=!1,k(t,100),this.showOSD(\"Viewport Size: Full Signal\",!0)},this.displayScale=function(b,c){D=b,E=c,a.displayScale(D,E)},this.controlStateChanged=function(b,c){a.controlStateChanged(b,c)},this.controlsStatesRedefined=function(){a.controlsStatesRedefined()},this.consolePowerAndUserPauseStateUpdate=function(b,c){a.consolePowerAndUserPauseStateUpdate(b,c)},this.cartridgeInserted=function(b){a.cartridgeInserted(b)};var o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=jt.VideoStandard.NTSC,I=0,J=0,K=!0,L=0,M=0,N=!1,O=160,P=213,Q=68,R=16,S=5,T=.1,U=.4;b()},jt.ConsolePanel=function(a,b){\"use strict\";function c(){k(),l(),p()}function d(b){jt.Util.blockEvent(b),I||(r.hapticFeedbackOnTouch(b),a.closeAllOverlays(),b.target.jtPressed=!0,t.controlStateChanged(b.target.jtControl,!0))}function e(a){jt.Util.blockEvent(a),a.target.jtPressed=!1,I||(r.hapticFeedbackOnTouch(a),t.controlStateChanged(a.target.jtControl,!1))}function f(a){a.target.jtPressed&&e(a)}function g(b){r.hapticFeedbackOnTouch(b),a.closeAllOverlays(),s.controlActivated(b.target.jtControl)}this.connectPeripherals=function(a,c,d){r=c,s=d,a.registerForDnD(b)},this.connect=function(a){t=a},this.setActive=function(a){G=a,G&&(v||c(),i(),j()),document.documentElement.classList.toggle(\"jt-console-panel-active\",G)},this.setLogoMessageActive=function(a){I=a},this.updateScale=function(a,c,d){var e=0,f=0;if(G){a=c?d?.85*a:a-36:.85*a;var g=Math.min(1,a/jt.ConsolePanel.DEFAULT_WIDTH);b.style.transform=g<1?\"translateX(-50%) scale(\"+g.toFixed(8)+\")\":\"translateX(-50%)\",e=Math.ceil(g*jt.ConsolePanel.DEFAULT_HEIGHT),f=Math.ceil(g*jt.ConsolePanel.DEFAULT_WIDTH)}return r&&r.getTouchControls().updateConsolePanelSize(a,f,e,c,d),e};var h=function(){o(v,!H[q.POWER]),o(w,H[q.BLACK_WHITE]),o(x,H[q.SELECT]),o(y,H[q.RESET]),o(z,H[q.DIFFICULTY0]),o(A,H[q.DIFFICULTY1]),i()},i=function(){if(o(B,u),o(F,u),F.innerHTML=u&&u.rom.info.l||K,u&&u.rom.info.lc){var a=u.rom.info.lc.trim().split(/\\s+/);F.style.color=a[0]||L,F.style.background=a[1]||M,F.style.borderColor=a[2]||N}else F.style.color=L,F.style.background=M,F.style.borderColor=N},j=function(){t.controlsStateReport(H),h()},k=function(){b.innerHTML=jt.ScreenGUI.htmlConsolePanel,delete jt.ScreenGUI.htmlConsolePanel,jt.Util.isMobileDevice()&&b.classList.add(\"jt-hide-labels\")},l=function(){v=document.getElementById(\"jt-console-panel-power\"),m(v,q.POWER,!1),w=document.getElementById(\"jt-console-panel-color\"),m(w,q.BLACK_WHITE,!1),x=document.getElementById(\"jt-console-panel-select\"),m(x,q.SELECT,!0),y=document.getElementById(\"jt-console-panel-reset\"),m(y,q.RESET,!0),z=document.getElementById(\"jt-console-panel-p0-diff\"),m(z,q.DIFFICULTY0,!1),A=document.getElementById(\"jt-console-panel-p1-diff\"),m(A,q.DIFFICULTY1,!1),B=document.getElementById(\"jt-console-panel-cart-image\"),C=document.getElementById(\"jt-console-panel-cart-load\"),n(C,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),Javatari.CARTRIDGE_CHANGE_DISABLED||(D=document.getElementById(\"jt-console-panel-cart-file\"),n(D,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),o(D,!0),E=document.getElementById(\"jt-console-panel-cart-url\"),n(E,jt.PeripheralControls.AUTO_LOAD_URL),o(E,!0))},m=function(a,b,c){a.jtControl=b,c?(a.jtPressed=!1,jt.Util.addEventsListener(a,\"mousedown touchstart\",d),jt.Util.addEventsListener(a,\"mouseup touchend touchcancel\",e),jt.Util.addEventsListener(a,\"mouseleave\",f)):jt.Util.onTapOrMouseDown(a,d)},n=function(a,b){a.jtControl=b,a.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(a,g)},o=function(a,b){a.style.opacity=b?1:0},p=function(){var a=(Javatari.CARTRIDGE_LABEL_COLORS||\"\").trim().split(/\\s+/);a[0]&&(L=a[0]),a[1]&&(M=a[1]),a[2]&&(N=a[2]),F=document.getElementById(\"jt-console-panel-cart-label\"),n(F,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT)},q=jt.ConsoleControls;this.controlStateChanged=function(a,b){G&&J[a]&&j()},this.controlsStatesRedefined=function(){G&&j()},this.cartridgeInserted=function(a){u=a,G&&i()};var r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=!1,H={},I=!1,J={};J[q.POWER]=1,J[q.BLACK_WHITE]=1,J[q.SELECT]=1,J[q.RESET]=1,J[q.DIFFICULTY0]=1,J[q.DIFFICULTY1]=1;var K=\"JAVATARI\",L=\"#fa2525\",M=\"#101010\",N=\"transparent\"},jt.ConsolePanel.DEFAULT_WIDTH=460,jt.ConsolePanel.DEFAULT_HEIGHT=134,jt.ConsolePanel.shouldStartActive=function(){return!Javatari.SCREEN_CONSOLE_PANEL_DISABLED&&(Javatari.CONSOLE_PANEL_ELEMENT_ID===-1||document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID))},jt.ConsolePanel.sameBoxShadowAsScreen=function(){var a=document.getElementById(Javatari.SCREEN_ELEMENT_ID);return a?window.getComputedStyle(a,null).getPropertyValue(\"box-shadow\"):\"none\"},jt.CanvasDisplay=function(mainElement){\"use strict\";function init(){jt.Util.insertCSS(jt.ScreenGUI.css()),delete jt.ScreenGUI.css,setupMain(),setupBar(),setupFullscreen(),consolePanel=new jt.ConsolePanel(self,consolePanelElement),monitor=new jt.Monitor(self)}function consolePanelUpdateForOrientation(){\nsetConsolePanelActive(isFullscreen&&isLandscape?consolePanelActiveLandscape:consolePanelActivePortrait)}function setConsolePanelActive(a){consolePanelActive!==a&&(consolePanelActive=a,consolePanel.setActive(consolePanelActive),updateScale(),consolePanelActive?showBar():cursorHideFrameCountdown=CURSOR_HIDE_FRAMES)}function hideOSD(){osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,osdShowing=!1}function releaseControllersOnLostFocus(){consoleControlsSocket.releaseControllers()}function hideCursorAndBar(){hideCursor(),hideBar(),cursorHideFrameCountdown=-1}function showCursorAndBar(a){showCursor(),!a&&mousePointerLocked||showBar(),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES}function showCursor(){cursorShowing||(fsElement.style.cursor=cursorType,cursorShowing=!0)}function hideCursor(){cursorShowing&&(fsElement.style.cursor=\"none\",cursorShowing=!1)}function fullscreenByAPIChanged(){var a=isFullscreen,b=isFullScreenByAPI();b||fullScreenAPIExitUserRequested||!isBrowserStandalone?setFullscreenState(b):self.requestReadjust(),a&&!b&&!fullScreenAPIExitUserRequested&&isMobileDevice&&(isBrowserStandalone?setEnterFullscreenByAPIOnFirstTouch():(atariConsole.systemPause(!0),showLogoMessage(\"<br>Emulation suspended\",\"RESUME\",!0,function(){self.setFullscreen(!0),atariConsole.systemPause(!1)}))),fullScreenAPIExitUserRequested=!1}function isFullScreenByAPI(){return!!document[fullScreenAPIQueryProp]}function enterFullScreenByAPI(){if(fullscreenAPIEnterMethod)try{fullscreenAPIEnterMethod.call(fsElement)}catch(a){}}function exitFullScreenByAPI(){if(fullScreenAPIExitMethod)try{fullScreenAPIExitUserRequested=!0,fullScreenAPIExitMethod.call(document)}catch(a){}}function updateScale(){var a=Math.round(targetWidth*scaleY*aspectX*2),b=Math.round(targetHeight*scaleY);canvas.style.width=\"\"+a+\"px\",canvas.style.height=\"\"+b+\"px\",updateBarWidth(a),signalIsOn||updateLogoScale(),settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),updateConsolePanelScale(a)}function updateBarWidth(a){var b=buttonsBarDesiredWidth>0?buttonsBarDesiredWidth:a;buttonsBar.style.width=buttonsBarDesiredWidth===-1?\"100%\":\"\"+b+\"px\",buttonsBar.classList.toggle(\"jt-narrow\",b<NARROW_WIDTH)}function updateConsolePanelScale(a){var b=consolePanel.updateScale(a,isFullscreen,isLandscape);mainElement.style.marginBottom=!isFullscreen&&b>0?\"\"+Math.ceil(b+3)+\"px\":\"initial\"}function updateCanvasContentSize(){var a=crtFilterEffective>0?CANVAS_SIZE_FACTOR:1;canvas.width=targetWidth*a,canvas.height=targetHeight*a,canvasContext=null}function setCRTFilter(a){crtFilter=a,crtFilterEffective=crtFilter===-2?null:crtFilter===-1?crtFilterAutoValue():a,updateCanvasContentSize()}function crtFilterAutoValue(){return isMobileDevice&&!isIOSDevice&&\"FIREFOX\"===browserName?0:1}function setCRTMode(a){crtMode=a,crtModeEffective=crtMode===-1?crtModeAutoValue():crtMode,canvasContext=null}function crtModeAutoValue(){return 0}function updateLogo(){signalIsOn||(updateLogoScale(),showCursorAndBar(!0),canvasContext&&canvasContext.clearRect(0,0,canvas.width,canvas.height)),logo.classList.toggle(\"jt-show\",!signalIsOn)}function updateLoading(){var a=isLoading?\"block\":\"none\";logoLoadingIcon.style.display=a,canvasLoadingIcon.style.display=a}function createCanvasContext(){canvasContext=canvas.getContext(\"2d\",{alpha:!1,antialias:!1}),setImageComposition(),setImageSmoothing()}function setImageComposition(){crtModeEffective>0&&!debugMode?(canvasContext.globalCompositeOperation=\"source-over\",canvasContext.globalAlpha=.8):(canvasContext.globalCompositeOperation=\"copy\",canvasContext.globalAlpha=1)}function setImageSmoothing(){if(canvas.style.imageRendering=0===crtFilterEffective||2===crtFilterEffective?canvasImageRenderingValue:\"initial\",null!==crtFilterEffective){var a=crtFilterEffective>=2;void 0!==canvasContext.imageSmoothingEnabled?canvasContext.imageSmoothingEnabled=a:(canvasContext.webkitImageSmoothingEnabled=a,canvasContext.mozImageSmoothingEnabled=a,canvasContext.msImageSmoothingEnabled=a)}}function suppressContextMenu(a){a.addEventListener(\"contextmenu\",jt.Util.blockEvent)}function preventDrag(a){a.ondragstart=jt.Util.blockEvent}function setupMain(){switch(mainElement.innerHTML=jt.ScreenGUI.html(),mainElement.tabIndex=-1,delete jt.ScreenGUI.html,fsElement=document.getElementById(\"jt-screen-fs\"),fsElementCenter=document.getElementById(\"jt-screen-fs-center\"),canvasOuter=document.getElementById(\"jt-screen-canvas-outer\"),canvas=document.getElementById(\"jt-screen-canvas\"),canvasLoadingIcon=document.getElementById(\"jt-canvas-loading-icon\"),osd=document.getElementById(\"jt-osd\"),logo=document.getElementById(\"jt-logo\"),logoCenter=document.getElementById(\"jt-logo-center\"),logoImage=document.getElementById(\"jt-logo-image\"),logoLoadingIcon=document.getElementById(\"jt-logo-loading-icon\"),logoMessage=document.getElementById(\"jt-logo-message\"),logoMessageText=document.getElementById(\"jt-logo-message-text\"),logoMessageOK=document.getElementById(\"jt-logo-message-ok\"),logoMessageOKText=document.getElementById(\"jt-logo-message-ok-text\"),scrollMessage=document.getElementById(\"jt-screen-scroll-message\"),consolePanelElement=document.getElementById(\"jt-console-panel\"),suppressContextMenu(mainElement),preventDrag(logoImage),preventDrag(logoLoadingIcon),preventDrag(canvasLoadingIcon),updateCanvasContentSize(),browserName){case\"CHROME\":case\"EDGE\":case\"OPERA\":canvasImageRenderingValue=\"pixelated\";break;case\"FIREFOX\":canvasImageRenderingValue=\"-moz-crisp-edges\";break;case\"SAFARI\":canvasImageRenderingValue=\"-webkit-optimize-contrast\";break;default:canvasImageRenderingValue=\"pixelated\"}setupMainEvents()}function setupMainEvents(){(isMobileDevice?canvasOuter:fsElement).addEventListener(\"mousemove\",function(){showCursorAndBar()}),\"onblur\"in document?fsElement.addEventListener(\"blur\",releaseControllersOnLostFocus,!0):fsElement.addEventListener(\"focusout\",releaseControllersOnLostFocus,!0),window.addEventListener(\"orientationchange\",function(){closeAllOverlays(),signalIsOn?hideCursorAndBar():showCursorAndBar(),self.requestReadjust()}),mainElement.addEventListener(\"drop\",closeAllOverlays,!0),logoMessageOK.jtNeedsUIG=logoMessageOKText.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(logoMessageOK,function(a){consoleControls.hapticFeedbackOnTouch(a),self.closeLogoMessage()}),jt.Util.addEventsListener(fsElementCenter,\"touchstart touchend mousedown\",function(a){\"touchend\"!==a.type?(closeAllOverlays(),showCursorAndBar()):a.cancelable&&a.preventDefault()})}function setupBar(){buttonsBar=document.getElementById(\"jt-bar\"),buttonsBarInner=document.getElementById(\"jt-bar-inner\"),BAR_AUTO_HIDE&&(document.documentElement.classList.add(\"jt-bar-auto-hide\"),fsElement.addEventListener(\"mouseleave\",hideBar),hideBar());var a=[{label:\"Power\",clickModif:0,control:jt.PeripheralControls.MACHINE_POWER_TOGGLE},{label:\"Fry Console\",control:jt.PeripheralControls.MACHINE_POWER_FRY},{label:\"\",divider:!0},{label:\"Select Cartridge\",control:jt.PeripheralControls.CARTRIDGE_LOAD_RECENT},{label:\"\",divider:!0},{label:\"Open File\",clickModif:KEY_CTRL_MASK,control:jt.PeripheralControls.AUTO_LOAD_FILE,needsUIG:!0},{label:\"Open URL\",clickModif:KEY_CTRL_MASK|KEY_ALT_MASK,control:jt.PeripheralControls.AUTO_LOAD_URL,needsUIG:!0},{label:\"\",divider:!0},{label:\"Load State\",control:jt.PeripheralControls.MACHINE_LOAD_STATE_MENU},{label:\"Save State\",control:jt.PeripheralControls.MACHINE_SAVE_STATE_MENU}];powerButton=addBarButton(\"jt-bar-power\",-5,-26,\"System Power\",null,!1,a,\"System\"),barMenuSystem=a,self.consolePowerAndUserPauseStateUpdate(!1,!1),isMobileDevice?settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Quick Options\",jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS,!1):(a=[{label:\"Help & Settings\",clickModif:0,control:jt.PeripheralControls.SCREEN_OPEN_SETTINGS},{label:\"Quick Options\",control:jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS},{label:\"Defaults\",control:jt.PeripheralControls.SCREEN_DEFAULTS\n}],settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Settings\",null,!1,a,\"Settings\")),gameSelectButton=addBarButton(\"jt-bar-select\",-78,-51,\"Game Select\",jt.ConsoleControls.SELECT,!0),gameResetButton=addBarButton(\"jt-bar-reset\",-33,-51,\"Game Reset\",jt.ConsoleControls.RESET,!0),FULLSCREEN_MODE!==-2&&(fullscreenButton=addBarButton(\"jt-bar-full-screen\",-103,-1,\"Full Screen\",jt.PeripheralControls.SCREEN_FULLSCREEN,!1),fullscreenButton.jtNeedsUIG=!0,isMobileDevice&&fullscreenButton.classList.add(\"jt-mobile\")),Javatari.SCREEN_RESIZE_DISABLED||isMobileDevice||(scaleUpButton=addBarButton(\"jt-bar-scale-plus\",-80,-1,\"Increase Screen\",jt.PeripheralControls.SCREEN_SCALE_PLUS,!1),scaleUpButton.classList.add(\"jt-full-screen-hidden\"),scaleDownButton=addBarButton(\"jt-bar-scale-minus\",-58,-1,\"Decrease Screen\",jt.PeripheralControls.SCREEN_SCALE_MINUS,!1),scaleDownButton.classList.add(\"jt-full-screen-hidden\"));var b=addBarButton(\"jt-bar-console-panel\",-61,-25,\"Toggle Console Panel\",jt.PeripheralControls.SCREEN_CONSOLE_PANEL_TOGGLE,!1);b.classList.add(\"jt-full-screen-only\"),logoButton=addBarButton(\"jt-bar-logo\",-99,-26,\"About Javatari\",jt.PeripheralControls.SCREEN_OPEN_ABOUT,!1),logoButton.classList.add(\"jt-full-screen-hidden\"),jt.Util.onTapOrMouseDownWithBlockUIG(buttonsBar,barElementTapOrMouseDown),jt.Util.addEventsListener(buttonsBar,\"touchmove\",barElementTouchMove),jt.Util.addEventsListener(buttonsBar,\"mouseup touchend\",barElementTouchEndOrMouseUp)}function addBarButton(a,b,c,d,e,f,g,h){var i=document.createElement(\"div\");return i.id=a,i.classList.add(\"jt-bar-button\"),i.jtBarElementType=1,i.jtControl=e,i.jtIsConsoleControl=f,i.style.backgroundPosition=\"\"+b+\"px \"+c+\"px\",i.jtBX=b,g&&(i.jtMenu=g,g.jtTitle=h,g.jtRefElement=i,g.jtMenuIndex=barMenus.length,barMenus.push(g)),d&&(i.title=d),i.addEventListener(\"mouseenter\",function(a){barButtonHoverOver(a.target,a)}),f&&i.addEventListener(\"mouseleave\",barButtonMouseLeft),buttonsBarInner.appendChild(i),i}function barButtonTapOrMousedown(a,b){if(!logoMessageActive){consoleControls.hapticFeedbackOnTouch(b);var c=barMenuActive;if(closeAllOverlays(),a.jtControl)return void(b.button||(a.jtIsConsoleControl?(barConsoleControlPressed=a.jtControl,consoleControlsSocket.controlStateChanged(barConsoleControlPressed,!0)):peripheralControls.controlActivated(a.jtControl)));var d=a.jtMenu;if(d){var e=0|(b.altKey&&KEY_ALT_MASK)|(b.ctrlKey&&KEY_CTRL_MASK)|(b.shiftKey&&KEY_SHIFT_MASK);if(0===e&&!b.button)return void(c!==d&&(showBarMenu(d),\"touchstart\"===b.type&&barButtonLongTouchStart(b)));for(var f=0;f<d.length;++f)if(d[f].clickModif===e)return void peripheralControls.controlActivated(d[f].control,1===b.button,d[f].secSlot);if(e&KEY_SHIFT_MASK)for(e&=~KEY_SHIFT_MASK,f=0;f<d.length;++f)if(d[f].clickModif===e)return void peripheralControls.controlActivated(d[f].control,1===b.button,!0)}}}function barButtonLongTouchStart(a){barButtonLongTouchTarget=a.target,barButtonLongTouchSelectTimeout=window.setTimeout(function(){if(barMenuActive)for(var a=barMenu.jtItems,b=0;b<a.length;++b){var c=a[b].jtMenuOption;if(c&&0===c.clickModif)return void barMenuItemSetActive(a[b],!0)}},450)}function barButtonLongTouchCancel(){barButtonLongTouchSelectTimeout&&(clearTimeout(barButtonLongTouchSelectTimeout),barButtonLongTouchSelectTimeout=null)}function barButtonHoverOver(a,b){barMenuActive&&a.jtMenu&&barMenuActive!==a.jtMenu&&(consoleControls.hapticFeedbackOnTouch(b),showBarMenu(a.jtMenu))}function barButtonMouseLeft(){barConsoleControlPressed&&(cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,consoleControlsSocket.controlStateChanged(barConsoleControlPressed,!1),barConsoleControlPressed=null)}function barButtonTouchEndOrMouseUp(a){if(!logoMessageActive)return barConsoleControlPressed?(consoleControls.hapticFeedbackOnTouch(a),consoleControlsSocket.controlStateChanged(barConsoleControlPressed,!1),void(barConsoleControlPressed=null)):void(!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey))}function barMenuItemTapOrMouseDown(a,b){barMenuItemSetActive(a,\"touchstart\"===b.type)}function barMenuItemHoverOver(a,b){barMenuItemSetActive(a,\"touchmove\"===b.type)}function barMenuItemHoverOut(){barMenuItemSetActive(null)}function barMenuItemTouchEndOrMouseUp(a){logoMessageActive||!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey)}function barMenuItemFireActive(a,b){var c=barMenuItemActive.jtMenuOption;barMenuItemSetActive(null),c&&!c.disabled&&(c.extension?extensionsSocket.toggleExtension(c.extension,b,a):c.control&&(a|=c.secSlot,closeAllOverlays(),peripheralControls.controlActivated(c.control,b,a)))}function barMenuItemSetActive(a,b){a!==barMenuItemActive&&(barMenuItemActive&&barMenuItemActive.classList.remove(\"jt-hover\"),a&&a.jtMenuOption?(barMenuItemActive=a,b&&consoleControls.hapticFeedback(),barMenuItemActive.classList.add(\"jt-hover\")):barMenuItemActive=null)}function barElementTapOrMouseDown(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES;var b=a.target;1===b.jtBarElementType?barButtonTapOrMousedown(b,a):2===b.jtBarElementType?barMenuItemTapOrMouseDown(b,a):hideBarMenu()}function barElementTouchMove(a){jt.Util.blockEvent(a);var b=a.changedTouches[0],c=b&&document.elementFromPoint(b.clientX,b.clientY);barButtonLongTouchTarget&&c!==barButtonLongTouchTarget&&barButtonLongTouchCancel(),2!==c.jtBarElementType&&c!==barButtonLongTouchTarget&&barMenuItemSetActive(null),1===c.jtBarElementType?barButtonHoverOver(c,a):2===c.jtBarElementType&&barMenuItemHoverOver(c,a)}function barElementTouchEndOrMouseUp(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,jt.Util.blockEvent(a),barButtonLongTouchCancel();var b=a.target;1===b.jtBarElementType?barButtonTouchEndOrMouseUp(a):2===b.jtBarElementType&&barMenuItemTouchEndOrMouseUp(a)}function setupFullscreen(){fullscreenAPIEnterMethod=fsElement.requestFullscreen||fsElement.webkitRequestFullscreen||fsElement.webkitRequestFullScreen||fsElement.mozRequestFullScreen,fullScreenAPIExitMethod=document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen,\"fullscreenElement\"in document?fullScreenAPIQueryProp=\"fullscreenElement\":\"webkitFullscreenElement\"in document?fullScreenAPIQueryProp=\"webkitFullscreenElement\":\"mozFullScreenElement\"in document&&(fullScreenAPIQueryProp=\"mozFullScreenElement\"),fullscreenAPIEnterMethod||!isMobileDevice||isBrowserStandalone||(fullScreenScrollHack=!0),\"onfullscreenchange\"in document?document.addEventListener(\"fullscreenchange\",fullscreenByAPIChanged):\"onwebkitfullscreenchange\"in document?document.addEventListener(\"webkitfullscreenchange\",fullscreenByAPIChanged):\"onmozfullscreenchange\"in document&&document.addEventListener(\"mozfullscreenchange\",fullscreenByAPIChanged),fullscreenAPIEnterMethod||(scrollMessage.jtScroll=canvas.jtScroll=logo.jtScroll=logoCenter.jtScroll=logoImage.jtScroll=logoMessage.jtScroll=logoMessageText.jtScroll=logoMessageOK.jtScroll=logoMessageOKText.jtScroll=!0,fsElement.addEventListener(\"touchmove\",function(a){if(isFullscreen){if(!fullScreenScrollHack||!a.target.jtScroll)return jt.Util.blockEvent(a);scrollMessageActive&&setScrollMessage(!1)}}))}function setEnterFullscreenByAPIOnFirstTouch(){if(fullscreenAPIEnterMethod){var a=!1,b=function(){a||(a=!0,jt.Util.removeEventsListener(fsElement,\"touchend mousedown\",b,!0),enterFullScreenByAPI())};jt.Util.addEventsListener(fsElement,\"touchend mousedown\",b,!0)}}function setFullscreenState(a){isFullscreen=a,a?(setViewport(),document.documentElement.classList.add(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.add(\"jt-full-screen-scroll-hack\"),consoleControls.setupTouchControlsIfNeeded(fsElementCenter),fullScreenScrollHack&&setScrollMessage(!0),fullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()):(restoreViewport(),document.documentElement.classList.remove(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.remove(\"jt-full-screen-scroll-hack\"),\nfullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()),self.requestReadjust()}function tryToFixSafariBugOnFullScreenChange(){var a=document.getElementById(\"jt-dummy-element\");a?mainElement.removeChild(a):(a=document.createElement(\"div\"),a.id=\"jt-dummy-element\",mainElement.appendChild(a))}function showBar(){buttonsBar.classList.remove(\"jt-hidden\")}function hideBar(){!BAR_AUTO_HIDE&&!isFullscreen||barMenuActive||consolePanelActive||barConsoleControlPressed||(hideBarMenu(),buttonsBar.classList.add(\"jt-hidden\"))}function showBarMenu(a,b){if(a&&barMenuActive!==a){if(!barMenu)return setupBarMenu(),void setTimeout(function(){showBarMenu(a,b)},1);refreshBarMenu(a),barMenuItemSetActive(b?barMenu.jtDefaultItem:null);var c=a.jtRefElement,d=c&&c.offsetLeft-15||0;d+jt.ScreenGUI.BAR_MENU_WIDTH>c.parentElement.clientWidth?(barMenu.style.right=0,barMenu.style.left=\"auto\",barMenu.style.transformOrigin=\"bottom right\"):(d<0&&(d=0),barMenu.style.left=\"\"+d+\"px\",barMenu.style.right=\"auto\",barMenu.style.transformOrigin=\"bottom left\"),showCursorAndBar(!0),barMenuActive=a,barMenu.style.display=\"inline-block\",barMenu.jtTitle.focus()}}function refreshBarMenu(a){barMenu.jtTitle.innerHTML=a.jtTitle,barMenu.jtDefaultItem=null;for(var b,c=0,d=Math.min(a.length,BAR_MENU_MAX_ITEMS),e=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT+3,f=0;f<d;++f){var g=a[f];void 0!==g.label&&(b=barMenu.jtItems[c],b.firstChild.textContent=g.label,b.jtMenuOption=null,g.hidden||isFullscreen&&g.fullScreenHidden||!isFullscreen&&g.fullScreenOnly?b.style.display=\"none\":(b.style.display=\"block\",g.divider?b.classList.add(\"jt-bar-menu-item-divider\"):(b.classList.remove(\"jt-bar-menu-item-divider\"),e+=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT,b.classList.toggle(\"jt-bar-menu-item-toggle\",void 0!==g.toggle),g.disabled?b.classList.add(\"jt-bar-menu-item-disabled\"):(b.classList.remove(\"jt-bar-menu-item-disabled\"),b.jtMenuOption=g,0===g.clickModif&&(barMenu.jtDefaultItem=b),b.jtNeedsUIG=g.needsUIG,void 0!==g.toggle&&b.classList.toggle(\"jt-bar-menu-item-toggle-checked\",!!g.checked)))),++c)}for(var h=c;h<BAR_MENU_MAX_ITEMS;++h)b=barMenu.jtItems[h],b.firstChild.textContent=\"\",b.style.display=\"none\",b.jtMenuOption=null;var i=fsElementCenter.clientHeight-jt.ScreenGUI.BAR_HEIGHT-8,j=e<i?1:i/e;barMenu&&(barMenu.style.transform=\"scale(\"+j.toFixed(4)+\")\")}function hideBarMenu(){barMenuActive&&(barMenuActive=null,barMenu.style.display=\"none\",barMenuItemSetActive(null),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,self.focus())}function setupBarMenu(){barMenu=document.createElement(\"div\"),barMenu.id=\"jt-bar-menu\";var a=document.createElement(\"div\");a.id=\"jt-bar-menu-inner\",barMenu.appendChild(a);var b=document.createElement(\"div\");b.id=\"jt-bar-menu-title\",b.tabIndex=-1,b.innerHTML=\"Menu Title\",a.appendChild(b),barMenu.jtTitle=b,barMenu.jtItems=new Array(BAR_MENU_MAX_ITEMS);for(var c=0;c<BAR_MENU_MAX_ITEMS;++c){var d=document.createElement(\"div\");d.classList.add(\"jt-bar-menu-item\"),d.style.display=\"none\",d.innerHTML=\"Menu Item \"+c,d.jtBarElementType=2,d.jtItemIndex=c,d.addEventListener(\"mouseenter\",function(a){barMenuItemHoverOver(a.target,a)}),d.addEventListener(\"mouseleave\",barMenuItemHoverOut),a.appendChild(d),barMenu.jtItems[c]=d}barMenu.addEventListener(\"keydown\",function(a){if(MENU_CLOSE_KEYS[a.keyCode])hideBarMenu();else if(barMenuItemActive&&MENU_EXEC_KEYS[a.keyCode&~KEY_SHIFT_MASK&~KEY_CTRL_MASK])barMenuItemFireActive(a.shiftKey,a.ctrlKey);else if(MENU_SELECT_KEYS[a.keyCode]){if(!barMenuActive)return;var b=(barMenus.length+barMenuActive.jtMenuIndex+MENU_SELECT_KEYS[a.keyCode])%barMenus.length;showBarMenu(barMenus[b],!0)}else if(MENU_ITEM_SELECT_KEYS[a.keyCode]){var c=barMenu.jtItems,d=barMenuItemActive?barMenuItemActive.jtItemIndex:-1,e=BAR_MENU_MAX_ITEMS+1;do d=(d+c.length+MENU_ITEM_SELECT_KEYS[a.keyCode])%c.length;while(--e>=0&&!c[d].jtMenuOption);e>=0&&barMenuItemSetActive(c[d])}return jt.Util.blockEvent(a)}),buttonsBar.appendChild(barMenu)}function closeAllOverlays(){hideBarMenu(),saveStateDialog&&saveStateDialog.hide(),quickOtionsDialog&&quickOtionsDialog.hide(),settingsDialog&&settingsDialog.hide(),recentROMsDialog&&recentROMsDialog.hide()}function showLogoMessage(a,b,c,d){consolePanel.setLogoMessageActive(!0),logoMessageActive||(closeAllOverlays(),d&&(afterMessageAction=d),logoMessageText.innerHTML=a,logoMessageOK.classList.toggle(\"jt-higher\",!!c),logoMessageOKText.innerHTML=b||\"OK\",fsElement.classList.add(\"jt-logo-message-active\"),logoMessageActive=!0,signalIsOn=!1,updateLogo())}function updateLogoScale(){var a=canvasOuter.clientWidth,b=Math.min(a/jt.ScreenGUI.LOGO_SCREEN_WIDTH,1);b<1?logoCenter.style.transform=\"translate(-50%, -50%) scale(\"+b.toFixed(4)+\")\":logoCenter.style.transform=\"translate(-50%, -50%)\"}function setScrollMessage(a){console.error(\"Scroll Message: \"+a),fsElement.classList.toggle(\"jt-scroll-message\",a),scrollMessageActive=a,a&&setTimeout(function(){setScrollMessage(!1)},5e3)}function readjustAll(a){if(isReadjustScreeSizeChanged(a)){if(isFullscreen){buttonsBarDesiredWidth=isLandscape?0:-1;var b=readjustScreenSize.h;isLandscape||(b-=jt.ScreenGUI.BAR_HEIGHT+2),monitor.displayScale(aspectX,displayOptimalScaleY(readjustScreenSize.w,b))}else buttonsBarDesiredWidth=-1,monitor.displayScale(Javatari.SCREEN_DEFAULT_ASPECT,self.displayDefaultScale());self.focus(),consolePanelUpdateForOrientation(),consoleControlsSocket.releaseControllers()}readjustInterval&&jt.Util.performanceNow()-readjustRequestTime>=1e3&&(clearInterval(readjustInterval),readjustInterval=null)}function isReadjustScreeSizeChanged(a){var b=mainElement.parentElement.clientWidth,c=fsElementCenter.clientWidth,d=fsElementCenter.clientHeight;return!(!a&&readjustScreenSize.pw===b&&readjustScreenSize.w===c&&readjustScreenSize.h===d)&&(readjustScreenSize.pw=b,readjustScreenSize.w=c,readjustScreenSize.h=d,isLandscape=c>d,!0)}function displayOptimalScaleY(a,b){var c=2*aspectX,d=b/targetHeight;return targetWidth*c*d>a&&(d=a/(targetWidth*c)),d}function setViewport(){if(isMobileDevice){if(void 0===viewPortOriginalContent&&(viewPortOriginalTag=document.querySelector(\"meta[name=viewport]\"),viewPortOriginalContent=viewPortOriginalTag&&viewPortOriginalTag.content||null),viewportTag||(viewportTag=document.createElement(\"meta\"),viewportTag.name=\"viewport\",viewportTag.content=\"width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes\",document.head.appendChild(viewportTag)),viewPortOriginalTag)try{document.head.removeChild(viewPortOriginalTag)}catch(a){}viewPortOriginalTag=null}}function restoreViewport(){if(isMobileDevice){if(!viewPortOriginalTag&&viewPortOriginalContent&&(viewPortOriginalTag=document.createElement(\"meta\"),viewPortOriginalTag.name=\"viewport\",viewPortOriginalTag.content=viewPortOriginalContent,document.head.appendChild(viewPortOriginalTag)),viewportTag)try{document.head.removeChild(viewportTag)}catch(a){}viewportTag=null}}function setPageVisibilityHandling(){function a(){logoMessageActive||(document.hidden?b=!atariConsole.systemPause(!0):b&&atariConsole.systemPause(!1))}var b;document.addEventListener(\"visibilitychange\",a)}var self=this;this.connect=function(a){atariConsole=a,monitor.connect(atariConsole.getVideoOutput()),consoleControlsSocket=atariConsole.getConsoleControlsSocket(),cartridgeSocket=atariConsole.getCartridgeSocket(),consolePanel.connect(consoleControlsSocket)},this.connectPeripherals=function(a,b,c,d,e,f){recentROMs=a,fileLoader=b,b.registerForDnD(fsElement),b.registerForFileInputElement(fsElement),fileDownloader=c,fileDownloader.registerForDownloadElement(fsElement),peripheralControls=e,consoleControls=d,consoleControls.addKeyInputElement(fsElement),stateMedia=f,consolePanel.connectPeripherals(b,consoleControls,peripheralControls)},this.powerOn=function(){monitor.setDefaults(),updateLogo(),document.documentElement.classList.add(\"jt-started\"),setPageVisibilityHandling(),\nthis.focus(),JavatariFullScreenSetup.shouldStartInFullScreen()&&(setFullscreenState(!0),setEnterFullscreenByAPIOnFirstTouch())},this.powerOff=function(){document.documentElement.remove(\"jt-started\")},this.start=function(a){function b(){self.setFullscreen(!0),a()}!isMobileDevice||isBrowserStandalone||isFullscreen?a():jt.Util.isOfficialHomepage()?showLogoMessage(\"For \"+(fullscreenAPIEnterMethod?\"the best\":\"a full-screen\")+' experience, use<br>the \"Add to Home Screen\" function<br>then launch from the Installed App',\"NICE!\",!1,b):showLogoMessage(\"For the best experience,<br>Javatari will go full-screen\",\"GO!\",!0,b)},this.refresh=function(a,b,c){cursorHideFrameCountdown>0&&--cursorHideFrameCountdown<=0&&hideCursorAndBar(),signalIsOn||(signalIsOn=!0,updateLogo()),canvasContext||createCanvasContext(),canvasContext.drawImage(a,0,0,canvas.width,canvas.height)},this.videoSignalOff=function(){signalIsOn=!1,showCursorAndBar(),updateLogo()},this.mousePointerLocked=function(a){mousePointerLocked=a,mousePointerLocked?hideCursorAndBar():showCursorAndBar()},this.openHelp=function(){return self.openSettings(\"GENERAL\"),!1},this.openAbout=function(){return self.openSettings(\"ABOUT\"),!1},this.openSettings=function(a){closeAllOverlays(),settingsDialog||(settingsDialog=new jt.SettingsDialog(fsElementCenter,consoleControls)),settingsDialog.show(a)},this.openSaveStateDialog=function(a){closeAllOverlays(),saveStateDialog||(saveStateDialog=new jt.SaveStateDialog(fsElementCenter,consoleControlsSocket,peripheralControls,stateMedia)),saveStateDialog.show(a)},this.openQuickOptionsDialog=function(){closeAllOverlays(),quickOtionsDialog||(quickOtionsDialog=new jt.QuickOptionsDialog(fsElementCenter,consoleControlsSocket,peripheralControls)),quickOtionsDialog.show()},this.openLoadFileDialog=function(a,b){fileLoader.openFileChooserDialog(jt.FileLoader.OPEN_TYPE.AUTO,a,b,!1)},this.openRecentROMsDialog=function(){closeAllOverlays(),recentROMsDialog||(recentROMsDialog=new jt.RecentROMsDialog(fsElementCenter,this,recentROMs,fileLoader)),recentROMsDialog.show()},this.openCartridgeChooserDialog=function(a,b,c){logoMessageActive&&self.closeLogoMessage(),a||0!==recentROMs.getCatalog().length?this.openRecentROMsDialog():this.openLoadFileDialog(b,c)},this.toggleConsolePanel=function(){isFullscreen&&isLandscape?consolePanelActiveLandscape=!consolePanelActiveLandscape:consolePanelActivePortrait=!consolePanelActivePortrait,consolePanelUpdateForOrientation()},this.getControlReport=function(a){return{label:crtFilter===-2?\"Browser\":crtFilter===-1?\"Auto\":0===crtFilter?\"OFF\":\"Level \"+crtFilter,active:crtFilter>=0}},this.toggleMenuByKey=function(){barMenuActive?hideBarMenu():(closeAllOverlays(),showBarMenu(barMenuSystem,!0))},this.getScreenCapture=function(){if(signalIsOn)return canvas.toDataURL(\"image/png\")},this.saveScreenCapture=function(){var a=this.getScreenCapture();a&&fileDownloader.startDownloadURL(\"Javatari Screen\",a,\"Screen Capture\")},this.displayMetrics=function(a,b){targetWidth===a&&targetHeight===b||(targetWidth=a,targetHeight=b,updateCanvasContentSize(),isFullscreen?this.requestReadjust(!0):updateScale())},this.displayScale=function(a,b){aspectX=a,scaleY=b,updateScale()},this.getMonitor=function(){return monitor},this.showOSD=function(a,b,c){if(osdTimeout&&clearTimeout(osdTimeout),!a)return osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,void(osdShowing=!1);!b&&osdShowing||(osd.innerHTML=a,osd.style.color=c?\"rgb(255, 60, 40)\":\"rgb(0, 255, 0)\"),osd.style.transition=\"none\",osd.style.top=\"15px\",osd.style.opacity=1,osdShowing=!0;var d=canvasOuter.clientWidth-30,e=osd.clientWidth,f=e<d?1:d/e;osd.style.transform=\"scale(\"+f.toFixed(4)+\")\",osdTimeout=setTimeout(hideOSD,OSD_TIME)},this.displayDefaultScale=function(){if(Javatari.SCREEN_DEFAULT_SCALE>0)return Javatari.SCREEN_DEFAULT_SCALE;var a=Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);return a>=640?2:a>=540?1.65:a>=420?1.25:a>=355?1.05:a>=340?1:a>=300?.9:.8},this.setDebugMode=function(a){debugMode=!!a,canvasContext=null},this.crtFilterToggle=function(){var a=crtFilter+1;a>3&&(a=-2),setCRTFilter(a);var b=null===crtFilterEffective?\"browser default\":crtFilterEffective<1?\"OFF\":\"level \"+crtFilterEffective;this.showOSD(\"CRT filter: \"+(crtFilter===-1?\"AUTO (\"+b+\")\":b),!0),Javatari.userPreferences.current.crtFilter!==crtFilter&&(Javatari.userPreferences.current.crtFilter=crtFilter,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save())},this.crtFilterSetDefault=function(){var a=Javatari.userPreferences.current.crtFilter;setCRTFilter(null===a?Javatari.SCREEN_FILTER_MODE:a)},this.crtModeToggle=function(){var a=crtMode+1;a>1&&(a=-1),setCRTMode(a);var b=1===crtModeEffective?\"Phosphor\":\"OFF\";this.showOSD(\"CRT mode: \"+(crtMode===-1?\"AUTO (\"+b+\")\":b),!0)},this.crtModeSetDefault=function(){setCRTMode(Javatari.SCREEN_CRT_MODE)},this.displayToggleFullscreen=function(){if(FULLSCREEN_MODE!==-2)return fullscreenAPIEnterMethod&&!isFullScreenByAPI()?void enterFullScreenByAPI():void this.setFullscreen(!isFullscreen)},this.setFullscreen=function(a){fullscreenAPIEnterMethod?a?enterFullScreenByAPI():exitFullScreenByAPI():setFullscreenState(a)},this.focus=function(){canvas.focus()},this.consolePowerAndUserPauseStateUpdate=function(a,b){isLoading&&(a=!1),powerButton.style.backgroundPosition=\"\"+powerButton.jtBX+\"px \"+mediaButtonBackYOffsets[a?2:1]+\"px\",powerButton.jtMenu[0].label=\"Power \"+(a?\"OFF\":\"ON\"),powerButton.jtMenu[1].disabled=powerButton.jtMenu[9].disabled=!a},this.cartridgeInserted=function(a){consolePanel.cartridgeInserted(a)},this.controlsModeStateUpdate=function(){settingsDialog&&settingsDialog.controlsModeStateUpdate()},this.touchControlsActiveUpdate=function(a,b){touchControlsActive===a&&touchControlsDirBig===b||(touchControlsActive=a,touchControlsDirBig=b,isFullscreen&&(touchControlsActive&&consoleControls.setupTouchControlsIfNeeded(fsElementCenter),this.requestReadjust(!0)))},this.controlStateChanged=function(a,b){consolePanel.controlStateChanged(a,b)},this.controlsStatesRedefined=function(){consolePanel.controlsStatesRedefined()},this.setLoading=function(a){isLoading=a,updateLoading()},this.requestReadjust=function(a){settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),a?readjustAll(!0):(readjustRequestTime=jt.Util.performanceNow(),readjustInterval||(readjustInterval=setInterval(readjustAll,50)))},this.closeAllOverlays=closeAllOverlays,this.closeLogoMessage=function(){if(consolePanel.setLogoMessageActive(!1),fsElement.classList.remove(\"jt-logo-message-active\"),logoMessageActive=!1,afterMessageAction){var a=afterMessageAction;afterMessageAction=null,a()}};var afterMessageAction,atariConsole,consoleControlsSocket,monitor,peripheralControls,fileLoader,fileDownloader,consoleControls,cartridgeSocket,stateMedia,recentROMs,readjustInterval=0,readjustRequestTime=0,readjustScreenSize={w:0,wk:0,h:0,pw:0,l:!1},isFullscreen=!1,isLandscape=!1,isTouchDevice=jt.Util.isTouchDevice(),isMobileDevice=jt.Util.isMobileDevice(),isIOSDevice=jt.Util.isIOSDevice(),isBrowserStandalone=jt.Util.isBrowserStandaloneMode(),browserName=jt.Util.browserInfo().name,fullscreenAPIEnterMethod,fullScreenAPIExitMethod,fullScreenAPIQueryProp,fullScreenAPIExitUserRequested=!1,fullScreenScrollHack=!1,viewportTag,viewPortOriginalTag,viewPortOriginalContent,consolePanel,consolePanelElement,settingsDialog,saveStateDialog,recentROMsDialog,quickOtionsDialog,fsElement,fsElementCenter,canvas,canvasOuter,canvasLoadingIcon,canvasContext,canvasImageRenderingValue,touchControlsActive=!1,touchControlsDirBig=!1,consolePanelActive=!1,consolePanelActiveLandscape=!1,consolePanelActivePortrait=jt.ConsolePanel.shouldStartActive(),buttonsBar,buttonsBarInner,buttonsBarDesiredWidth=-1,barButtonLongTouchTarget,barButtonLongTouchSelectTimeout,barMenu,barMenus=[],barMenuActive,barMenuItemActive,barMenuSystem,barConsoleControlPressed,osd,osdTimeout,osdShowing=!1,cursorType=\"auto\",cursorShowing=!0,cursorHideFrameCountdown=-1,signalIsOn=!1,crtFilter=-2,crtFilterEffective=null,crtMode=-1,crtModeEffective=0,debugMode=!1,isLoading=!1,aspectX=Javatari.SCREEN_DEFAULT_ASPECT,scaleY=1,mousePointerLocked=!1,targetWidth=160,targetHeight=213,logo,logoCenter,logoImage,logoMessage,logoMessageText,logoMessageOK,logoMessageOKText,logoMessageActive=!1,logoLoadingIcon,scrollMessage,scrollMessageActive=!1,powerButton,logoButton,scaleDownButton,scaleUpButton,fullscreenButton,settingsButton,gameSelectButton,gameResetButton,mediaButtonBackYOffsets=[-51,-26,-1],CANVAS_SIZE_FACTOR=Javatari.SCREEN_CANVAS_SIZE,OSD_TIME=3e3,CURSOR_HIDE_FRAMES=180,FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE,BAR_AUTO_HIDE=0===Javatari.SCREEN_CONTROL_BAR,BAR_MENU_MAX_ITEMS=10,NARROW_WIDTH=336,k=jt.DOMKeys,KEY_CTRL_MASK=k.CONTROL,KEY_ALT_MASK=k.ALT,KEY_SHIFT_MASK=k.SHIFT,MENU_CLOSE_KEYS={};\nMENU_CLOSE_KEYS[k.VK_ESCAPE.c]=1,MENU_CLOSE_KEYS[k.VK_CONTEXT.c]=1;var MENU_EXEC_KEYS={};MENU_EXEC_KEYS[k.VK_ENTER.c]=1,MENU_EXEC_KEYS[k.VK_SPACE.c]=1;var MENU_SELECT_KEYS={};MENU_SELECT_KEYS[k.VK_LEFT.c]=-1,MENU_SELECT_KEYS[k.VK_RIGHT.c]=1;var MENU_ITEM_SELECT_KEYS={};MENU_ITEM_SELECT_KEYS[k.VK_UP.c]=-1,MENU_ITEM_SELECT_KEYS[k.VK_DOWN.c]=1,init(),this.eval=function(str){return eval(str)}},jt.RecentROMsDialog=function(a,b,c,d){\"use strict\";function e(){j.style.height=\"\"+(42+33*(l.length+1))+\"px\";for(var a=0;a<11;++a){var b=n[a],c=l[a];b.classList.toggle(\"jt-visible\",a<=l.length),b.classList.toggle(\"jt-toggle\",a<l.length),b.classList.toggle(\"jt-toggle-checked\",a<l.length),b.jtNeedsUIG=a===l.length,b.innerHTML=c?c.n:\"&nbsp;&nbsp;Open ROM File...\"}f()}function f(){for(var a=0;a<n.length;++a)n[a].classList.toggle(\"jt-selected\",a===m)}function g(){j=document.createElement(\"div\"),j.id=\"jt-recent-roms\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"350px\",j.tabIndex=-1,j.appendChild(document.createTextNode(\"Select Cartridge\")),k=document.createElement(\"ul\"),k.style.width=\"85%\";for(var b=0;b<11;++b){var c=document.createElement(\"li\");c.style.textAlign=\"center\",c.innerHTML=\"\",c.jtItem=b,n.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a){a.target.jtItem>=0&&(jt.DOMConsoleControls.hapticFeedbackOnTouch(a),m=a.target.jtItem,f(),setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===q?a():r.indexOf(c.keyCode)>=0?b():s[c.keyCode]&&(m+=s[c.keyCode],m<0?m=0:m>l.length&&(m=l.length),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);l=c.getCatalog().slice(),l.sort(function(a,b){return a.n>b.n});var d=c.lastROMLoadedIndex;d=l.indexOf(l.find(function(a){return a.i===d})),m=d<0||d>=l.length?l.length:d,o=!0,e(),j.classList.add(\"jt-show\"),j.focus();var f=a.clientHeight-jt.ScreenGUI.BAR_HEIGHT-20,h=j.clientHeight,k=h<f?1:f/h;j.style.transform=\"translateY(-\"+(jt.ScreenGUI.BAR_HEIGHT/2|0)+\"px) scale(\"+k.toFixed(4)+\")\"},this.hide=function(a){if(o&&(j.classList.remove(\"jt-show\"),o=!1,Javatari.room.screen.focus(),a))if(m===l.length)b.openLoadFileDialog();else{var e=c.getROM(l[m].i);d.loadROM(e)}};var j,k,l=[],m=0,n=[],o=!1,p=jt.DOMKeys,q=p.VK_ESCAPE.c,r=[p.VK_ENTER.c,p.VK_SPACE.c],s={};s[p.VK_UP.c]=-1,s[p.VK_DOWN.c]=1},jt.SaveStateDialog=function(a,b,c,d){\"use strict\";function e(){l.textContent=\"Select Slot to \"+(m?\"Save\":\"Load\");for(var a=m?\"Save to \":\"Load from \",b=0;b<o.length;++b){var c=o[b];c.innerHTML=a+s[b].d,c.classList.toggle(\"jt-toggle-checked\",d.isSlotUsed(b+1))}f()}function f(){for(var a=0;a<o.length;++a)o[a].classList.toggle(\"jt-selected\",a===n)}function g(){j=document.createElement(\"div\"),j.id=\"jt-savestate\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"280px\",j.style.height=\"404px\",j.tabIndex=-1,l=document.createTextNode(\"Select Slot\"),j.appendChild(l),k=document.createElement(\"ul\"),k.style.width=\"80%\";for(var b=0;b<s.length;++b){var c=document.createElement(\"li\");c.classList.add(\"jt-visible\"),b<s.length-1&&c.classList.add(\"jt-toggle\"),c.style.textAlign=\"center\",c.innerHTML=s[b].d,c.jtSlot=b,c.jtNeedsUIG=!0,o.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a){a.target.jtSlot>=0&&(jt.DOMConsoleControls.hapticFeedbackOnTouch(a),n=a.target.jtSlot,f(),setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===u?a():v.indexOf(c.keyCode)>=0?b():w[c.keyCode]&&(n+=w[c.keyCode],n<0?n=0:n>10&&(n=10),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);m=b,p=!0,e(),j.classList.add(\"jt-show\"),j.focus();var c=a.clientHeight-jt.ScreenGUI.BAR_HEIGHT-20,d=j.clientHeight,f=d<c?1:c/d;j.style.transform=\"translateY(-\"+(jt.ScreenGUI.BAR_HEIGHT/2|0)+\"px) scale(\"+f.toFixed(4)+\")\"},this.hide=function(a){if(p&&(j.classList.remove(\"jt-show\"),p=!1,Javatari.room.screen.focus(),a)){var d=s[n],e=m?d.save:d.load;d.peripheral?c.controlActivated(e):b.controlStateChanged(e,!0)}};var j,k,l,m=!1,n=0,o=[],p=!1,q=jt.ConsoleControls,r=jt.PeripheralControls,s=[{d:\"Slot 1\",load:q.LOAD_STATE_1,save:q.SAVE_STATE_1},{d:\"Slot 2\",load:q.LOAD_STATE_2,save:q.SAVE_STATE_2},{d:\"Slot 3\",load:q.LOAD_STATE_3,save:q.SAVE_STATE_3},{d:\"Slot 4\",load:q.LOAD_STATE_4,save:q.SAVE_STATE_4},{d:\"Slot 5\",load:q.LOAD_STATE_5,save:q.SAVE_STATE_5},{d:\"Slot 6\",load:q.LOAD_STATE_6,save:q.SAVE_STATE_6},{d:\"Slot 7\",load:q.LOAD_STATE_7,save:q.SAVE_STATE_7},{d:\"Slot 8\",load:q.LOAD_STATE_8,save:q.SAVE_STATE_8},{d:\"Slot 9\",load:q.LOAD_STATE_9,save:q.SAVE_STATE_9},{d:\"Slot 10\",load:q.LOAD_STATE_10,save:q.SAVE_STATE_10},{d:\"File...\",load:r.MACHINE_LOAD_STATE_FILE,save:r.MACHINE_SAVE_STATE_FILE,peripheral:!0}],t=jt.DOMKeys,u=t.VK_ESCAPE.c,v=[t.VK_ENTER.c,t.VK_SPACE.c],w={};w[t.VK_UP.c]=-1,w[t.VK_DOWN.c]=1},jt.QuickOptionsDialog=function(a,b,c){\"use strict\";function d(){for(var a=0;a<i.length;++a){var d=i[a],e=d.peripheral?c.getControlReport(d.control):b.getControlReport(d.control);d.value=e.label,d.selected=e.active,k[a].innerHTML=d.value,k[a].classList.toggle(\"jt-selected\",!!d.selected)}}function e(){h=document.createElement(\"div\"),h.id=\"jt-quick-options\",h.tabIndex=-1;var b=jt.ConsoleControls,c=jt.PeripheralControls;i=[{label:\"Paddles Mode\",control:c.PADDLES_TOGGLE_MODE,peripheral:!0},{label:\"No Collisions\",control:b.NO_COLLISIONS},{label:\"&#128190;&nbsp; V-Synch\",control:b.VSYNCH},{label:\"&#128190;&nbsp; CRT Filter\",control:c.SCREEN_CRT_FILTER,peripheral:!0},{label:\"&#128190;&nbsp; Audio Buffer\",control:c.SPEAKER_BUFFER_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Big Directionals\",control:c.TOUCH_TOGGLE_DIR_BIG,peripheral:!0},{label:\"&#128190;&nbsp; TurboFire Speed\",control:c.TURBO_FIRE_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Haptic Feedback\",control:c.HAPTIC_FEEDBACK_TOGGLE_MODE,peripheral:!0}];var d=document.createElement(\"ul\");d.classList.add(\"jt-quick-options-list\");for(var e=0;e<i.length;++e){var g=document.createElement(\"li\"),j=document.createElement(\"div\");j.innerHTML=i[e].label,g.appendChild(j);var l=document.createElement(\"div\");l.classList.add(\"jt-control\"),l.jtControlItem=i[e],g.appendChild(l),d.appendChild(g),k.push(l)}h.appendChild(d),f(),a.appendChild(h)}function f(){jt.Util.onTapOrMouseDownWithBlock(h,function(a){if(a.target.jtControlItem){jt.DOMConsoleControls.hapticFeedbackOnTouch(a);var e=a.target.jtControlItem;e.peripheral?c.controlActivated(e.control,!1,!1):b.controlStateChanged(e.control,!0),d()}else h.focus()}),h.addEventListener(\"keydown\",function(a){return m.indexOf(a.keyCode)>=0&&g.hide(),jt.Util.blockEvent(a)})}var g=this;this.show=function(){if(!h)return e(),setTimeout(g.show,0);d(),j=!0,h.classList.add(\"jt-show\"),h.focus();var b=a.clientHeight-jt.ScreenGUI.BAR_HEIGHT-20,c=h.clientHeight,f=c<b?1:b/c;h.style.transform=\"translateY(-\"+(jt.ScreenGUI.BAR_HEIGHT/2|0)+\"px) scale(\"+f.toFixed(4)+\")\"},this.hide=function(){j&&(Javatari.userPreferences.save(),h.classList.remove(\"jt-show\"),j=!1,Javatari.room.screen.focus())};var h,i,j=!1,k=[],l=jt.DOMKeys,m=[l.VK_ESCAPE.c,l.VK_ENTER.c,l.VK_SPACE.c]},jt.SettingsGUI={WIDTH:600,HEIGHT:450},jt.SettingsGUI.html=function(){return'<div id=\"jt-modal\" tabindex=\"-1\"> <div id=\"jt-menu\"> <div id=\"jt-back\" jt-var=\"true\"> <div class=\"jt-back-arrow\"> </div> </div> <div class=\"jt-caption\"> Help & Settings </div> <div class=\"jt-items\"> <div id=\"jt-menu-console\" class=\"jt-item\" jt-var=\"true\"> CONSOLE </div> <div id=\"jt-menu-ports\" class=\"jt-item\" jt-var=\"true\"> CONTROLLERS </div> <div id=\"jt-menu-general\" class=\"jt-item jt-selected\" jt-var=\"true\"> EMULATION </div> <div id=\"jt-menu-about\" class=\"jt-item\" jt-var=\"true\"> ABOUT </div> <div id=\"jt-menu-selection\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-content\" jt-var=\"true\"> <div id=\"jt-console\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\"> POWER </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F2 </div> </div> <div class=\"jt-desc\"> TV TYPE </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F4 </div> </div> <div class=\"jt-desc\"> P1 Difficulty </div> </div> </div> <div class=\"jt-middle\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F5 </div> </div> <div class=\"jt-desc\"> Load Cartridge File </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F6 </div> </div> <div class=\"jt-desc\"> Load Cartridge URL </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F7 </div> </div> <div class=\"jt-desc\"> Remove Cartridge </div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\"> RESET </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F11 </div> </div> <div class=\"jt-desc\"> SELECT </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F9 </div> </div> <div class=\"jt-desc\"> P2 Difficulty </div> </div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-console-panel\"> <div class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> </div> <div class=\"jt-footer\"> Drag & Drop Files or URLs to load Cartridge ROMs and State Files </div> </div> <div id=\"jt-ports\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> L </div> </div> <div class=\"jt-desc\">Toggle Paddles</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> K </div> </div> <div class=\"jt-desc\">Toggle Swap Sides</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> J </div> </div> <div class=\"jt-desc\">Toggle Gamepads</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> H </div> </div> <div class=\"jt-desc\">Adjust Turbo Fire speed</div> </div> </div> <div class=\"jt-right\"> <div id=\"jt-ports-paddles-mode\" class=\"jt-hotkey jt-link jt-joystick-device\" jt-var=\"true\">Controllers: JOYSTICKS</div> <div id=\"jt-ports-p1-mode\" class=\"jt-hotkey jt-link jt-mouse-device\" jt-var=\"true\">Swap Mode: NORMAL</div> <div id=\"jt-ports-gamepads-mode\" class=\"jt-hotkey jt-link jt-joykeys-device\" jt-var=\"true\">Gamepads: AUTO (swapped)</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-player jt-p1\"> <div id=\"jt-control-p1-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 1 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p1-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p1-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p1-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p1-buttonT\" class=\"jt-key\" jt-var=\"true\" > </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p1-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p1-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p1-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p1-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p1-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div class=\"jt-player jt-p2\"> <div id=\"jt-control-p2-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 2 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p2-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p2-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p2-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p2-buttonT\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p2-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p2-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p2-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p2-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p2-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-ports-revert\" class=\"jt-link\" jt-var=\"true\"> REVERT </div> <div id=\"jt-ports-defaults\" class=\"jt-link\" jt-var=\"true\"> DEFAULTS </div> </div> <div id=\"jt-general\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> C </div> </div> <div class=\"jt-desc\">Collisions</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\">Fry Console</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Q </div> </div> <div class=\"jt-desc\">NTSC/PAL</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> W </div> </div> <div class=\"jt-desc\">V-Synch Modes</div> </div> <div class=\"jt-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> R </div> </div> <div class=\"jt-desc\">CRT Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> T </div> </div> <div class=\"jt-desc\">CRT Filters</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> D </div> </div> <div class=\"jt-desc\">Debug Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> I </div> </div> <div class=\"jt-desc\">Show Info</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> G </div> </div> <div class=\"jt-desc\">Capture Screen</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-desc\">Right-Click Bar Icons: Default Action</div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Load State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Save State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F8 </div> </div> <div class=\"jt-desc\">Save State File</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div>&nbsp;&nbsp;/&nbsp;&nbsp;<div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\">Fast / Slow Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Adjust Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> P </div> </div> <div class=\"jt-desc\">Toggle Pause</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> O </div>&nbsp;/&nbsp;<div class=\"jt-key\"> F </div> </div> <div class=\"jt-desc\">Next Frame</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Enter </div> </div> <div class=\"jt-desc\">Full Screen</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Screen Size / Width</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Viewport Size / Origin</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Backspace </div> </div> <div class=\"jt-desc\">Defaults</div> </div> </div> </div> <div id=\"jt-about\"> <div id=\"jt-logo-version\">version&nbsp'+Javatari.VERSION+'</div> <div class=\"jt-info\">'+atob(\"Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==\")+\"<br>\"+atob(\"PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9qYXZhdGFyaS5vcmciPmh0dHA6Ly9qYXZhdGFyaS5vcmc8L2E+\")+' </div> <div id=\"jt-browserinfo\" jt-var=\"true\"> </div> </div> </div> </div>';\n},jt.SettingsGUI.css=function(){return\"#jt-modal * { outline: none; box-sizing: border-box; } #jt-modal { position: absolute; overflow: hidden; width: \"+jt.SettingsGUI.WIDTH+\"px; height: 0; opacity: 0; visibility: hidden; top: 50%; left: 50%; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; z-index: 50; } #jt-modal.jt-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: \"+jt.SettingsGUI.HEIGHT+'px; visibility: visible; opacity: 1; } #jt-modal .jt-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #jt-modal .jt-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #jt-modal .jt-link:hover { outline: 1px solid; } .jt-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 48%); } .jt-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .jt-hotkey .jt-desc { display: inline-block; line-height: 21px; } .jt-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .jt-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .jt-footer { margin-top: 16px; text-align: center; } #jt-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #jt-menu #jt-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #jt-menu #jt-back:hover { background: rgba(0, 0, 0, .12); } .jt-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .jt-back-arrow:before { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .jt-back-arrow:after { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #jt-menu .jt-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-menu .jt-items { position: relative; width: 84%; height: 39px; margin: 0 auto; font-weight: 600; } #jt-menu .jt-item { float: left; width: 25%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #jt-menu .jt-selected { color: hsl(358, 67%, 46%); } #jt-menu #jt-menu-selection { position: absolute; left: 0; bottom: 0; width: 25%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #jt-content { position: relative; left: 0; width: 3000px; height: 371px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #jt-console, #jt-ports, #jt-general, #jt-about { position: absolute; width: '+jt.SettingsGUI.WIDTH+\"px; height: 100%; box-sizing: border-box; } #jt-console { padding-top: 35px; } #jt-console .jt-hotkey { height: 29px; } #jt-console .jt-command { width: 42px; } #jt-console .jt-left, #jt-console .jt-middle, #jt-console .jt-right { float: left; } #jt-console .jt-left { width: 160px; margin-left: 58px; } #jt-console .jt-middle { width: 204px; } #jt-console .jt-right .jt-command { width: 46px; } #jt-console .jt-console-panel { position: relative; margin: 18px auto 0; box-shadow: rgba(0, 0, 0, 0.6) 2px 2px 4px; } #jt-console .jt-console-panel * { cursor: auto; } #jt-console .jt-footer { margin: 20px auto; } #jt-ports { left: \"+jt.SettingsGUI.WIDTH+'px; padding: 18px 0 0 27px; } #jt-ports > .jt-left { float: left; width: 335px; padding-left: 26px; } #jt-ports > .jt-right { float: left; } #jt-ports .jt-command { width: 91px; } #jt-ports .jt-bottom { width: 546px; text-align: center; } #jt-ports .jt-player { position: absolute; top: 146px; width: 217px; color: rgba(0, 0, 0, .8); } #jt-ports .jt-p1 { left: 47px; } #jt-ports .jt-p2 { right: 47px; } #jt-ports .jt-title { margin-bottom: 09px; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #jt-ports .jt-player .jt-command { display: block; position: relative; float: left; width: 33%; height: 45px; font-size: 13px; text-align: center; } #jt-ports .jt-command.jt-fire1, #jt-ports .jt-command.jt-fire2 { top: 14px; } #jt-ports .jt-command.jt-left, #jt-ports .jt-command.jt-right { top: 27px; } #jt-ports .jt-command.jt-down { float: none; clear: both; margin: 0 auto; } #jt-ports .jt-command.jt-controller { height: 90px; } #jt-ports #jt-control-p1-controller, #jt-ports #jt-control-p2-controller { width: 70px; height: 89px; margin-left: 1px; background: url(\"'+jt.Images.urls.controllers+'\") no-repeat -1px 0; background-size: 73px 179px; } #jt-ports .jt-player .jt-key { min-width: 33px; height: 23px; padding: 5px 6px 4px; margin-top: 2px; cursor: pointer; } #jt-ports .jt-player .jt-key:hover { box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170); } #jt-ports .jt-player .jt-key.jt-redefining { color: white; background-color: rgb(87, 128, 255); border-color: rgb(71, 117, 255); } #jt-ports .jt-player .jt-key.jt-undefined { background-color: rgb(255, 150, 130); border-color: rgb(255, 130, 90); } #jt-ports-defaults, #jt-ports-revert { position: absolute; left: 260px; width: 82px; text-align: center; padding: 3px 0 1px; font-size: 12px; } #jt-ports-defaults { bottom: 47px; } #jt-ports-revert { bottom: 21px; } #jt-general { left: '+2*jt.SettingsGUI.WIDTH+\"px; padding-top: 18px; padding-left: 34px; } #jt-general .jt-left { float: left; width: 245px; } #jt-general .jt-left .jt-command { width: 99px; } #jt-general .jt-right { float: left; } #jt-general .jt-right .jt-command { width: 160px; } #jt-about { left: \"+3*jt.SettingsGUI.WIDTH+'px; font-size: 18px; } #jt-about #jt-logo-version { width: 300px; height: 238px; margin: 26px auto 19px; color: hsl(0, 0%, 98%); padding-top: 200px; box-sizing: border-box; text-align: center; background: black url(\"'+jt.Images.urls.logo+'\") center 18px no-repeat; background-size: 233px 173px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-about .jt-info { line-height: 30px; text-align: center; } #jt-about a { color: rgb(0, 40, 200); text-decoration: none; } #jt-about a:hover { text-decoration: underline; } #jt-about #jt-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } .jt-clear { clear: both; } .jt-divider { clear: both; height: 27px; } .jt-full-divider { clear: both; height: 21px; } #jt-general .jt-full-divider { clear: both; height: 18px; }'},jt.SettingsDialog=function(a,b){\"use strict\";function c(){jt.Util.insertCSS(jt.SettingsGUI.css()),a.insertAdjacentHTML(\"beforeend\",jt.SettingsGUI.html()),j=document.getElementById(\"jt-modal\"),delete jt.SettingsGUI.html,delete jt.SettingsGUI.css,d(),e()}function d(){function a(b,c){c(b);for(var d=b.childNodes,e=0;e<d.length;e++)a(d[e],c)}a(j,function(a){var b=a.id&&a.getAttribute&&a.getAttribute(\"jt-var\");b&&(i[a.id]=a)})}function e(){jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-back\"],i.hide),\nj.addEventListener(\"keydown\",function(a){h(a,!0)}),j.addEventListener(\"keyup\",function(a){h(a,!1)}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-console\"],function(){i.setPage(\"CONSOLE\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-ports\"],function(){i.setPage(\"PORTS\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-general\"],function(){i.setPage(\"GENERAL\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-about\"],function(){i.setPage(\"ABOUT\")});for(var a in r)!function(a){jt.Util.onTapOrMouseDownWithBlock(i[a],function(){k(a)})}(a);jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-paddles-mode\"],function(){b.togglePaddleMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-p1-mode\"],function(){b.toggleP1ControlsMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-gamepads-mode\"],function(){b.toggleGamepadMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-defaults\"],o),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-revert\"],p)}function f(){i[\"jt-browserinfo\"].innerHTML=navigator.userAgent}function g(){var a=b.isPaddleMode(),c=b.isP1ControlsMode();i[\"jt-ports-paddles-mode\"].innerHTML=\"Controllers: \"+(a?\"PADDLES\":\"JOYSTICKS\"),i[\"jt-ports-p1-mode\"].innerHTML=\"Swap Mode: \"+(c?\"SWAPPED\":\"NORMAL\"),i[\"jt-ports-gamepads-mode\"].innerHTML=\"Gamepads: \"+b.getGamepadModeDesc(),a?(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"+ Speed\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"- Speed\"):(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"Up\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"Down\"),i[\"jt-control-p1-label\"].innerHTML=\"PLAYER \"+(c?\"2\":\"1\"),i[\"jt-control-p2-label\"].innerHTML=\"PLAYER \"+(c?\"1\":\"2\");var d=v.joystickKeys;for(var e in r){var f=i[e];if(e===s)f.classList.add(\"jt-redefining\"),f.classList.remove(\"jt-undefined\"),f.innerHTML=\"?\";else{f.classList.remove(\"jt-redefining\");var g=r[e],h=d[g.player][g.control];h.c===jt.DOMKeys.VK_VOID.c?(f.classList.add(\"jt-undefined\"),f.innerHTML=\"\"):(f.classList.remove(\"jt-undefined\"),f.innerHTML=h.n)}}}function h(a,b){var c=jt.DOMKeys.codeForKeyboardEvent(a);return b&&c===w?(n(),jt.Util.blockEvent(a)):void(s&&m(a))}var i=this;this.show=function(a){return j?void(this.position()&&(s=null,this.setPage(a||t),j.classList.add(\"jt-show\"),j.classList.add(\"jt-show\"),u=!0,setTimeout(function(){j.focus()},50))):(c(),void setTimeout(function(){i.show(a)},0))},this.hide=function(){u&&(i.hideLesser(),Javatari.room.screen.focus())},this.hideLesser=function(){Javatari.userPreferences.isDirty&&q(),j.classList.remove(\"jt-show\"),j.classList.remove(\"jt-show\"),u=!1},this.setPage=function(a){t=a;var b={CONSOLE:\"0\",PORTS:\"-600px\",GENERAL:\"-1200px\",ABOUT:\"-1800px\"}[t],c={CONSOLE:\"0\",PORTS:\"25%\",GENERAL:\"50%\",ABOUT:\"75%\"}[t];switch(b&&(i[\"jt-content\"].style.left=b),c&&(i[\"jt-menu-selection\"].style.left=c),i[\"jt-menu-console\"].classList.toggle(\"jt-selected\",\"CONSOLE\"===t),i[\"jt-menu-ports\"].classList.toggle(\"jt-selected\",\"PORTS\"===t),i[\"jt-menu-general\"].classList.toggle(\"jt-selected\",\"GENERAL\"===t),i[\"jt-menu-about\"].classList.toggle(\"jt-selected\",\"ABOUT\"===t),t){case\"ABOUT\":f();break;case\"PORTS\":g()}},this.isVisible=function(){return u},this.position=function(){var b=a.clientWidth,c=a.clientHeight;return b<575||c<400?(this.hide(),!1):(j.style.top=\"\"+((c-jt.SettingsGUI.HEIGHT)/2|0)+\"px\",j.style.left=\"\"+((b-jt.SettingsGUI.WIDTH)/2|0)+\"px\",!0)},this.controlsModeStateUpdate=function(){u&&\"PORTS\"===t&&g()};var j,k=function(a){s=a,g()},l=function(){s=null,g()},m=function(a){if(s){var b=jt.DOMKeys.codeForKeyboardEvent(a),c=jt.DOMKeys.nameForKeyboardEventSingle(a);if(b!==jt.DOMKeys.VK_VOID.c&&c){var d={c:b,n:c},e=r[s],f=v.joystickKeys;for(var g in r){var h=r[g];g!==s&&f[h.player][h.control].c===d.c&&(f[h.player][h.control]=jt.DOMKeys.VK_VOID)}f[e.player][e.control]=d,Javatari.userPreferences.setDirty(),l()}}},n=function(){s?l():i.hide()},o=function(){Javatari.userPreferences.setDefaultJoystickKeys(),l()},p=function(){Javatari.userPreferences.load(),l()},q=function(){Javatari.userPreferences.save(),b.applyPreferences()},r={\"jt-control-p1-button\":{player:0,control:\"button\"},\"jt-control-p1-buttonT\":{player:0,control:\"buttonT\"},\"jt-control-p1-up\":{player:0,control:\"up\"},\"jt-control-p1-left\":{player:0,control:\"left\"},\"jt-control-p1-right\":{player:0,control:\"right\"},\"jt-control-p1-down\":{player:0,control:\"down\"},\"jt-control-p2-button\":{player:1,control:\"button\"},\"jt-control-p2-buttonT\":{player:1,control:\"buttonT\"},\"jt-control-p2-up\":{player:1,control:\"up\"},\"jt-control-p2-left\":{player:1,control:\"left\"},\"jt-control-p2-right\":{player:1,control:\"right\"},\"jt-control-p2-down\":{player:1,control:\"down\"}},s=null,t=\"CONSOLE\",u=!1,v=Javatari.userPreferences.current,w=jt.DOMKeys.VK_ESCAPE.c},jt.WebAudioSpeaker=function(a){\"use strict\";function b(){return jt.Util.isMobileDevice()?\"CHROME\"!==jt.Util.browserInfo().name||jt.Util.isIOSDevice()?3:5:2}function c(){return\"SAFARI\"===jt.Util.browserInfo().name||jt.Util.isIOSDevice()?b():0}function d(){!m||k.state&&\"suspended\"!==k.state||(a.addEventListener(\"touchend\",function b(){a.removeEventListener(\"touchend\",b,!0);var c=k.createBufferSource();c.buffer=k.createBuffer(1,1,22050),c.connect(k.destination),c.start(0),jt.Util.log(\"Audio Context unlocked, \"+k.state)},!0),jt.Util.log(\"Audio Context unlock on touch registered\"))}function e(){if(m){n.length=j.length,o.length=j.length;for(var a=0;a<j.length;a++)n[a]=j[a].getSampleRate()/k.sampleRate,o[a]=0,j[a].setAudioMonitorBufferSize(n[a]*l|0)}}function f(a){for(var b=a.outputBuffer.getChannelData(0),c=b.length,d=c-1;d>=0;d-=1)b[d]=0;if(0!==j.length)for(var e=j.length-1;e>=0;e-=1){for(var f=n[e],g=j[e].retrieveSamples(c*f+o[e]|0,r),h=g.buffer,i=g.bufferSize,k=g.start+o[e],l=0;l<c;)b[l]+=h[0|k],l+=1,k+=f,k>=i&&(k-=i);o[e]=k-(0|k)}}this.connect=function(a){a.connectMonitor(this)},this.connectPeripherals=function(a){g=a},this.connectAudioSignal=function(a){j.indexOf(a)>=0||(jt.Util.arrayAdd(j,a),e())},this.disconnectAudioSignal=function(a){j.indexOf(a)<0||(jt.Util.arrayRemoveAllElement(j,a),e())},this.powerOn=function(){h(),m&&(d(),this.unpause())},this.powerOff=function(){this.pause(),k&&k.close(),k=m=void 0},this.mute=function(){r=!0},this.unMute=function(){r=!1},this.pause=function(){m&&m.disconnect()},this.unpause=function(){m&&m.connect(k.destination)},this.toggleBufferBaseSize=function(){return k?(q=(q+2)%8-1,this.pause(),i(),this.unpause(),g.showOSD(\"Audio Buffer size: \"+(q===-1?\"Auto (\"+l+\")\":0===q?\"Browser (\"+l+\")\":l),!0),p.audioBufferBase=q,void Javatari.userPreferences.setDirty()):g.showOSD(\"Audio is DISABLED\",!0,!0)},this.getControlReport=function(a){return{label:q===-2?\"OFF\":q===-1?\"Auto\":0===q?\"Browser\":l,active:q>0}};var g,h=function(){if(q===-2||0===Javatari.AUDIO_MONITOR_BUFFER_SIZE)return void jt.Util.warning(\"Audio disabled in configuration\");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error(\"WebAudio API not supported by the browser\");k=new a,jt.Util.log(\"Speaker AudioContext created. Sample rate: \"+k.sampleRate+(k.state?\", \"+k.state:\"\")),i()}catch(a){jt.Util.error(\"Could not create AudioContext. Audio DISABLED!\\n\"+a)}},i=function(){try{var a=q===-1?b():0===q?c():q,d=Javatari.AUDIO_MONITOR_BUFFER_SIZE>0?Javatari.AUDIO_MONITOR_BUFFER_SIZE:a>0?jt.Util.exp2(0|jt.Util.log2((k.sampleRate+14e3)/22050))*jt.Util.exp2(a-1)*256:0;m=k.createScriptProcessor(d,1,1),m.onaudioprocess=f,l=m.bufferSize,e(),jt.Util.log(\"Audio Processor buffer size: \"+m.bufferSize)}catch(a){jt.Util.error(\"Could not create ScriptProcessorNode. Audio DISABLED!\\n\"+a)}},j=[];this.signals=j;\nvar k,l,m,n=[],o=[],p=Javatari.userPreferences.current,q=Javatari.AUDIO_MONITOR_BUFFER_BASE===-3?p.audioBufferBase:Javatari.AUDIO_MONITOR_BUFFER_BASE,r=!1},jt.LocalStorageSaveStateMedia=function(){\"use strict\";this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(b){a=b},this.isSlotUsed=function(a){return void 0!==localStorage[\"javatarisave\"+a]},this.saveState=function(a,c){var e=d(c);return e&&b(\"save\"+a,e)},this.loadState=function(a){var b=c(\"save\"+a);return e(b)},this.saveStateFile=function(b,c){var e=d(c);e&&a.startDownloadBinary((b||\"Javatari SaveState\")+h,e,\"System State file\")},this.loadStateFile=function(a){return e(a)},this.saveResource=function(a,c){try{var d=c&&JSON.stringify(c);return b(\"res\"+a,d)}catch(a){}},this.loadResource=function(a){try{var b=c(\"res\"+a);return b&&JSON.parse(b)}catch(a){}};var a,b=function(a,b){try{return localStorage[\"javatari\"+a]=b,!0}catch(a){return jt.Util.error(a),!1}},c=function(a){try{return localStorage[\"javatari\"+a]}catch(a){jt.Util.warning(a)}},d=function(a){try{return f+JSON.stringify(a)}catch(a){jt.Util.error(a)}},e=function(a){try{var b;if(b=\"string\"==typeof a?a.substr(0,f.length):jt.Util.int8BitArrayToByteString(a,0,f.length),b!==f&&b!==g)return;var c;return c=\"string\"==typeof a?a.slice(f.length):jt.Util.int8BitArrayToByteString(a,f.length),c&&JSON.parse(c)}catch(a){jt.Util.error(a)}},f=String.fromCharCode(0,0)+\"javataristate!\",g=\"javatarijsstate!\",h=\".jst\"},jt.PeripheralControls={SCREEN_ASPECT_PLUS:1,SCREEN_ASPECT_MINUS:2,SCREEN_SCALE_PLUS:3,SCREEN_SCALE_MINUS:4,VIEWPORT_ORIGIN_PLUS:5,VIEWPORT_ORIGIN_MINUS:6,VIEWPORT_SIZE_PLUS:7,VIEWPORT_SIZE_MINUS:8,SCREEN_FULLSCREEN:10,SCREEN_CRT_FILTER:11,SCREEN_CRT_MODE:12,SCREEN_TOGGLE_MENU:13,SCREEN_OPEN_HELP:14,SCREEN_OPEN_ABOUT:15,SCREEN_OPEN_SETTINGS:16,SCREEN_OPEN_QUICK_OPTIONS:17,SCREEN_DEFAULTS:18,SCREEN_CONSOLE_PANEL_TOGGLE:19,SPEAKER_BUFFER_TOGGLE:20,MACHINE_POWER_TOGGLE:102,MACHINE_POWER_FRY:103,MACHINE_LOAD_STATE_FILE:104,MACHINE_SAVE_STATE_FILE:105,MACHINE_LOAD_STATE_MENU:106,MACHINE_SAVE_STATE_MENU:107,P1_CONTROLS_TOGGLE:201,JOYSTICKS_TOGGLE_MODE:202,PADDLES_TOGGLE_MODE:203,TOUCH_TOGGLE_MODE:204,TOUCH_TOGGLE_DIR_BIG:205,TURBO_FIRE_TOGGLE:206,HAPTIC_FEEDBACK_TOGGLE_MODE:207,CAPTURE_SCREEN:304,CARTRIDGE_LOAD_RECENT:40,CARTRIDGE_LOAD_FILE:41,CARTRIDGE_LOAD_URL:42,CARTRIDGE_REMOVE:43,CARTRIDGE_LOAD_DATA_FILE:44,CARTRIDGE_SAVE_DATA_FILE:45,AUTO_LOAD_FILE:46,AUTO_LOAD_URL:47},jt.DOMPeripheralControls=function(){\"use strict\";function a(){k()}var b=this;this.connect=function(a,b){c=a,i=b},this.connectPeripherals=function(a,b,c,i){d=a,f=b,e=a.getMonitor(),g=c,h=i},this.getControlReport=function(a){switch(a){case l.PADDLES_TOGGLE_MODE:case l.TURBO_FIRE_TOGGLE:case l.TOUCH_TOGGLE_DIR_BIG:case l.HAPTIC_FEEDBACK_TOGGLE_MODE:return g.getControlReport(a);case l.SCREEN_CRT_FILTER:return d.getControlReport(a);case l.SPEAKER_BUFFER_TOGGLE:return f.getControlReport(a)}return{label:\"Unknown\",active:!1}},this.processKey=function(a,c){if(!c)return!1;var d=m[a]||m[a&n];return!!d&&(b.controlActivated(d,!!(a&o),!1),!0)},this.controlActivated=function(a,b,k){switch(a){case l.MACHINE_POWER_TOGGLE:c.controlStateChanged(jt.ConsoleControls.POWER,!0);break;case l.MACHINE_POWER_FRY:c.controlStateChanged(jt.ConsoleControls.POWER_FRY,!0);break;case l.MACHINE_LOAD_STATE_FILE:j()||h.openFileChooserDialog(p.STATE,!1,!1,!1);break;case l.MACHINE_SAVE_STATE_FILE:c.controlStateChanged(jt.ConsoleControls.SAVE_STATE_FILE,!0);break;case l.MACHINE_LOAD_STATE_MENU:d.openSaveStateDialog(!1);break;case l.MACHINE_SAVE_STATE_MENU:d.openSaveStateDialog(!0);break;case l.CARTRIDGE_LOAD_RECENT:j()||d.openCartridgeChooserDialog(!1,b,k);break;case l.CARTRIDGE_LOAD_FILE:j()||h.openFileChooserDialog(p.ROM,b,k,!1);break;case l.CARTRIDGE_LOAD_URL:j()||h.openURLChooserDialog(p.ROM,b,k);break;case l.CARTRIDGE_REMOVE:j()||i.insert(null,!1);break;case l.CARTRIDGE_LOAD_DATA_FILE:break;case l.CARTRIDGE_SAVE_DATA_FILE:break;case l.AUTO_LOAD_FILE:j()||h.openFileChooserDialog(p.AUTO,b,k,!1);break;case l.AUTO_LOAD_URL:j()||h.openURLChooserDialog(p.AUTO,b,k,!1);break;case l.SCREEN_CRT_MODE:e.crtModeToggle();break;case l.SCREEN_CRT_FILTER:e.crtFilterToggle();break;case l.SCREEN_FULLSCREEN:e.fullscreenToggle();break;case l.SCREEN_DEFAULTS:c.setDefaults(),e.setDefaults(),e.showOSD(\"Default Settings\",!0);break;case l.SCREEN_TOGGLE_MENU:d.toggleMenuByKey();break;case l.SCREEN_OPEN_HELP:d.openHelp();break;case l.SCREEN_OPEN_ABOUT:d.openAbout();break;case l.SCREEN_OPEN_SETTINGS:if(b)return this.controlActivated(l.SCREEN_DEFAULTS);d.openSettings();break;case l.SCREEN_OPEN_QUICK_OPTIONS:d.openQuickOptionsDialog();break;case l.SCREEN_CONSOLE_PANEL_TOGGLE:d.toggleConsolePanel();break;case l.P1_CONTROLS_TOGGLE:g.toggleP1ControlsMode();break;case l.JOYSTICKS_TOGGLE_MODE:g.toggleGamepadMode();break;case l.PADDLES_TOGGLE_MODE:g.togglePaddleMode();break;case l.TOUCH_TOGGLE_MODE:g.toggleTouchControlsMode();break;case l.TOUCH_TOGGLE_DIR_BIG:g.toggleTouchDirBig();break;case l.TURBO_FIRE_TOGGLE:g.toggleTurboFireSpeed();break;case l.HAPTIC_FEEDBACK_TOGGLE_MODE:g.toggleHapticFeedback();break;case l.CAPTURE_SCREEN:d.saveScreenCapture();break;case l.SPEAKER_BUFFER_TOGGLE:f.toggleBufferBaseSize();break;case l.VIEWPORT_ORIGIN_MINUS:e.viewportOriginDecrease();break;case l.VIEWPORT_ORIGIN_PLUS:e.viewportOriginIncrease()}if(!N)switch(a){case l.SCREEN_ASPECT_MINUS:e.displayAspectDecrease();break;case l.SCREEN_ASPECT_PLUS:e.displayAspectIncrease();break;case l.SCREEN_SCALE_MINUS:e.displayScaleDecrease();break;case l.SCREEN_SCALE_PLUS:e.displayScaleIncrease();break;case l.VIEWPORT_SIZE_MINUS:e.viewportSizeDecrease();break;case l.VIEWPORT_SIZE_PLUS:e.viewportSizeIncrease()}};var c,d,e,f,g,h,i,j=function(){return!!Javatari.CARTRIDGE_CHANGE_DISABLED&&(e.showOSD(\"Cartridge change is disabled!\",!0,!0),!0)},k=function(){var a=jt.DOMKeys;m[y]=l.CARTRIDGE_LOAD_RECENT,m[y|a.ALT]=l.CARTRIDGE_LOAD_RECENT,m[z]=l.AUTO_LOAD_URL,m[z|a.ALT]=l.AUTO_LOAD_URL,m[A]=l.CARTRIDGE_REMOVE,m[A|a.ALT]=l.CARTRIDGE_REMOVE,m[M]=l.MACHINE_SAVE_STATE_FILE,m[M|a.ALT]=l.MACHINE_SAVE_STATE_FILE,m[B|a.ALT]=l.P1_CONTROLS_TOGGLE,m[D|a.ALT]=l.PADDLES_TOGGLE_MODE,m[C|a.ALT]=l.JOYSTICKS_TOGGLE_MODE,m[E|a.ALT]=l.TOUCH_TOGGLE_MODE,m[F|a.ALT]=l.TURBO_FIRE_TOGGLE,m[H|a.ALT]=l.SCREEN_CRT_FILTER,m[G|a.ALT]=l.SCREEN_CRT_MODE,m[I|a.ALT]=l.SCREEN_OPEN_SETTINGS,m[J|a.ALT]=l.SCREEN_OPEN_QUICK_OPTIONS,m[K|a.ALT]=l.SCREEN_CONSOLE_PANEL_TOGGLE,m[L|a.ALT]=l.SCREEN_FULLSCREEN,m[r|a.CONTROL|a.ALT]=l.SCREEN_SCALE_MINUS,m[t|a.CONTROL|a.ALT]=l.SCREEN_SCALE_PLUS,m[q|a.CONTROL|a.ALT]=l.SCREEN_ASPECT_MINUS,m[s|a.CONTROL|a.ALT]=l.SCREEN_ASPECT_PLUS,m[r|a.SHIFT|a.CONTROL]=l.VIEWPORT_ORIGIN_MINUS,m[t|a.SHIFT|a.CONTROL]=l.VIEWPORT_ORIGIN_PLUS,m[q|a.SHIFT|a.CONTROL]=l.VIEWPORT_SIZE_MINUS,m[s|a.SHIFT|a.CONTROL]=l.VIEWPORT_SIZE_PLUS,m[u]=l.SCREEN_TOGGLE_MENU,m[v]=l.SCREEN_DEFAULTS,m[v|a.ALT]=l.SCREEN_DEFAULTS,m[w|a.ALT]=l.CAPTURE_SCREEN,m[x|a.ALT]=l.SPEAKER_BUFFER_TOGGLE},l=jt.PeripheralControls,m={},n=~jt.DOMKeys.SHIFT,o=jt.DOMKeys.SHIFT,p=jt.FileLoader.OPEN_TYPE,q=jt.DOMKeys.VK_LEFT.c,r=jt.DOMKeys.VK_UP.c,s=jt.DOMKeys.VK_RIGHT.c,t=jt.DOMKeys.VK_DOWN.c,u=jt.DOMKeys.VK_CONTEXT.c,v=jt.DOMKeys.VK_BACKSPACE.c,w=jt.DOMKeys.VK_X.c,x=jt.DOMKeys.VK_A.c,y=jt.DOMKeys.VK_F5.c,z=jt.DOMKeys.VK_F6.c,A=jt.DOMKeys.VK_F7.c,B=jt.DOMKeys.VK_K.c,C=jt.DOMKeys.VK_J.c,D=jt.DOMKeys.VK_L.c,E=jt.DOMKeys.VK_N.c,F=jt.DOMKeys.VK_H.c,G=jt.DOMKeys.VK_R.c,H=jt.DOMKeys.VK_T.c,I=jt.DOMKeys.VK_Y.c,J=jt.DOMKeys.VK_U.c,K=jt.DOMKeys.VK_S.c,L=jt.DOMKeys.VK_ENTER.c,M=(jt.DOMKeys.VK_F1.c,jt.DOMKeys.VK_F8.c),N=Javatari.SCREEN_RESIZE_DISABLED;a()},jt.Room=function(a,b){\"use strict\";function c(){f(),g()}function d(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function e(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0));\n}function f(){h.peripheralControls=new jt.DOMPeripheralControls,h.consoleControls=new jt.DOMConsoleControls(h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia,h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h.recentROMs),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getConsoleControlsSocket(),h.console.getCartridgeSocket())}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){jt.Clock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),d(function(){h.setLoading(!1),h.screen.start(a||e)})})},this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.isLoading=!1;var i;c()},Javatari.userPreferences={},Javatari.userPreferences.currentVersion=1,Javatari.userPreferences.compatibleVersions=new Set([1]),Javatari.userPreferences.defaults=function(){\"use strict\";var a=jt.DOMKeys;return{joystickKeys:[{left:a.VK_LEFT,up:a.VK_UP,right:a.VK_RIGHT,down:a.VK_DOWN,button:a.VK_SPACE,buttonT:a.VK_DELETE},{left:a.VK_F,up:a.VK_T,right:a.VK_H,down:a.VK_G,button:a.VK_A,buttonT:a.VK_PERIOD}],joystickGamepads:[{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3},{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3}],touch:{directionalBig:!1},hapticFeedback:!0,turboFireSpeed:6,vSynch:null,crtFilter:null,audioBufferBase:-1}},Javatari.userPreferences.load=function(){var a;try{a=JSON.parse(localStorage.javatari4prefs||\"{}\"),a.version&&delete a.version}catch(a){}if(!a||!Javatari.userPreferences.compatibleVersions.has(a.prefsVersion)){a={}}var b=Javatari.userPreferences.defaults();for(var c in b)void 0===a[c]&&(a[c]=b[c]);a.prefsVersion=Javatari.userPreferences.currentVersion,Javatari.userPreferences.current||(Javatari.userPreferences.current={});var d=Javatari.userPreferences.current;for(c in a)d[c]=a[c];Javatari.userPreferences.isDirty=!1},Javatari.userPreferences.setDefaultJoystickKeys=function(){Javatari.userPreferences.current.joystickKeys=Javatari.userPreferences.defaults().joystickKeys,Javatari.userPreferences.setDirty()},Javatari.userPreferences.save=function(){if(Javatari.userPreferences.isDirty)try{Javatari.userPreferences.current.javatariVersion=Javatari.VERSION,localStorage.javatari4prefs=JSON.stringify(Javatari.userPreferences.current),Javatari.userPreferences.isDirty=!1,jt.Util.log(\"Preferences saved!\")}catch(a){}},Javatari.userPreferences.setDirty=function(){Javatari.userPreferences.isDirty=!0},jt.Images.embedded=!0,jt.Images.urls.logo=\"data:image/png;base64,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\",\njt.Images.urls.loading=\"data:image/gif;base64,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\",jt.Images.urls.mouseCursor=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABL0lEQVRYw+3VP0oDQRTH8U8k+AcFFRUFERGLiFjEA1jZTo6RG6T3ArmFR9j0WlpaWBiwsNNyiwgW0Vg4CUPELhMt9guPffumeG9nf/MbvlnEYVmWo3a7PcIO1s2R3aT5KQ6wMo/GC/G5nNTWsYr6PHdgE+fJLjRxhFqMbNSxFr96K6nvYxhr7zE+Y8yUWghhNH5pNBr6/f5ksdfrXeA1xiCbBoqiUBSF6RwN7GIptwh/4wR7UyKduQZ0Op1JIc2xHTVSzzpAt9v9sdBqtczTB/6Mfz/A2AOGOYe4DCGMUqI33OAKl1MmNVsjwhmaIYTrxIBu8YA73OMZb7kG2MFhPPPH2ECJJzzG5iU+ch3DMvnfL/HcDxILztZcctPVo9stxXyYCPBDRUVFRUVFRUa+AB+1YCivg1lPAAAAAElFTkSuQmCC\",jt.Images.urls.panel=\"data:image/jpeg;base64,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\",\njt.Images.urls.panelSprites=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wgARCAC6AgADASEAAhEBAxEB/8QAHAABAQACAwEBAAAAAAAAAAAAAAECBgMEBQgH/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHS5HCOxsBrfXrm5o2LXDl4y0wq2JaMTKmIyxrLGIq2LiBLUsJWUiUgonAvN6qebK6njinu8BnDi2yNWzMlbRrkZysMSQUBC5CkhBKIUKXEgUkAsLzlxOHYI86nU8anXPXHDmY7QaxxnPmbXrcZyvL4QAAAAAAAAAAAB6R2LHX2FfNys6vmDoHp9IQ59pjT8qx7Rueuxkry+EAAAAAAAAAAAAekdhHB6xrlrHEdU7Y7GB1tmPA544uvW7+BFleZwgAAAAAAAAAAAD0TnRwbwdGVw+cB436cdz84PI2M9TczT9GNx8CEPN4aAAAAAAAAAAAAeidvGOv79dGx1PErGG6fqdNFj8/2M/QfXOr+IG2+BFlebwgAAAAAAAAAAAD0Ts5x1NgOha63ljiO/wDph3NENY2M7e2Hk/npt3hxcTyuKgAAAAAAAAAAAHonZyjg9U8WnHw04jL0ztU8TYzyewdjxjbPBjJXl8BQAAhQAACFAAAAD0jsw6v7jHVUAfi3RPTwLsUaf2qw7JsWuxzQuVSFEpKUUJCVcBYuNZUmMVWGRApYKB0PpaCgD5x6Zxds5doNT6h3eaNk0qs8ygJSiVMsVCyLKUYgZDAUSkGOQhlDHhTt/SagAfiucc3AX1q8nsx18Ts6QefKAAAAAAAAAAAAChkep9IAAHzjgZ8hz+tGs5VycxsOpx5/HVgAKQAAAAAAAFhQAOY9H6OAAPm+mPFHd9etc5Di7Zseqx1+tXEKAgBChCwoAJQIAoAFOTuR2vo2gAPmriOPnOTYTVRy8htWrHXwEFAAIgoAAAAgCqEAqLy1z/SAAB8vUvEd72zVxx+gbTqhxYEFgFAAAAAWFhYSgSgAGWZyfTAAB8x9g3LXjxNlPA9ePT1Ctk04AABSAKACAKEAAAAAUv1QAAfMu8n6HgfiPsnifs529QPB1g45HGIpCgAQogoBCgAlABYuVcmZn9HgAHzDtp+m4n4v66eL+nrsej2dDW83CVjjEtBEAyIJagWJQoiAEqiouVZI5Mqv0MAAfMveO12zWtmPC7xsGpHt6cAEAAAAAAABYlLQCkJSzJH1KoAHzPDucKcG0rqnpHN4Fm5apLRZEogGULBQJlURRACkCkgUpjIKfToAB83eec3GejscadlWHZNo1ksAqAUlELCyqgEqoKlLIqpYQoxtRE+kqAA+c7HX5auwGtYGdNn1kyhZBSCkpKQACgAQVZBVkWFVAkPpAKAPnjzj0OodjZY0z0KcFntadKAQUQWCkASgAABYBQhYWFD6nAAP/8QALxAAAQMCAwYFBAMBAAAAAAAAAAECEQMSBAUTBhAUITM1IjAxMlAVFiVBICM2QP/aAAgBAQABBQJVFkVzBtRpMG0SxmyqsaiDXSsmO7R+7WoWsiGENhUbFrCGEMIaQ1VtYQwtYWtFawtYW0yGCIwsYqRTEaybaco1hDCxiisYWsi1hbTLWCIwhhawhhFOYpkUy1hDC1hbTi1keJoiyZ+xKm0T8PRQqYeihiqVNq73LaepIvMa6xdo/Dm6etwqI5rea43tFNfBuc9Gmsw1WGqw1GGqw1WGqw1WGqw1WGu012muw1mGtTNWmatM1KZqsNZhqsNWmazDWYazDXYazDVpmqw1mGsw1WGpTNVhqsNVhqsNVgnPco31zn/SVSuYzqaZp7n+6YL0Lk3bS95UuQRyEmP7Ozpbq3U+Goezc3qZz/paxXMb1d37rLDpuI3U3m06xnM3Fu6k6VzHszOnurdT4ah7NydXaRysz7WU1lUWrcXIXIfuv72MktLRU57Ud8YwgVCIdmfZG9PdW6nw1H2bk6uc5rjqOcrmeZoOzPM0K2b5pTPuHMz7hzM+4MzLFqYnB5NRpMqZThHNx+FXCVnem0vfsnyxK7OAw1ucZU2kxTMextVUpySVup8NR9kkjl/uzz/TVSuYrquYs2KWqhkcfVd20qJBtJ37KlRcCYlEXDr7sy7G3pbqvU+Go+wgd187/wBPXKxi+tueU6mni8JmbHMfmNFEzSsuIa1TaXv2W452HG5tQVuYY/WRvrmXY29PdV6nw1H2CDuvtE/T2idiJHYi4qVr3bqhX97XiKO9lJPHtMn5yk6UQc6G0/XM+xs6R+qqeP4akkMTcvXxWT4HFV/t/LD7fyw+38sPt/LD7fyw+38sKzZGOtG1B9QpIbTJObTaNqi1FeUmwZgs5HRdNPfPIncpO6RFJJJ3SXElxJeSSXFxcSK4u5IpIriSVLi4RSSST13pzrfzlHD2KI0ZTHeufqi5xUpqWFOkVFMcn4d3gVMQcQhxCHEIcQcQhxCHEIcQ04hprtnXacQ04hpxCGu0Wu2NdotdoldprtNdk67DXaa7TXacQ012muka7Z12mu010OIQ10FxBrnEIcQhxBxJxJxKjqjnlNIT+bsFlzhmFwCHDZcPweCVUweXomeYXBVcxp4fAoaWXqVMLglEweXMM4axmXPbPxqeRzUVed6jX3CczaLvMkjXIp+sf2d5UTn8SvIopLm+Q7dcO5jFuTadfzDFLheY1bm43s7hRWHNCTmczmc/+3nukkk5iMGjfIcsC1TUEWSl67Sp+avRC8RZKRjuzqL8Wgi+Q/m5Glp6LSXntQv5u1RWKIsFJTMlT6PcwVWkoShKEoShKEoShKEoShKEoS0lpLSWnhJaS0lpLTwktPCS0lp4SWkoShKEoShKEoShKEoShKHhEVois8hE5tRXOpZJUczMMtr4VMP1dpe+oYLBVcWYjIKyN030a2bdm+VXkbNUWOUc1Htr0ko5jtH32ik1MIxKeHNpMO1+ExzGuybSYabTTaWNLELELELELELELCxCxCxCxCxCxCxCxCxCxCxCxCxCxCxCxpYhYhYhYhYhYhYhYhYhYhY0sQsQsQ00NNolJppsNJnkPVb8sxPC1mVWPSrVZSbVq6uZbS8s+oeuV41tSibTYlqYfF9mFIIILS0gtQVCC0gtLRGlpaWlpBaQQWlpBBaQQWkFpBBaWkFpaQQInlOT+9eZRr1GFWsulR621KfmqXJtNVatHF1zMampXzdfw8kqSpKk/wDXJJKkqSpKlyl6lylyl7i5S5S9xe7yK621NSRjobiKktpJ4tp0/Lo5Sm5CpWsY1JMyRPo1rS1pa0taWsIaWtLWlrTwkNIaQhCEIcjkcjlMIQhy3cjkcjkIjSEIQhpDS1pCENIaQ0hpDS1hDC1pYhDCGEN8iol7E5CuQSXKxINouebu5CVIRy3DE8OYdnI3xvjzY8mN0fzgj+EeUngXRuNJwjIWbjaRq/WISoWKWEmOVEye5pc0uYXMLmlzS5hc0uaXMm9hewvYXsL2F7C9hewvYX0y9hew1GGow1GF7C9hewvYXsL2F7C9hewvYXtL2F7C9hewvYXML2FzC5he3yaPUnwr7Wem0HeMR1afoM9ub9n+V//EABgRAQEAAwAAAAAAAAAAAAAAABEAIECQ/9oACAEDAQE/Ac2Z0XnN/8QAHBEAAQQDAQAAAAAAAAAAAAAAAQAQEWAgQEGQ/9oACAECAQE/AcoUKPDosKAa6H5uf//EAEIQAAECAgUGCwQJBAMAAAAAAAABMQIRAxAhMrIEBRKCg6EgIjA0QVBRgZGi0RMjYWIkMzVCY3FykqMVQJOxUlNz/9oACAEBAAY/Ah5FkUy9aWlPq4UP+Jf3Fkc+4tM27TESQ43GLm8ZfEur4kpLL8xl8SyHeMviXV8S2FV7y7vLu8sh3n1e8uby5vLu8urL8y4v7i2DeXV8S6viXN5d3jbxhlXvGXxG3l0ur4l3eWoviXN5d3l2XeXN5cXxLq+Iy+Jd3lzeXT4VZQitxcKFLxbsukpOLdl0i6FnAn0k4nrl90p16bJftQ0onrlF3GbdpiJ9MQ9Vqjjjjjl4ccccccfguOOOOOOOOOOOOXi8OOOOOOTStUMo1cKGVaplOqR9w4/Dpu7CnAQzdtP9kNa9VKZRq4UMp1TKdUj7uQkpT6uFOBJTN20xENa9V5SqfLhQX4i/Et5HKNXClTV5v2mIhrXqulyegp9CjSUk0EXoQi+m3fw4fQi+mt+HD6HO57OH0Oc+SH0Oc+SH0Oc+SH0EghtVT3/vFUlDR6K/mLAvdVlGrhQ9rTXOhO0l7Kz8yKmoLifdqzftMRDWvVSFNq4UMp1TKdUiLErhnXAvTVT6uFCjSHoqjSJjvM37TEQ1r1UhS6uFDKtUynVIuBNHESlvCyitIohDKNXChL7pbYvYaFHdqzftMRDWvVUJTxdmjhQj+Yj+YVeBOtaqdf04U4Ob9piIeqra0IqanoNKkiddJTm3ni9Tm3ni9Tm3ni9Tm3ni9Tm3ni9Tm3ni9ararFqp9XCldlWbtpiETs/sWG4Df28+jkJK/A0IDKIFfi4UGGPgaEDmbURveYjiloww1owwwwwwwwww1TVWIMMMWIMMMMMMMMMMMMMMMMMWoMMfDkftO3/wU42dEi2Cn2gn+GI+1ZJ2ewUkmcv4FKVafLvZUlk4fZKsrCS51SLYKSTOMP8AgUl/Vf4FPtL+BTN6UNJ7WD3ko5Snb1t8CyGfxLpZ4VZRq4UOLaXN5xfCrNu0xVT6rmvI2V2OIrKU6fpwpXY5MzbtMVdnVNvK2CmUauFOApmzaYuu8oT9OFODmyay+txF/cXhxxxxxxxxxxx6nqccccccccccccccccccccccvF4vF4vl/cfWbuRSGFzjxaKixRQ8TtqynVwpV7uGztFWi4y9hoUiaKmatri63ipFfoqWGJJoRUaMhlOrhQRCFIUlV7f71GZs0vxMQwwww1bcu1bckw1TDDDVMMNyCoJO6ThUnEpFH2mUauFDSEhjWSpUlCi2xGbdpiH634sQscazUmU3dhQRCcLklpDtkZq2uLqdxxxxxxx+QnWkPaTKfuwpWqiqZrmn/biLoxdLowwwxdLowwwwwwwwwwwwwwwwwwwwwwwxdGGGLoxdLoxdLpd5DSROAhlKdmjhSu2rNm0xdbfJ/onCWpVJGKeKH5Z/tQseuSGbJ/iYq3repxx+A49Tjjjj1PwX4Ljj8B6nHqfklFqUQp9XCnBzVtcXW3//xAAqEAACAgEEAQIGAwEBAAAAAAAAAREhMRBBUWHwcYEgMJGhwfFQ0eGxQP/aAAgBAQABPyGAkUuEn2+wYcKPCBTUrkkYLF+47T7C8L4oLYkMRePYetZQST+kaAuuL1DfnPtzBpNpCQlg4kYpfYb0XvO06mYgOy0NNPKGSXcjAmiaZkEkodMPeaRzMo2kLZ9xG22/UkJhJRT9z3jBtBtvrGt3uE9w3lBMZL0bIMfUDKs9Q2xf3GSPvOk95LdvUT5XuLaY1tJ47Y2De4PmD9hHDSPeKZf9o3LJtc6APufUhspzwIFMvB2AyZ6jcobLsbiVVso3JZL5E3Ks2CWwhWVwqRUYvcHTHOoIbg5baQdyV7iVyv8AqLLv8Am/YTRs0Lcn7HmR4kedHmQlf4G7/Jd/U8aF+ueNHjR4EV5Ow7jkek8yGxf1POhfqaLyo8yHD/QWmnH9p40JH+DyI5vtPGjxo86POjj+0aGwZQnJPhLTKsHyMC+01Asj0TGiFlsUA7UDyvglM4FLkjIcpFfHiPS9pF/EtisUKsjVc6RcbmWMOwg/S/41WhpNLMRprBdl7O3gbNLMBprBEvsq7zQgptHh3/FtpUzgYg32nkO8b5D2d73O5/Q7n9BJ7CbdEToglgaNaaTWBUDishDQ2RyeN0HpJS2OY/iXzsJzuVPB/kUueV2Yrw94P6MfeDlwrrWKKKYRrnsz8ZKBz7RJjKJTCaGEjMAkiKG8nASUeZ0GCTknv/EN6ieDoMgT0SSucjAk+iv+EjgOkoSjbM7T6D04VTY1KHg4+jdOmbGiEltI5/hDYkQc/wAR8QsC6QJuzoVL6hiWKuF/wvTFDFOhB+cLvyXcbUMZ7ImDAEqzfIuNhTdEbfJdJ5I+LYMfsOP4kSiOSXBLQiL6Fn2H3cZ9hDnL1wQrRUqGPix1E2MaIctkwUA4kLoeF0N6MiW5HpnFMh8MjSOiHwyHwyOiCCHwz6kdMggh8MgjpkdMjpkEdMjo9mQ+GR0yCOmQQQQR0yOmQR0yHwyHwyHwx6NCRpGjFqeYULD4XxuOOOOGWJGvGwnVsTakZHDeiQmfoonI6gYD2Jst/wAQjdAmbkuMGw0pG+BtFQS4GeyROLgmpY4uKGvMEujHYo7glJbCXZCLVoXwkJHsj0oknERPwjPY5Qi8wkKR6UcSsrghrWETnYZiB9EO6kS4slwNgTZLcDeqr0MuhM5Y1TD5CkULpm4SY/dQMnuN3wV8YARl4Fm7Dm1UciF5Nz4EpZ+kM5wyaaiVg12DI9oLcEiQyBx2hPbtqhSMdGGCTUUJoklYRoJINSC26EVYEePvMIvYfeFIXNr7xxchx1cqLnrIp5CXcWcBxVYThTbwaDFWTAhUt/kbQ7f6iuPYH8i5Py5MGN8NkeCXjuI2+lQ7p2VJFiV/kTll47mBUnlJ/wCSsSfV/JBdcji7MQg0pIIIIIIIIIIIIIIIIII0gggggggggjSCCCCCCCCCCEQRaSKOV8iyq5H5nCRbm/UVOVrIhiK3tLcELjU5spnchEhPDw0QwYE5/iYNZwl8kybSwJgYonAe+oiXb5BDQxvA9EIe5fz4aLlw2CRPwBZZZZZZZZZZZZZZZZZZZZLJekslkslkskSyRIkS1FxT2RD5CFEeokm0KRyGcPJIAg8iXcUlMZyvJTm/q1p0kknSdE9NvjwPVaM20n4pJJ+JMWjF8ibowNY4rBLOpyOe3QE4UUjGJRPPuHQYH6E8aPCtD4VoPIjxL4kkl36Ds1AnUAegE/oPAidVCf0/CU140eNHjR5keNHiR4keBHgRP6PlGRlF7D4RP5lYiSUHtUanAslEGjnaZH2AsOWG4med0/8AJHxx/wCKCPkMLS1wYxVJqwzK6fjTz1fFzkgmymkvuSyI0xX6BxB/vj2Pv0DN1nTougg2IHQYJR0luDrK8HWdR1HSdOk6zq0XQdZ1nWdZ1nWdI+PVLo0XheuS3kbmQir935DiquS77ZFNNpjytihSnDfgf1AH9RY0oiUPDJy2Veg6t8wG1sETeZIXLPWR5PUQIcnYIVbinuNJI8yKe6Pb9TsQ4Di7aPUjEjyj2DVboto4j5wX4HSWyKzgudiJA9Y+5gLXQN0aPQIGvkWYOTIph6RJygaqWWKJfMsTWQhAweIEwJ9gyvxAlydzOxnYyXJLJZLJZLL+C9bLLLLLLLLJZLJZL5JZLklydx3Hcdx2vRNu47Q2bjvHaOwdj5MlIJYzjwVhIUWanIgpZBjmdiAwZvv8BftF9feL9of7RwfeLbPLpPiZBNmdIQ+U7phzGIhKDkLlnSFAOEIhwFXkJVkvTV4dPbDAtJTXBuvRbhIj52L9kf7g/wBo3S/2BwZfUa/9fIiKBJrwJKmZEzmxXsgJKVkbBFjr4CctxPPwHg9BHRC0QRqjojSCEQQiFwQiBrRCIRCIUkEIgjRFCoQRBAlRCEiDOEEL1GkQQGkQn8i9OQhaSRmpLyRosnZilk8HIJIoagU8kE8jPK+h2i5yZDsHziN3a5IzsKMnYWjYHYW18ASVhZp0Hadp3j5RkUeTuO87vgkke5yOhJ30k24h8w7BTDuO35G4eIRtuY+sMK1Ge4bcsynidP5b/9oADAMBAAIAAwAAABCn7LNZj79uwspmxgOqXLTISDJPDIQEwMgETEiAxID7hICETwzMzMzIBEzMzMyK6ASI+IcMzMzMzMzMzMzMz3jMxM7JDMzMzMzMzMzMzM68hKDAz+zMzMzMzMzMzMzGA4DEiMuEzMzMzMzMzMzMgrCEeMtPfMzMzMzMzMzMzI66gE5Ey4wAAEAAAEAAAAAE8ABCcAfozAhELE7EaIzEhPzMQESkRAgBSGCIQMgIyAVMzHMbf0SAAATMxMCIzMwMzMxEvIOEjIyMzMzExMQESEzMRgDOTEDEQEQACAzAzI5MzMxYhMTAAOTMTARugEw4zMyAwIzMTAgExAxESEgESEzMyE/MzMyMwADMBMzMzMhMzISE4KuMBIwECMAIgAJETMwGONLDhL72jKsLfsC8YMzMwYxg6uzsQMzMznIi76tszAfEkEO2c/74+/s3qw14TMwCJCxEZ6L3SjT8h4tzz8zMsEhECgDIhMCAAg9GvANszES9lIjAxIzIjMzEwERATMz/xAAhEQACAQQDAAMBAAAAAAAAAAABEQAwMUBBECAhUFFgcP/aAAgBAwEBPxDqIzqNGjRmMxqOPj2Mz09XHGYCjd4fqjrHMsKGsc6o6xzROOaOsfUVDWO3ePm8t01j6o6x9CjrGahpEuiqhD7W4BXF/wAsP4MfIODmvHUXCoguuOypH2AdRyuh6n4N0TbjcF8z/8QAIREAAgEEAwADAQAAAAAAAAAAAREAECAhQDAxQVBRYWD/2gAIAQIBAT8QgzmwxPYkSIRCIRcqiEIHkFErE8VWdcQ5zU0G0PYT9cHuuOEa4sWHb7OtYQ9wl5oRgVNPdcQ4r2FUBw4gOd8z3XFgiqZ7rjhGM635cc0Ifk/J18+A9c3mg/oAvdV8AD6nYqgPdGMCrKUcccccdrjjjjjMZjMcZjMZjMdop3AWN8YhLzwA2DX62u2+/8QAKhABAAICAQQBAwUAAwEAAAAAAQARITFBUWFxkYEQobEwwdHh8SBAUPD/2gAIAQEAAT8Q5LvRBVHti8h5zJZCnN/mYixaLLogzSB8n1CynyQlT6E/yToa0XMiGjSFqDV+0++KYD2vZzbMFAnulZEjlEqOEBV6gBSeFXq5S/JKVKlDndZPMBWxcpCVaw6kHSsyMY5jvNd+5QWPkHUtBPkIadtu/cZ8TbWL29DKpjhujBFIF3/YjYQ0tNRSlRzugwWDVqz5loXWrRiALVq1qdGqWk9QftbBSz8Y4J7DEjDfV7GoAWT5wBMQ2wKwzxZiFkpeGSf29EAGXWFRpUXISwUxbRlyrIB0WhidUCFMtXcLI6TawZCr4bQtLHVeI/g7UEVkZYOJeyXPRG46EOsDxmENaKy3ZEHb7nce5uTfWCBwgthPWaqbsAPaNggXLuXuHiDpdHqbJcEq09IAXV2JQKDnGJsBQdvELwrsmjHBiB4dkMgsRq10qCOJrKKd73QSx+9Dm+9LCmvylxWT3RItUapRdP5I/wCxAa+5CtHB7pal4ndLq1Di0Lw3vszTenZiQ0z4Ze5X4ZnsR8MW2/aFAoHFpozvygm7L1tMda+GFMKwCT1z8pQzn4Ys5+1gBVJ5Ro/mg2Mutoqfzy5u35RfO/lM1/mn/wBVP/ioMVl8oFxfV1loHSX2QsxrohUzdSgCu58kQ0Z6/UK3/wDwEbt/jPH6mvzF4w0R+tF8XB6WniUSNxhBoXpFVyYSDEuAhqP2wVTZAyMkV7WIiWs4PcIWu4JT1lmzt/0a+lf9TUt+grAmxLCxorONHA/cCKur/DHQcZOuEDG5TTniaPMe03WIrW1xEUEgG5UwBt8Kg09CFNbXEcBSwvBh9oMaw6g6wN/md5SyPwPx/wCPXlCqvbOavHMbQLOnxAebFgTLveOm6mcTDTdaj0lypMP7iYcexKDLfSKwYox8RbKoS3HKNUKY9CuYBfSeksz0hNgrtHTWescRoOGXcnfDXLcxsOEsSi+8/A/H/j1RWyU6sc1Kjp8RILiHXp25VSrlOWZ2uznge2b5hSaDQN3FHCbsJlgplmeygKcYnFQGs/aZcczH4iOEVlVYl4U0kF2l4rPAj+0HJFpHGrZmvmUi5Y2wxXhIbx2m/SBBTIwa8b3YNRX8H4/8eihyfzA5VTzUtdbR20Xx2gGwvMTUvSeyGslJr6lBhRpuKt2GZn/nFaqLOYywoG3DOWtzmc9YXH4D4lQDlSW2ruErDSg4tmeuIOotsWAE6D3AnAJqNO6v8wAuomVdHififj/x6DQ7OuCWFl3W5aLycVxLY93FQpxf5CE1YcftDTmrT4S1vczqm43XyfmKbqIj2lf3U5/hPDV7n5hyPGe6zLtt3AFeCftdJZa6d0X71KEtzLGeebcd4AtWExtVVmCZMjzMSVUz+H/x7hYqbbRisk8x3XFXj4lIlsVy02eXwmMx6v4QyQMHPQqXjZXmW1s9xO031lY2atgD3tcQVl8R2YJrpCCYtlRsGfiJqHBKEvZE9tqNQo6u1qIJTGhZmDFnqZC8OI11gpn+BLdH0yno+mW6vU/wGf4DLdXqW6PqW6Ppn+Aynp6Mt/Qy3R9Mt0fU/wACW6PqW/oZb+hlv6GW6PqW/olur1Kf6J/gMt/Qy3R9Mt/Qy3R9S3R9S3R9S3R9S39Et/Qy3R9Mt/RP8Cf4E/wJViu0B0jnve5cl1f4hHelXGAQwGDidrF2sXaxdrF2sQKIMRG7N8QhitMiPaDyloqXR5LWElK6oJwXuj39FywGH7R0DgKsLLTBItc157yyyswSy7msCu5G1g8Y9tT0RGD0gdkF8Ey/sCA4B8E1gdsEckWexEGgXsRDNehL1ss9pdgL4IkNZaxKQIXcLMXxK6iu0ErMdpbZR4JhCPxGuj4IsQ0OtEQBhdamYUjtMTB6IkyIeJWFPZUqO7pUQtT4JasYawR10Z7RzQD2gaFB2JUgj4TA4eKIpao7EUoD1Bhso9oxCBcw7FgLxEETAbuKPePX6HeXLhrxZziXRaORqc3OcmZnAMjzkh6t67gxFXzL67swvBfGAKMYLWxcJbL1lu7fMcVYneGz5rg+r5iUqnzKkBcnzKG1S7yzCdcVliFp1zGwrpbY1FfcxtKw8yvDLzFFj7lyixPOWWwz92U7K7yzZld5iin7mUlk5ywAJ7ZYS/lmWge+WFzxdbF5zKqsHm5lj3yhDHnLHEC4pU90qn2Ikgt8wd8+2YCq7WYodvmLn5MwB3N5gkfyliHoLhUK++WmhfGYNa3snODb9AsKxo4YNPXS1vUXsM7NUYfvBzfOU6+SvL8sL+eQuomIWAcauoe6TAj52iHoVwnzhEu9hHyYTWM7D7qO7MUpXmKVO9XzKkuYpBsiZSUiJSAjNT67AZSUgJSpXzKSrgPopEMoynSUuUlJSUSkpcp0lZTpKdIDpKdJSIhzEreIu3yuSXVs0U9P0LSqvplYwPD9ox5ZjUaQm3P3lKsDm5W9Bkog0t7ZqGTaeeiPFVvfHzDLZoTUGGeI3P8A7QvKV9XcP+TCV9X9Cr+oLETf0Prv6JKiVKlVAWKgLekQFoa7wC5y/oOxhqaUZQ94CqrJZLUJSg44HMa/AgcYYQ1UMiTsl+9dI2ztk0uDIcnSMPft0lo5DKW7YNe/Ut9Z4TCVjGrm5cfOXFxfdL7vUuLj5S+6XDUuV0uZYgrVy6cy+6KOs8kYW/8AACr6Doz6lf8Ak7s77NuftDAZjIfSaCqJmtaOv6FuXTCgVFA1d7jZZcYlaRiOmgEyi1B89RdIpi1vHtBObKYmWcCR2NFkKcx9pZzKIiEKWYqdWKiiaIYcS76SyiLuwimBMaxMCNFS88QReLIIGo1eAllkrMVdJjBiHQpipsqDhwRc4zFycEHHEyNkfJFxmo4yBntHGKIviU6EcOIVNEXDqKYaLmM4Lil4Al3wLAtqoFbu4i6cwKGj9BH2A4hWsRsmRKRFpl9TlxDw0E5JwTlaYOpLtjnmPq6m1wfkfi0U4TLwOMu8d96h10F+/qYXOCrcg/xzHV/THHT9S7b9Rfl6jtu/E7g+GY978MwOXqFu1eI8a9M2ZemHIvU4KPhm3P0x6/2hh/emMy9MsdvTGmremddHylGbPxOOweJ3XqPC/TKeXtHrI7yOC8d79QBTygtMyQirX5wDaz5QJl35/oZi5YA62gNwTm0VU+8eEDlDfwRQRyv8QLvBHj7QZoOxCr8zBwF6eWViA9a/kf8ARtqVKlMtEr/iZlpT/wBETog7L/QsomlghlahrYxRXgh8E2uOvm37x2KYrKZMFiMTJhBrmFKDmUi8MhTQIa4Xd1gMA15yw3I+UprA/wCyEa/KPJCTi/yzNwfMf98crlO3uUV1xXYlWIWAY+dxKv3TgUfMeq9zfSTjM5efeGpfm4df4uFP5XDTd73C0+241tfdNxazu5nLc+YHyTzCr8rj1fm4hzzzcQf5w52dMwCGPzAnP3TvvbEAdni2NW3uZQ16wX5Xi4Jy9zSpfMNWR5lOnxzMkd+7H6FqZCmOLiDxqB1y4TFaRd3AVpdfFIFk1z8TIowtqElHRfMYWCdbgaVYu4YSmZIE5A/aEMVzBigHEr0e5Y4D8wAWjOpwKX5mOwY3mFGuZS2DynCF+ZUNgeYFSC0zMB5IUF+DSUas8wNk9z9xEG1sO5Mk2B5gxaHzHuXyS+wVrMCTJ7lGgS+cygaY5uFQIPmcV4d4AgAd4ZiFd4lNJXmAFsHzMl2J5ggqleZ00s7wUaDUVQEp7xKWweIXtUuOhRfGYM1YxzoA8wQKpR3gihZ4zN0KPma0RHn9CplS1WO0V8vKU+/jceDGrWt4liGzmLbUysYbrYqHWpjmqpWH8wQ23NutQDpMaxV2vcU/mi2/dAq4O87iAaWKcs1ZYptfc7jL6mW9WW9WW9WX1Mt6sb5uX1Mu225fUy+plrll9TL6mX1MvqZ3H3LOWUcvuY6tmdxhTVvc7qZ94HzmALTjvKG8xKeUpLwT4jvAM/QALQfMCVM36NIYMvPxKxixL1EHKsunpMcNaIzg1LQCxNh2De0UaRgjdjnzLFalM1UKIKV7o2rfaXM4eUC24eUbsvtLVbO8B/lZwuPllnIetoXFffBByeYkNYzZzeMxXoeZd0DWYBptUGvSQwGHSZtA9b3L9WfOoKNxhhCqaZhg0BxPAo1y+1wBeXmUlLj3gFV71mKvCtZhBefmVBgPFxWk07xAPuhk3X3jx0fMTC5xrPlmI5bHkTYv4tL4DR7oFMvaImSnuwQFr8oABd1tEC17foZtDhftBRF9cFiL0qEVX+IJWKGZYqz7jY4PzjI+acOjiOYMUgacEgAYiLxARtjNq5S7CVsxmZYoqBtxEOm4DQLlbyHeUBiJrjxMVJmGWqCAGi4k/dOSoO8QKRC5W8ESvU0NFTFTHEAlFMDUsWyAL1CmaPU6usSvBfWEYZqJAsuJChK0gZZTgCywweYLmjEzGgr7yl4LeZXQhGdiojBjGoWWA9o4uguOImuf0G7ne/w5uV1B0XdxxCy3ZBZCiYAAxD+jZ0hf0A2OJZdv5lMr8Qo/qdpYCrxgkKCBMhuIFAIPoyrQZoogTVW9S04RPhBZGvEWGjGxRxuUlO/MKn7Jb3JS23I1KQ8S9wAJyoPiKHN8Mvp7Uwra5EQoeo8tXxADJuLNhPiGSvPDFF0rxKC6niJ9s6xb7SvIfvM9gO1RHuYKOFwvFHvBGqOqCgFviB4cIKuuNQ9v4QrsDvUHvHtiZAD1xFnBzGwK0foGSdVEtkzxEq2+YzYrmE0/RgC6ZNSty9xlq6eYTUbn2cvH0Po/Uj9ePpxD68x0TmcQnEZ0+nP0NfV19Hj6df0D6G/0P//Z\",\njt.Images.urls.controllers=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wgARCAFmAJIDAREAAhEBAxEB/8QAGwAAAQUBAQAAAAAAAAAAAAAAAAIDBAUGAQf/xAAaAQEBAQEBAQEAAAAAAAAAAAAAAQIDBAUG/9oADAMBAAIQAxAAAAHeAAAAEIy+jpqsngAAAAAAAAAwGlBrIaHG97IAAAAAAAAAeYN5TfNC7bn09HvMAAAAAAAAA8unTCb5qX0Tn09G1yAAAAAAAAAPL3TB65qX0rnv0DXMAAAAAAAAA8tdMNvC49I579A1zAAAAAOFDajPR7GovXj0w+emR6c1xt8b0+ualSiy/iQAAUi+ca3uflfdmZxjvd4q31/PgY60l5KNDNSN80SoOFzl6ZHQAyduD3q68P2l89Ufs+VLvmo9arrjq6LGp2ssbiJED8vq+T4AYesv0y009y25Mw+sq5YEhbcRaZj2NN9ss2Il9WwngB57pR6jvLUKxvZlK9qNIkdJ1SktvPuJ6cNS+l4XoAeY6V1k3z7z/oxIpsYqDk2qSaTk7m3POwe+dlzuwASeSbcykct1Po5rEDA2Nj0dED5pPJ1qvZy0WLvo6RDynoQzZeXrn/XzdCEnY5SSOcibi2fPTPoxbYvo8LKo8y6HrF8dMaVfTK07KoaGRoSup8u4Pow9qS830/J0zphekfpoTy08RuuGc2GIpuOrfefcPtl7eQRL61hIMhWW3FUsbI+U3luZZMwg218FRO+ZFiYbI8vq+FkYXSg3HxRxOiRkM1umqkQuxCtwggL6jzXxjqwO1vY5ALpCJohSsogFQNjJDzr17EuCEeMNxNOHU4B1eycCC3ihw5Grl9LvKYB521hdkomFCJeL1QJO2Ccrlrkvpuc69HAGjHrDoTh2VYo6AkTYkFnxp0lgAAcAAA6AAcAAOgAAAANENI9QYjHSxJZMV8AAAA4VVlFZWjaZ2WOrhwZLey2j0OaeAAA5LA5ds16fJBXsZWWRUoKBJV5ST0aa0IAADPLvmPnfXY+z+drVJc6Tq6nFDhwgZaqXfqoAAa59ct8z7rX2vzNWrEtUSQRK9pMAwSpfUpZAAAzjplvl/fa+z+ZZqplqSXXDkcA6RhiX1qWzAAGMdfO/l/pLX7H5R+yjM/K/T4CTgwRpYx6jLqAABEvn3H2zvT86QUi52IayEeoGIYWBEg9DNyqgACMZfWOlOVi0ksWGwEiRseNwelqsAA4ZPWKQjmdmoURiOodFgcTYnqyvAAAZTWaBM7KwtXEZeAdOolZaac9YV8AACguc1qZ2XP5sYQvQOHSQllVtHq6ygAAKuzJazUS1cU8sVUnRxJBIp8so9VWaAAAwmL1mnKxa6WPDYgCcSBJYnqazgAAOGM1misiY1FivIizItMHaus2l65ar1NZwAAAUFmN1nnPVTDy2xI5XW4qco+mB9Oe2epLMAAACKmD1ljOpGayVaS8Wy52xjGd5M3EnqKyQAAA4Ym5z9TMajpGBVHLG7K5b+PSVkAAAAFQnnepRypOHDkJpULrcxu1dAAAAEHmlmXEHDkcrsOFsb9dCdAAAAArjEJXiR8krYFmWpOHAAAAAABI0JOixQo6AAB//xAAuEAABBAECBAUEAwEBAQAAAAABAAIDBBEFEhATICEUFSIxMgYjMDQkMzVBQEL/2gAIAQEAAQUC67NhldkmrSbodWOY5GyN/PrLs3TuXdaJKfFfn+oTi2LkwDrMj19P/s/n+o/2kPfQP2fz/Uf7SHvoI+7+f6h/aTfloH9v4p9TiiezUw9OvELzZi81YtXmFh6Hy0y0KzhrEa84jXnMaZrELjDMyYdGry8qo0+uICMPkyNV2xWA8qz8E35xd0UeOkyllzo+oD9jBUOobRJqbcEy2JWVzypT2Q+VJvMkcxzXLHCsdtqI5bx+oXeoJwwmRYBnxJ/9S8P+19qZI6JNdDJG4OaSh2kqO3R8dd721C1sj55S95O1rveTj7qB5TiQWFtiIdxJ8dKdmtx1J3Mvu7KzzKlKEHDR9z4p7OYDE/JjcOAGAqz+VPcZI2Z/toT8wcCcCQ5s7tsmq7XSt92epMcCXwSxkzzL78i2MgbECmnc9rftWHxip/zQnduFt22s31OmCnIsUycJ6+3ONtmJeLmC/lSrlMjTnunc9waIPU285pmWiuxYb8VqZxTiHpIyqshY61CIJfVAdsc622Y14qcIvtSIwhqMvZje9Rnh4txllWmu23o/itcdtpxj0BSR5EMwazklkb9Pjka+jqEYIuNW249eFKa3JjrtoPe8zy7ccGO224fivqJ32WDDccHxh6zIxOsCRsk/KUz5vD3GyxsnirCOW3vjLHyHbt4FOOJKLt0S+ov7G9x/zPEtYsBqPM2vY4oRNQDR0FTntpZ/jr6hhLoq82wiyCvENKFgLxDCjM1c1paJG5MjVzGBcxq5oRlbgyJ0naNrrE1JnLYrkfNrTxbZNqwsLCwVhYWFjhhY46JF64Bx12mWucsrcVlZRd1ZRUceTplblRMGG8JGNkZPosbneSxrySJeSRrySNeSxLyaNeTRryaJHRYl5LEvJIl5JGq+lxQmKPH/AK3Pa1OtxBPvsYH6vGENaYm6yCm6lC5NuRqOVkn4ZrYaZLkrkXuzI4Qie04uEUzl4XKNeQAOkhUNgObWsGvLG7c3qlnbtn+RTcBliRzpIoRGOPupYjEWSejS5S6Hpl+EvvY+ZVztXgG5/UwbX6NI5D26JPjMrCH9l4/yq/8AX1H+6g4i3Ccs6JfhJ7Sd2QR5muJhxJxzxB9cbj4mk7MfROcRT3HAj1wD0m53LwFG/PS96c4AV3+rSH7q/Q4ZF+lJug/pDdzZRgSDacpspAEwRmCdISt4Alk3KDsNEl3NHt0SxhzQMKN/aVwhksx7HuYndlzXLnORk7+4I9QOB9PlN+PQU7tY5mySZweJjJEhYyJDk8Q449k3u7SDi7F8Om9hli+zcOanvUm3pzwrty7Sf34vh06gxTe1qDKeSET1MYmDC0j/AEIPj03o+ZGRljjhTNa9SQYRaVgrBQjTQGoILSP9Cv8AHpmbujkGyWYYc8J6PDPCOCV4FawnRzRrSP8ARre3VqDQyS87bH5c/EkNeFONREwqu+SZ0lazEylDatOsUbUUb3F+kaKP5tb26tSZ2sN3wWsT1vDySCDS55rEegHl06L9PfG3vWhEMN+zHDWA26Jov7Nf49VhpdE8bZanvSvvpae/V7Tk+3YcKDRcteiLUn6tBJNMC6a8NrNF/ah+PXfi2yPJD5YmWHeHiaj4AIeCW+sxeMKdbdh8petDCh+PXqEe6K07lIzrnrnLmuW95XrK2EoMwdHj2tj+PW4ZGqxGGQ7F6FkLct63OWyQqrSc51KHY0e34LdZthkujYcdLkQ0t6GlFM0opumNUdBoUdcBNaG/jIyuWFymrlBbAsDr/8QALBEAAQMCBQMDAwUAAAAAAAAAAQACERAwAyAhMUAEEjITIlAUM3EjQUJgYf/aAAgBAwEBPwH439lChPGnAG1X7cAeNAn7DgfxoE+3CGC4o4DlFIgUanC0FhjudCbhgN0TcPVdYxoE/wC0cdBQJ1oJru10rDxwRujjBq6nF9Q6ZAiotFAkL3HdTC3yFTCgKLICNneztaanDOE60ET7bBGloBO00sNKdZG1qQi2NcwCA7NXImaixKmVDV2I4agBF2inILUqSpJzjhQgMhUZIUKKQoyu0GQI2TSUKEzllTSVKlSpUqayp505Jtyp4AE6BP6d7G93C6fzXU/aPCwfJYv2j+OFheScP0T+Ed+DgCXhODPSTtzwQYMr653bC31+ZPDPDPw5zxSLRzC+MgpNw/1r/8QAKhEAAQMDBAECBgMAAAAAAAAAAQACEQMQIBIhMDFAEzIEIjNBQlBRYHH/2gAIAQIBAT8B4NK0+CLnwBed/AHdx34A7uPAHdxxwiQF6gUSoQ7uFChQozOwTnEu3TnyvhahOxsO7sOJxCiU6ih8OqbBTG6NT5ojAu09IVB98DiEDZz/AMQtGr3LrAJ9Nru1L2nfpNcCLHEWquLRt2mt+/B3sjNJ23VjiLN01H6sDk9sthUXCNM5v3Gy+HBE7cQVEH1DtY5NGh+54nGBKoB25NjlVpj3DtU3yN+GodZ9OEG6dhY3GD2EmQm1d9BUYkgJzjVEMTGQLm4xLQUKRaZBTXP/ACQr/MRCo1/UJEIGqTum0fmkoADrA3bwFoXXXECp5pROAU4SptKm03k4jlHBKlTnKlT58c8KMYUXOZMJtZpMeFV9qo/U8Kp0qX1EPBqe1N2cP9Q8Gp7UGy5N68L0BM/uh4Y8MfpxebuOncoVAU5wCFT+UOEWOFYSoQ3QklDjODyQF+K0EbhBDiCOEKFH9T//xAA3EAABAgMEBwUHBQEBAAAAAAABAAIDESEQEjFBEyAiMlFhcTAzcoGRBCNAQmKhsRRSgsHRNHP/2gAIAQEABj8C15vPkvdtAbzQEVimwz+ALVg5VVwEltfgHkEg0/ClQ9VkOib4fgH9B+LAmdPgInT+rAm9PgIvl+LAh2d0C/0WxBe7oq+zxF3Z9VuH1T4kpTP9WBXi0nou6ctw+q7s+qq0hThuB1TLNQ2/vIBKDW0VUwskCW4WGfGxvXWDayOq0IICIFstM1fLSTwCMQxIbZfKTVGwK7fY3m5Gl8D5m4akM89VjbREisdop5I/pqNwmcVxdmUbAjeR0Zm05KQD9PPLBSe0tdzsYeBQPHUAs95PRjGSMKE52inSakMTRCG3qdXFB7KFF73vMcYWwvDqO5UWE5oQ3Bu3tc0eark1EnNAsktwqosAzXkmu4GdVpXMAbErTCzoZWkqIeaZewnOihmHEL2lvzFHkj+4/haOJTgVOFMjkpELdKm8zdwRe5OOSv5zUNpiPe/hOgse3nbEPJE2MMKFIw8TJXwhEh4r9rua2SS1S0LD5Kjbo5K9GcHFXWUatGzzKawVN7BQw1ly626etjghY/nbopyY6hRbfa9h4KlYZU2uDSqXi1dyz0VA5o5KcZ4PJXYQkua/UzaXzkAnRH4mzqLeqFk24p7HsBnxCDnXXQzwV6DEuv4Eql+IPpqtqA70VGxAFOM8INgtxpNB8e6+dZBEgSB4KQshdbWN4lAYr/bOBUjgmNLGNIOLMZJugjxhPJxTHiIx4cbuKaDGbXJhTXNdEdEzvYJkOHChtDazaKq88qlrTwTTxFkPoqGzKi6qRksp8lQXvEgAWgTnIKbisSVQV1QoXhsDxkv9U5NVbi+RfIjK4totXyqU2rJZTWIWKxCyTWBMaMhKx7eSKxsxsxsxWKxWNuNhdnqaRg2e25oT3jqFrhMKcyt5y3nLect5yxcsXLFyxcsXLFy3nreepyJPNV+LqVvAqbhJvFbDC8clVjh1XdPkqEXuC2jdWwZ9jdCIW85VrEOAUt9/7Ruqd64OAVXu9VsRXeqk5v8AJuKkdpvH5k0zm00op68uNLXRD8uHMqQ7x9enJc+OpVaSF5hXhu/2hex1im+O2Gye0HaXyT4nE672ZGoW0c5axX8kOiaOawkLl1O8Wv5IidMdYp/JMP0qeQT5Ekh868FLI113v5XUwN80NVyeLoUPog1OiNyo7ohwNWlSdvat1uP4UsgokTkm6xLZSmmclE4nBNe2o7tye3EY+S5fdYi79WK3XHotx46hbwu/TiqUH3UhgpJw4U1intFjr3dRPsUC2rXNugrhI3VOhrKqxl0VXE9VkF5qlh13TTmnjNEHBbBm38Lb4zR9dSQsCDcpIaw5q83eHZTXlr30Cr8JV7H+PYOHCyoqtlYWYap8OuQrs8RqY2Y2bEJ7ugXcuHUKcRkm8UfB2FMcUHD5qJpf7Qxt4TkSvfRHv/8AMrZEbzUwHq5Cgwz5K8YMJw+kKUF5hN5GQReI7nBuM3IucSfeo+DsJhtSnNzZVQfaMmtEM9VOFBe8cWhNYWFs8yo2ldJ7SQwcUB7UWC+KFqmfRRZCU4k1EBdMvbdlmi046WaPh7BwGK+xUf2Z8pGb2DmokFoGm0mfBVDBLMKsZ85zxVz232h4YBMEuzTYf6t+hFb15OgOLtFu3mp4ZfiywzKhsNNick7p2Lg0UxmocZm+wrSworGz3r5zXvYzT4Sq/qfJU06mxjnH6wv+f2cfxWyGMPFq2nFx5qIefY3q7NVMChW6t1bqwtqVVHn2RBvFpWVuC3XKkvNV+ynUjmgOyIKosAqhYlYqo+yw+J//xAApEAEAAgICAQMEAgIDAAAAAAABABEhMUFRYRAgcYGRobEw0UDwweHx/9oACAEBAAE/Iffv045MZoD5TlCawTEo/wADIi0FHmpx0U9S1zvVxGHFref8BqiGRiBNvNaOA/cz4dp/H+DAz8ifkf1/gdB09H50ITy/X+B/uePp+TP2v1/EtFupdF2tqf8AIAg/6f8A1HPsGk4TGMgixhV3qk5h+7UKUsccoo0/Uh0/yIj/AEoAPJqSih8e1banGXovyhmFqUN8s/CoaCUp05cxDjS66ise3UcPifgIrS1tTLz6GOBl/qGjXtxfuIFNmbiKLWLCbL+RHVJ4DRMkYrE+2X29x3PzIz6HbRDY5TLG9VGGKA1hN97Nq+k6ssZ1ACmJTmUErFOFKt25smo8674juD9yJoZULwVNFdYAjwjAV6F4wWABoX7GdODDf0hmm8oqmlwtED/dnMddRbNmu5u4bl0c0kQW6RU0eoSkcF2dROQpMJDVjc2y2g+y8vgl8LLAqIpnBjAYBWrNE+7bEtvC/pMqlSyx/SbJPpOajm7Zl1jFxS1NdIAgOteUNr49jonNBcbe5VA2jQJ2lRGXYniVo6XFQGjMLcjSdRlJgFmJwp3UKmPqEOF86qUjqcy74GJRoJkg2VeSVWO0MnohPEu+xbMAm9RKCAPao7AwOfiBT+m+ItZTl0zPuDbICt5znORPAQJY7JBtlAEYVzQCbU0Ra6AUq4RmA93HfoZe1SpkZ5lSg2TeU5dfMHOQi7qLcH6k1oe2rnI8Ibqaqk3/ANbQgF06OZx475nPSMWMsd/M27S35j4lVbRBY+lodpZgrFxFX9JommZXjiGwZ42ZlUqwVxUgJPyAmsPy4G+kBqV4vxeY7g2yEsXRTMj5hCnXWhMNlSpdPE/MV+innw3IqgrGvpFvxniN/kO5yZDdGobqFhTgSLZDVJHCyME2wXJl+B3YMYqkwlpd3XlzKmqFkzUd8zzUJ4cX0X07fllOYriZTadSql0RruDe9x8iCvFnMXHI7laAb2TEle4TK7pgGA6S7arMbps16D0i/wCN+vTiXUxOGKZbdEU4X4li6wimvnE0ohu3dYj6L1n7oixtv4jxMKWWs5QYHo2nIQ5nGL0hIF7EIORJg4Uv2y3adxYd37y17lru8t3m12lM27ZatsqMO2BUMO5jX1qTtuokYo1Pgl/EveYnmC1zLfMNzniK9zyuBdXHEMpoI1XyMqj1vREaAx6JV/RP/A9PBiewu4EQfWwciYTYHuo6lHUo6lHUr3UdSjqV/CJiIbj6iEW9hxCb7JnE3Z7hvCdqxDAQu+YkwrpYbYjx/AoFuCKwzV3LGSuKmSUsqll+JnjwdszM/IfZG8Tc9S23YphfC5RiS8l+8cor8g+fEJf0UhmPcoFuodYtoGcRfNwVftX8Mu1eQ9WC1F84SV6IChZ1P/MhKSF2sOp61vd+BOB0nN4j+ZTAiYRf3J7OfRrTzOtB+SGsLGGOw+38adurRffaZdoxrZcmbzxNQ4p6bjv0HMcs1PJBgpTeVHtNnPtiz5EJVY3W3BdkDR5P6QmLR/fLixfRdw/MF4Avqg+ZBpuZD17UYbqYYDZqJQckmOdWxBkXAjEDXxT5g5Vft8TTmcRgTz72kUM8q9sTuWDxHstte2xGAzhaa3cGWA0JB7GU8eWMOVKYC8324/E0TiVr46CLZgPlcKFS3ybemzLOnc1CDpUyHtuAhnsLDvnWJnhqa5OYjEqJAo5aUu1WkFd1P/yAlmB5CVXy4ytG0+WuIZu2avbow1uROH7omWlYh1KbYXAECk1Q6jhfRXmYJgAi0rmYfzFEsCx7wvoCf6Gkz+eZtvUCbMMTz6BKBz+J4Y9Mq0R39eavceVWJp9JMrZyRSrjLvaZiu4BoI8vlFfuuANVPMOI2px92IjyEg9qeJg3KJyhFu2fTDNLz/cfuMNtIK9A/MvCuZugpilfJ6BnmXA3uyUfyGUFiaw5mfy/379yTlW1pQfKp8xtpaLmAQ+Sf17htr06lpP26zxCBfvKv40qWdQZJ4os0+2K+Jk/95P4Aq2MV1Mzbj9JV2LggXIWmyXCfdWmohWNB+hhuSxmVeGYwXePKbGeCtS5w+fZ5jbMq+Khf93MNe9uZGIZjSP3ZTl8H2VLYIr4FISCYotuMuyJIwHQam1F3O9Q/HQ2b7uL/YRuQiFkoS7h+H+/8G5ItKflQwhIZ8S7BNmj6YXkAm0bL6Kiw/LUyejwScYaDPwppjA97Vy9XeH8OVjDIHMZKK7pJ2j7Sjw+0vwPt6Vk8kIgwygrOVwV/AJxhAKXfUyMX4T4Yg0n4lf+qWYrYNO1JHTRTpqCgfw0F5JbcIa6nw0+sq6PrCbv8sTVUDhaChQEEx/GGxF+PWQeIFx7/wD/2gAMAwEAAgADAAAAEAAAApIAAAAAAAB+AAAAAAAAm2AAAAAAANdgAAAAAAAPOAAAAAAAKhwAAABJg8p506AAMY+AvqstABsMXmjF+wAPTIHryRYABRivh/KJAAPvaock3WgBtHWSX0rLAJQphkK8Z4NJYqzZZJ1BoJQV7yVuIIkY8nH4P2BOBXa1cUnaPhkLevdIKAeM/I/wEkYBybWYGEC6AB8bjGNSkAABAJAAIJAAAAJ401wAAAAJk8lB4AAK6vzgA/AABpwCCBJ+AACjQN1PiAABI5KAkuQAADuu6koUAABwzPPbw24AAOqA3/y6AAAV9mIAK4AAJ/OBJR3AAA5GYBB54AAIF+IOyPAAAUzF/wD/AHAAAkFb09n4AAAl52BezAAAB+2f7z8AAADgt0RHAAAAcgEQU8AAAEABZ6YAAAAE7bQAgAAAAEEEkAAH/8QAJBEAAwACAgICAgMBAAAAAAAAAAERITEQIDBBQFFxgWGRobH/2gAIAQMBAT8Q8Ca+E6kWmRqJN/ASpcZEIJPg73wmH4+CMyP8C+AtBm5qvx41RmUv8ElVn9DdOMg4UN4NhWyEINdthK3EmKTaCEm8BpJw/qhZGjFwmLl90hBNUGfbQ+GQ8LI3VBGw6aNMFL3QlNQLY+B2iG/Y9cLim0GxUfcnD2Iexm3KXE4uOE4N3hKZEkg8OC7exqOtL0fIxZndo0PZ1iJ02LIj2Pox/wAFEZnhPiE6UaR6nF6M0elifQtdtEFSpjd34U5QegrWy0wVcNbKNiEs2tcp3pQ5xo9CbG8qEJWjVTTKBv7z0Tw0j0Ytj9gvrh9T3wlcDTRGRmSMjIyMSIQjIyMollj4TjvCJSIiIiCBoQgSEREREHSEuj3DKE2UV4VIThilDNs0O6rKKIWWWWWNmUomWhs/mUvClLwT8TgYpliRUUpskE+73C4Ib4Qi3rvwaCv1E1y/AuzxRb+efXL8C7aTEfbf8FjIR78K7ISYsyuket9mheFrs9SD1qG2zb2xffC4hCEIQYu7ExZF0nkeyUWBZILtoXfYTyTwsXdBCfhYu6Gnzel8bGoJ+FrwpkQpBcpUbISo/p5C0Rk4f1xpGEh+FjGqLylZikPA9jYvCgmLpeHnxsRCcQi6LxTjPwZxDJPmf//EACIRAQACAgICAwEBAQAAAAAAAAEAERAhIDEwQUBRYXGhsf/aAAgBAgEBPxDnUs9RR8IYAOvgPdS4N9xs/giY7Pgnc9zs/AeHudnxjZ3LB2rhVZBrDvGMKrwzTkFsaqRYpgHvqAPXX+wapZqk+53KgNhF3Upx1y940JHV1F+oMVTFoLH3A257ouJBdX9y89OPeUS4NvZB0gKUR2Z0lD9W4Maf9S5GOnEyrgAZBG/aT1U6Y4vApEAr3GAO0sSzrmqG2NAbrUPzCbgJUqEYQmtH0bE9R74BqBogYoNsBqO5frF1LZVSveFFO0Nz1xDoiRV23+zcqpXvIxbn5g0TQQVqx6gTvk7hhRVpEJ0Y/ed8KYe+ru4QOohDntDCzpRLKm463cLxuVcGbeomWiUYu+dUvBFF9y5h/sUtCvyXtVBcXUKjUAEITLZ1Ov1wF5FvLc6iNpACAqWk/eLHvFTNpZLJZBJZLJqWSyWSyWS8CrgmW6gsuL9S0tLlpaLUItisQgq74dpq9SnAR4E7gYFxCVXEa3Ly0sy83gawES8W/mVKwqVKlRK8RaaSosWU4WmyXBzAWyn2GGP1ArilbnfPug0/s+4x7h4Hkbc0L+zbccHP3Hl2RWo6xnRm+Ty7Iof25oMOB4rg5JZTDvJVAGPccXLlxZcWEfAkSomblsvxnUI7jqX4Hn0iS/CR5rCR51CPNTvDuJ4PfMg4eVy4MfAoxUalorgRg8WGtHyWzOpcuaLvUAl9RKp3UFL1g+AhDUNmdTjbatwHAlWlQR8KguVKZUbFT84UGHwjUZcuXL4viHwPlsxcv5f/xAApEAEAAgEEAQMEAwEBAQAAAAABABEhMUFRYXEggZEQMKHBQLHR4fDx/9oACAEBAAE/EPW4NcxMLm4wBq9yEYKeiTvx7Q+Xdrb+BZPSbgf3DTKU3bEAOy7PmGiW7YU2/gFgaCW0fuIoYGoXzmV7uLqL/MwoMq2V3P8AACvxR8JsriXAbyJbDdB5/gFdmDLWNE3PBM/DlRs0fwDdVwDWFUl8Tqaf7jsLsA/aAiAC1dAloENIC1zl+qs34JbglXawgRRaAN+WI1Rr6/5FMAzSUaqOLgYXxCu6wOAdiFJUtSCrzJQ2wLoUWc/ZK6quVgOcRYcaiyemgV2fXXekJsNk6KnMp5uVApxa7xjEYMLw+cwTcF5ZYghOg2nLJmGhkfYw01sxcVp7HvHppE2OImR2z4mQsEbuWIW4A094FNYFZJ7UvhWswbB9C1mVtxpthI2YreqMphkbQ0v7mJxjy2cRdpnWQLhAK28V6PxHWzhBIHtS9LmScANddxBK142nVAkYAqLvuMNrSvQNDIAbb2v7gxzkvUnFiaIctGuLgodAqFt0iWDmLvtmXEKz6e30Km6Q0TNB1fEz+ENrM8kHUijXOOdZT/i9YOTqAg5UPCBl69U36HsK/hILZgMpXlXd0NQiu6Ohpdbwk7Z8YR8gAuq7kxHA0jxEFlVRFG8jMlbJEgVgYOdYhaBR1W9ncZGksw9PK5c2dYwj3GbQZgYQKB0Q/wCei315eAcSiDAo2qxE/jWCKpjL2qHcwHI98HWboqL3cVzgKGviJWlet6iHbWqZw2t5qAo4a8EDVg1TmOXxDYadJaiSKBV/MFZSFrI2YQ/qD9ddtLwFx3Xaw8XOFhAC9pfgSbKrA0G1JEWUwDGDeNF4BcAlrksl842h7RaRGO6jpZU2piW0eyAE3EDQ4HczSFAwRAyzvFQmShGBpW0qwP2y1NGK4qHkv6VvWmveP3Lz2V4LiBAtsmhKzRGwDKsahgghflFKbjWDJy20I4HUCqbaAqEdP9lPylhejmQDZxmlPneUJPRiqOWVqAb3F0c8QppqG120lww0oHLLg3ZpW8bBALTslg6+g4Iyfz+oWO2vXKS7v7CaRMtSSgOGDuE4qLoxCpF5LOxB1JsgRD3rlSUDDw3VbH7bcghvFuW3fsZdklySn09RsWPUuC9id2GrKRdl3xCbx1FTdM8zB9QC9VZd14+mGcJ+D/svaMNq1mrKKp5jHiFjnojSZRYz9RwrUc65om0DYOAp7Epk/GMPiXo0apmMdiqQRe8wX74KUAa56SVivy0bF2jY+0qJ2IAKAKbauBQ1owrGD0Zl6cP0ERzGunH6mhkKVkOpUoLwhiAFFI9zxDjTRZiXtAN2tBbzMBbaw75lIABr0PRtNZGaKG8G7pJAdko9sFA3ju55OHGsIL6sl/8AkAaKw5YguovDGAFM5IbbhVnUyPZmfH0AVWh6QVlzLnGxRixebl6NAFrSCFwTAbRURAGrdfeAoNNLJ7xcNRdN/EUQgRSuVStW8trZkQN6zxCxbtBUVmNlx2CRVfEq3A1V5gZRLC4ICAqM8GP6Ml13iLf3GFuGpwjWKgozH6I6q27lesu2zNdQm0W5mtQFSCoujKBQYltKb2KN7Ru7Gi2LhhSFZb8yyNkasFDClrebmGJujbi4flrFOIFaZuy81TEbF7QLFSC64PpaMWDsP8uXtSSiWuC+Y2rdfcHy21WssalXMqWcmYxs78wzFnbDNy3rLOSTGsXTJfMe+8xPKplmrQHc7GmqGICO7sHj8yhuv1EGLdOb3uacQ7ghYYE1ZvmXFkZlPiBStRFCxOsbdICZPtF2IrmJb/CDurSYSgYhrVDmIVBgVocS1NdX6mGHomncU+l0VQxrfZFm34UB4fBL7P7EMZfyEDP0Ew/oJp38BF9L2JsiPb/Is/11/k03Mdn+QCWbGrT8QyZ2w+rofE6nxOp8TofEpwfWpRxKOCdT4nU+IA0A+w41jZEC2XZw1CjEwDOJ8owAt+v4I+RQ0oYmp/acBBAldf65fhmuURCfaq+w6UDVY+tNGslCViUUzOls3R9oVMVMImg61cKq8pdEhdz0q+01m7GEh1KoB+JS2bKUIycyPcDjH64Hd3nubyBfqZqAzbDwpRRHMsuba2e5UuWjEVdFyugWdoQVkvLsjsHEPAfLZb8zQsIQiaR8ZdVHFoXh0d2JnoBRvFgriHuDC136lt3lDojCNzB0QeHcClMrqCiqLWoEplCxRHQ5hGzaDmK7FmsssbBSQaKgp22QDQcC3K849NRnS2YhM8aZ2gpQEP5TDjQZ013lreMK1s9JUwAi+IaRtZSgh1C+0UsbSjeaxbzcyUqASXk48wLlp23uW0bx6UvKEmGD9YTSzab9o2aATo6EJ5HeOrAuKKuitphrcO6zK6rDHkQGGDeIsAcuMTbZgnVy84MniILVh8Y9IF2LBG1lFto+8qOsL4ixUwc53uJiNLonVIRtAI3bC4gmJ4z+fSNtRupYWTWY1W5ETGsZV9FsHLxC2RVtveVq1l2u7EVXpWrnMMnoI9YkMpLY8QawuobURXDeXF6QBKAbIdyaEWxddOoKUgL4PEY4LpamQ0azN3ksiLw0BEiilOBiJlKVV5oiBrpuwIArr71i0JelWC47HXpqwuoXlJUYYKCvlAo0n568FbwA4czY7rFKLaHC0nmZLhQVBoFUpcDWSwhHcJo0zLKpcutSzVh1NpV5tUgtbNv4jtevSL8UwWpGveKoNq3i4CQZQw3c4kvQ6iTcpOr3HULWDvEqs7XM3I0vWAmW8YrmMpBdrWTuCgbWV5jV9En5iw2VsWnMVs8epDDNFXmMwF2m6IU02HAdmWgw3HMf2dGkp2MqItLXmYBXDUoGyzViqyrLdHuZriDvx+quCwsd8TFJRiTOVa5sTLsxH9Ll/QKoLY6OPUqsN8SqrS78yp9S4QrczeVUHohQv8Zo/wABLb5XmW+Gb1P/AIUWo+CNSo7cwQB3TPNCpnt3zFdSgb8JdX1ImlAbipDuGtpVAQpKenctG0viIFI10WY/6GJbxPeVd2TS1m1JbYgrNBqiS97JTA4XAU0QyHhFkdeo2EFKrvOoRzpNg3RhRlugeoiqWiA/MKuV0lIVLokUGgtW05Uh3fxxDpBXgsYCt4tg7cE1fEVGibKSwHJYuGu9etVytzajuKpRfJGJRUAetJay5pSgcLgjSRILdJXMygA1MZGFRgw2BnxpGBIx0wOJcGB2lk2hwbSBAbOIeoJu1ih6xj+EUL49dadwTsxoBsWTlNpRuxYA5gIz4LYA+9kLTEgYb3esJmrUrOjqYkO/UHALAPUQaAplppEjew171rfmBw8bhcMLZP8ASaWzmIcAkEp49ZtOSFhEbyr4XFwoKYDLM1aLdWy04geWyiV+YNIO6klRdOHSnOaWCy44JSjLo/jAvDKRsrOVAPFQGtswIL4+xmQTcRxB91bYuzBFMohIUYbQ76IGWgeCYZEOo80vuBFzfcaEAd5mrDt/7zKb7An2JVShWqyy+3iBJYrmp3X9pTgX4mQG6QsoB5cI0LA6RSLniyxRLLIrB7lFBqaMXOqPsifZAXaWFWDAuscsuMka/AD/AGYpRLwt0R/UUSU4/aBBg2Wj8QWAaAQgH7Y1Ex66Toge002NEMAND1f/2Q==\",\njt.Images.urls.iconSprites=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAACkCAYAAADGxBfDAAAgAElEQVR42u2deXwURfr/P9U9M5mcJByBmBDuQ0FFIS4KiOARRSUBVBbdQwVPUNdV1P2u+1vXdd1dXdcVWNdddVVE5ZCYcGYQQVfwCojITThCIBAg5D4mc3T9/qhq0jSZZJLMJJPkeb9e8+qkZ7q6qvqoTz311FMAQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQbQRrC1PzgEVF14YD5fLcnanzebBnj2nGOCly0MQBEEQoYmlTc/ep0883M4MAIkezlUAcNdWn3whJuZ+lJcfB3ASJCQIgiAIggTEOVitKrg3AUBvCxPGkBMeb89F1dUrAeQDuB3AUQCcLhVBEARBhA5KMBPnzRgi0ThXNc57AegNoGt9IocnJnahS0cQBEEQHVBAcEBB/z7v8QH90uBDSNRoGtM49yUywgEkArAZj+cD+t2BMOsPfEDStQBISBAEQRBEGxCUIQwOWNC/z0IwZToYm/5gTPTXb5RXvAYgE6bhiAasFFYAsQDUs78d2P9hAP8EY6j0Kh/dHGHXVlc7fwHgU9AwBxFCZGZm+XU/pqensVBIt6nk5GwJ6POWkjJqkPzzqEzfGcz8m88HoLYtyqmfN9DnaWo5CSIkLBAcsKBfn0VSPCgAbK927zY+NSJ8KYRPg2L6/XkfQ96suvWBD+j3awD/1L+MUtQe87t163mD3b4IwM0I8nAMQQQJ/bZX20m6RIiLMYJotwIC/fv8HQq7XYoHAIBdUbCwRw9LP4vlfQC3NvW8+fHxdgBTwA3PGWPoZ7Ph9fjuPQZaLG8CSCUR0enu3UB8QgWjtU0JUrqhTK789Jaf1j4fQ+tMaz/nvK0gHlq7XgkSEM3s8vSLHw4oM8CUc9ItdXvw5+ISHPZ4bAD+C+DCpjysyadOOavKKm6v5fxbs4job7Hg/pioXgDeADAUbRzbgiAh0Uz64vwhRSVI6RIEQbSYAL9YImeDobtxT4XHi98Xl2BeRQUAuCH8Faohhif8JqqoqOjB6uqHnunW9ZM+NmsfyGmfTFEwIyoab5ZV9M71en8F4BEALpBPRIfA3zH/lhJsn4H09LTGfhLnj2BIT0+LADBGPkfGempRui0lJWVUu06fykkQbWiB4ElJA6Bgst6wi50cmdVVungAgDMA8iCmZ6pO3zMwzDAA7I3q6uq/l5Suq9E0zfhlokXFbVFRDMBUACNAQxlEM25htI7PQK0U0PrnDIAVzUhnhTxWT8cXKsgqRxBESFsgwpQrAR5vfFeVaxrml5Tp/zoB7ABwDEA5mhZhkgPQABS/U1m56mcxMdenhCt9z1ohGMPkyHC8UlbWzQXcBeBHeT6yQnRQVFW085rGpVbVApV0LIBSBC8C6k5T+rUAdgEokfc4DNv6Gn5N/naX/D5M7r8hRC5NutweNDy7/goroG62QKDTb+x8vJOUkyBCUEBwNhqMWYzWh3XV1djqdus3fy6ALwB8CxGi2mNnjDfhudAAlFUA36+oqnrrUrv1DzYmWxHGMMhmRRRjKOY8FcBfAZwgAUE0g76ykQ+WgMiQ6esvdq8UBEcAeOq558145G+XA9hgsJjcQJeOIIh2JyD4wIEx4N6xxn1ezpFVVaW/AaukeNgE4ID8v6ldRg7hQ3F6m9u9qtSrPRSvqIlnu41MRWp4OD6qrk6CCEB1qhnnIEIcP3wJ/CLYPgPSV2EcAEc9FojNAGqMj4sUBt567nkzuuCoMIgHpKendYfwjchq40uk95h3N7PnzIOcflPP19nLSRBBtkA4nRaEWZJQN3MTxZqGFVVn35FHAGyVD0XFOS9KxnCO30TDw7UcgGt1dfWhEi3uq3jOb9ePVRWGZKsVEBEsb5Ivag89OB2W2hZaCSJ87A+kz4AGYKVs2CGFg+6zUCOfP60Ba4MvvPK+rjU9G9X1nM9LzwBBEKErIM5r5jkOul3wiCmXGoCvAeyXPaeGX/qNv7o5gBo3936lcT5NMcSbMKQwAGJsmPwg/Kepve62tu6YfQmaSrBN/rqvwk5Tno2+Dp56nkOtifWvyL/9OV/QyMnZov+5oznH1xMxMaDp13OeY3r3h8pJEG0sIDTOmWJo/L+ocequ4TUQ/g+FCNz0Su8RT6VjiNX+oiIsDmaiAERCOGsSHVNImH0JQk1AmH0VAN++Dp4WCpWmnq/TkpOzJdfQuFI5CaKtBUS5prEo0+y3AdazYR4KpYCov7fITGtj+Gc85iNYdKzCfNor7PJD09dMBDquQrDjJzRigTD7EoQS9fkq1OfrYK4/HuTzhSq5chv0Rk82rhPkv9+0cg+9s5STIAHRTBjDFWF2xDCGcs4tEPPVzxtO0Dwej2ZVj1VDiyjxaN00BnbU7dG7Sw2+SHuGhU1SGbP7+FqVPWkSEMGHG+6l1myoaqV4qA7hutH9D9z1WAxaKhiaez5CsBHABConQYSGgDinJ9hNFWGmf3C7u8qGXDO/LHPy80/nJybe805x8Y2H3O7nNM67eBhTTnu9mkzP66PFUjSmXWGO+eOld2VbEuz4Ce0Vo6+Ccat1kPMBCHwERYP5PTdAvXFfjat+Hr/iLYR6JEo/ynmAHkkipAREl+PHi2v7Jm+3MZ6oz4qIYAruiorCDyUl4QCSIeI/MOMDOgHwoqCgEMLBciOAKyB8F6oA5AAoqveBTkjoqijqZcbZG2VeL5ZXVgejV0f4R18EN35CRxESHfV8BEGQgGgeLq79aIM6Sf+fKQomRUXgjyUllnIgDWJ+en0Obx4pFLZCDHNESOvDTgCn622Q7NZngHPX3CjSNJSJCNdeCA9mEhF+0NS4Cm295kI7RK8TZmrYeQc533m3VFN69AZ8RUzUe85hLczXTh/7w0KknIFKP9DlJIigCwie7/JmDlYsj1lUdnZWxBCrFY/GdcELJWVXAkiQlgWjIOAQMzPyAayTIsIiRcUZub/W+PDwhITuYOoUMIP5gXN8U+NEsZg26gFQDDEOTCLCf/yNq9Aa8RM6g6DwdtDzEQRBAqJpPHfixK63+vU5FMP5sLrgTgp+ERWFN0rLE4o4fwTAEzjfF0L3Hq+U+dGHOTxSBHhN1oenwdDXuKvaq2FRZZX+bwnEgl3NiXbZmfE3rgKFTPYD82yX9PQ0i8ki0K7P1wCBjtB4MEQvcXuLREkQoSsglgG1c13O9y6zhb9oUevWxBhks+GThF7sjsKT005o2jwIJx5uepDcqH+u+rlTPPsl/wGK8hCMwaM4x1aXC+tqavTf74cY+qAgUk3D37gKJCCah35/W1vJGtDa5yMIggREs/FeUXBy4fHkpPsSFOugsw6OjGFsuB1Le/XsdXvhyWWFmnYrxPgfb4oil+LhSTAlwmx9mFdapneznBDOl2cQuKBVnckCEcpxFfyhPfhgxKIuImtzQ1k3pazG87UG3Me2SeTkbAn1Zzcg5ayn3PqfO0AQneiFywFUZlRUzTvl8VSAG54nKSKW94q/JM1uX9cf6A0/x8t5QkJ33i/5ZSjKE2bx4PZqWFRViY+rz86+OAxgH3w5XxINYYyr4JJirL5Pe7mvG/u0FX1wfujqluSrseP6IFjxXgiCIAtEAAVE7ZySkjWHNffQx2Nj70u02mxGEXFVeDg+TAgb8nVN7fbvnM4/pkREvHf98eNn6klIQUJCV9itzwiHSfSFac0Lt1fDf8sr8OCZs4dXQqz2uR9AWbAERKAjOZpp7ciOhlkV2e3hhm1v+fWImUHGfG/xcb21IN1/NDvGhCnWQm0b52VgTs6WAx29nAQJCH/wAih6paxyWZFbS36+e9dJyVarahzOiFBVXBsZHjsm3PZKgcf73O7eFzhiGdYnWGrWwBUZD6t1Mpj2EzDlcgDdz5ltYRAPb5dX4KE68VAL4DsA2yBi/7dn/4e2iuxItO311n0VAn3f0uwY341qqOQp4CIiFMtJkIDw52VYDeDQe9XVS2tP85i/dO82to/NICKkkLCrFgxQLdHg/DYv59Oc3OZWbYCVwQYopiW+z7c8GMSDC8B2iPH77yFiSnSExYMosmNHeMAUpSnXW/dVUBDiM4hSUkYNlH+aG77aIKcfSCagbrVK3hbl1M8v16zY2ArlJIiAEQzTplc24jmLa2oWzS0689Vht9vLNR/vQ8agKgqzq4rNqig2MFa/eOAc1R4v3qk8Z9hCFw+fyc8BiHH8juA82Rc0dt2ZqM9XgYYegiseOkOeaB0MImgEy7SpQCyznQxg7MVW67R7Y6LG3RYZFZFoUcWoBPPz1Jyj2qthq8uFeaUl+LjaaRYP6wE44H8cg5YSDmAMgE+DfJ7rEZxZEeEAxsk6CyQ3AvgSgV/cKlj5DXY5mppv4/XWLRD1WSKaev8F67rokQ17m/YfDVAP3Zx+oCIp1hp7/mjcMTjY5dTRFwZMClB5m1pOgmgywerh6oth5QPYtMPtxuNnSir/XVYxZkpkZPzkyHBlkM2KWKZCVeoXEmVeL4o0DV87nfigogrramr0N6k+TLJLWh1aUzwYWSFf5OEBTrdGNiTBRAOw0pT/plptmCm/wRi/D2R+26Ic/uS7udfb1/3XmteFIAgSEEEXEV8C8Oz1eGr+XFZ2yStlZb2jFCU61W5Xk63W8xSEFxqWV1ajRNNQWjcdVJOq+jTEUMVmKSBaWzxoEGPVu+TLOtAx5mtl2iUIzji4nv+dAezp7GxH+W2tcvib7/qut2YSA825/4J9XfQe7oEgXo9gph9q+XCGSHkJosm9r2CiQJjnEgAMAzASwCUA+gHoASBKfq/Wc6y+VkaNfBEWQMR52AaxbsZBBHHKpg9UiKlxfeRWDXD6emjvIwhOAKBA57+95be1yuFvvhs6L6vHehCIdAmCINqFgNDPYwMQA+ACAAMBDJEiIgFAN4hlvFWTeKiV1oXTEGOO++XnCISjZk0bvRhVab0JZmPmCWLZAp3/9pbf1iqHv/lu6nmDlW5LOwpAnVXTnDfdUuKS22rT73zFw1BM+7Umnl8f4tEXy/EY6iaQ5Tbnk5vKZf6emfJrdpjVTPnVGkmP1v0hWp3W8vLXLQnFEAGfjkOYV7tLK0RPiGlsFtOLpBrASSkgzkjRUAph7vOg7cZ2ve28R9fe8t9e6ztY+W7v9x9BEGSBaPY5mewhWGXPJFJuzRYIt+w51KBuwS0N5BRGEKGCCgAbNmz0K/bKxIkTnpZ/viSP43J/mty/Xe7PM+3/QW4LTBYEv84/ceKEmfLP9XJ7rIU993POW08+T8jvXQ2Vr4H83i//3GDM74YNG51+1gtBBJ22mGfO5UPrlsKgTD5s+RBrWeifPPnQFEsRUQvyKCcIohOQk7PlP1QLRKjT1oGKuEEQkHImiHb+Dpk4sdG4RX+VW/MaOPpiIQ/62K9bED6S25omnv9tudV77sdbaIGwNJLPDH/K5yu/GzZsxIYNG/8zceKEv8ld7zSxXgiiQ1ogCIIgCILoSL0HgiCIAHVC1sntN3Jr9jnQLQJvmY6L95Fedx/na+z8eoTHxXK7XW55kMrdvZF3a3wj+f1ebp+R2yfl9nAT64Ug2uzhJwiCIAiC8AlZIAiCCBgbNpxdUPIG43bixAl/kv9nNJIEa0lnp57zQ55/semnwfK5UhopB/OnvqKjo5GSMioDwFTqBBKhCt18BEEQIYaf4oEg2hSyQBAEETAamAXxW7nV1wb5vpXP/7rc6rMwjoRifekWiQ0bNk41fPcOgK/p7iJCDbJAEARBhJgAi46O1sXEO1QrRKhCFgiCIILBGrldJber5ba4melZ5VZf20KfzeFrNdJP5TZHbvVVNRNbqVPW1FVjHXJbOXHihGkG3wjezHoxr6VBcXaIoN3sBEEQRGiwnKqAaA+QBYIgiGCgj9kvldtSubU1ctw5PW5DT/x543bixAkPy///5eP31xu3ht/rlhG1hT1zTaZ7f07Olv8Yzvsn41bOplgCYLrcf8ZHel/J7Vq5nSa398rtVn/qRScIa38QRGgJiIyMDDU6Ojpe07Sz+VAUxVNRUXFq6tSpZHIjOjSP/Pp3tq0ubw+X083Cqqs8kXv3nsQF8ZfbVBbFGWcaFKZwXr0666Nvh18yOmnI4MHwcg3Hjx0p/e7bLyupBkODlJRR92/YsPE/Pr5bQjVEdFRYW5587dq1CYyxDACJXq9XBQCPx3Pyww8/vH/JkiXHIZbyJiFBdEh2zn0ircfB3AzmqlW4qza/p2PjoKwv9p7qmdS/C5dPZ211dcnkiSMGrVi7qcga1Q3gGrZsXvfSY7OmPh0ixdDH+u+SWz3CpK81GvTf15p62PpxD5o6NwsaOf88uY0ypeeLNJMlwtPMcusWjGS51S0cT/r4vXlNizFyqwuPWXL7ickCoX+vr85p87NeAl1egggtC4SiKCrnPAFAb1UVz2NxcXHPjRs3roRYnfN2AEfRDlfgzMzMqjfP6elpLMSyqkA4Yin1CEreiOBs7Ptg09L86SvDetpCqLKaaq6Wl3qtLpfiBTgm3RGr/ubPWphiBZgGDQxecKWq5Phwe1QsVIsF4IDT7bEBiJb5psWTCILoeAIiIyODTZ06tUmNv6ZpqqZpveTLvSvEUt9u42/WrFnTZdKkSWXttM65oe7b2rqiZmZmdeoeSXp62hiIdQbOAHC1auUDLJwxi40xHHG5emPDyj3uJ38bawtnUKBCY0B5aWWM5vWsjowMA4cVigJ89+WnD8ge6ysAnmvjKtTvH32sfYrc6nEeXD5+Dx/H/WAQtkaLRJzc6rMOCuX2TVOPfovcdjH9vsCUfkt9AfRnV/cteENu95nyWyK3G02/r/RRXxVyq8/KSDflW/VRLzCVqyjA5SWIenufwRIPSnh4+HvZ2dlpvnqmtbW1jHPuq9caDjHlymY8Pjs7O11RlB/Wrl17reEl0R6JNbwM2kxA0COA2QBSASSgcQe/gBKmeXfbvN6/5zudH/33+ElmYehqtXJmt2uw2jnsYRxhVjAAkXY7YJMfcE84hMk+gi4fQRAdygKRkZFhCQ8PX8gYm84Ym37LLbd8vWrVqtcAZMJkVuacM8bq1RBWcyPrcDjugxwTdDqdH15xxRX8u++++wXEnO/2NszRFyIqX5taIdLT066AGDceD6AbOtfMHE32XGPk/bMOwKnWuib9Xv9PLsSY+cUAZoSHh8MWBoTbha7nAOxh4tmw2wGNCSWthNYV0usq37Rt7Pfw87h/+5mPzaZta6FbRw+ato3RWLkDVS8E0X4sEFI8LJLiQQFge+CBB8aPHDlyKYRPg9KEvFl160N2dvavUOdQBLvdHv/www/3vPzyyxcBuBmtGNNixYqVPoPEZGZmxWVmZj3q6/ubb74FkZGRgDA9npfnlStXhbXi9fdCmFS/AnAAQDU6l6mTQVi6BgK4CsIhrtWa5/svu6LHnFGjr71lwOCUnuER36sWy5qocKvLZgPsNiAiDLCFCV0cZmOwhQFhdsCiMHpzEQTR8SwQ4eHhf2eM3S7FAwDAZrNh7ty5ll/96lfvFxYW1gJY2ZSG6t1337UDmMY5h26tYIyhV69emDNnTo9nn332zePHj98LMW4Y9AaQc749K2vFyj/96YXff/fdd9UG8fAn2aP0aQq/7777cPfdd+Orr76qePXVv3cFcBwAX7Nmrep2u/+iadqtAIZCeKvXtoKAOAPgC2npKQPQB3Xjxp0BDqAKIk5Bq/qDPGDn4y6wsuVhkd2g9onP67Jh08iuMVFFdgXd9IfHJu93u8rApS1OUTi9uQiC6FgCYvXq1cMZYzOM4gEAKioqsHjxYhQWFtoA/BfA1QB2+5vu3Xff7fz4449vDwsLy7RarT8xioiEhATcdNNNvd5+++03ANwEYA+COJyRmZn1IOd8CIAhjz762OOrV69al5qa+lRsbNx/AaT4k4bVasX48eO/efXVv7OLL774zeef/+P/XC7XqxBDCLjnnns/feed/yYDuAjBN6e7IBzS1kGYX7tJy4hX1iM39NYZzg3A4+v7YPtWeFuYP/P3bimk8lpTRNgYPHYGdxhgLXG5bWF9+45R3C5ruOH2tcttGDi4XgAyQBAE0dEEhKqqswF0N+6rqqrC+++/j6ysLMgX9acQpvIm9XJvu+22optuuumhGTNmZMTHx/fVRYSiKLjmmmuwdu3a3sePH/8VgEdkoxhwEZGZmRUO4GX9/+joaHX69J/e5Ha7b2rAWgEfPh7IzMzibrcbjLFZjDFwLrJ8ww03XPfBB4vgcrl+BeAfrSQiijMzswoAID09baK0jJw21KUlMzOr1J/vg016eloqxGqKzcqf6fta+b0XrTyd0yYFgg3AGZfrAteJE5uqKiqhGHyO9b9UsLPKhzxfCYIIBQLmN7B27doBACYbG0vOOaZOncqkeIChl9cVgOpyufztSzEAbO3atdUZGRnrXC7XOcMU3bt3x7hx4xiAqQBGIHj+EH9FXcCasw2+1epbC/kSD/p3+rF6WgAQHh6OX/zilwDwRynIgu3foWZmZtUYhM1Lsi77y8bVZRQHjX0fbDIzsxwQ/jTNyp/pe0DEUqhFKzu0WsG5HoBDuDUwgDE/HgYyQRAE0bEsEFcCiDdbHwYNGsRzc3MBwAlgB4TTXnkTX9Z6wJ/i7Ozs1RMnTvzT4MGDjxiHMpYsWcIsFgv3eDx3AfhRni9gVojMzKxB0rrhF5988gk2b96E/HzhRJ2cnIwxY8ZiypQpMAuQ+rjllluwevWq8BMnTvwNYs5/bSvfBzMhpjYuhHCw9Pf7BQAWBSmfPwMwR/49C0AvAO82MX/m798DsEveL61KmZfHcAtXwViTblRFafs18HJytgTUwpeSMmqQ/POoTN/p53ED5Z96fIVaEB3uOrfgPPp94exI9dTS+96c3+amF8g30WhjQ8Q5x7Rp09iBAwd0AZAL4az3LUSIao/NZmtKpWsAypxO5/dff/31zz0ej9fYk1+6dCm32+2AmNPfFQGOiqgorBhAdmO/O3XqFObOfRLvvfcuDhw4AJfLpblcLteBAwec7733rvOpp+a6T5061ej50tPTWGVlpd5oXhpkK0R9afcBcCuEX0mvJny/KIj5NKadBOCWZuSvvu/j0QYjA5rX04Xrdd/Ik+D11unt6OjoB6hpI4gGG8hcqoXgE5BGyeFwxDDGxppfeBMnTuSyl10lxcMm2RusQtNnS+jObqcPHTq0qrKystD4ZWRkJEaOHKk3LImBbhAmT558Jj09LX3lyhVzCgqOvagLFzMvv/wSpMVFL/dhiGhw3wD4Zv/+/dteffXVY+bj9LTS09PYb37zDADwiooKQDg26kPlrWm7tsge+pWoi/fflO+DjSqFQXPzp39/lRQTrR5doa8tTFHldW9IPzDGoId6B4BXX331Px3wXZQrP73lx18OyI9+HANojKcDXufmiojR8mNHnU9yR6inQN/3zUovIAJCrqaZZGxQKyoq8M033+j/HoFYjvYgRKjW5o41cwCub7/99lBFRcVXxiEAVVURHx8PiHn9N8EQQyJAMADWt99+e/fs2bMT8/Pz+5uHID755BOjeCgC8B2ALIiZJwvk5+09e3YvXb9+/Y5zCsa5vk4G37Nnj17W01J0qWibqZVW2TuPaeb3oZ4//fsuaMU4IgDwyKCB7KSmDdNP6uHikmuapjVmgcjIyND/ofDEBNEwG6kKgtvLDDicc/z0pz9lcohCA/A1gP0QceFb6qjGAdR4PJ5Mzvk085RR2dAPgIijEFA/CFmWMgCHYmJi9pi/3Lx5k9HysBlixskWiDj8euz7SADb9+zZ7b3uuusuNh7/5ptv8fvum6WX8bhUoIfRdJ+RQFupWAu+D/X8KW1RhomRdtgYLpImBlR5PGB1vj7n3NNG6wMA9O7dW7PZbIrL5RoZKi+SlJRRgU5vkKEnZuxV+jokDESHuc4tsDr4EhGDDD3tdldPDdDU+54FMr2A9brMa1rcc8893OVyAcLDPRci1kCgpld6H3rooQ81TfPl6BElG+pANgocwrHkCABHTEzMeeJLd5gEsFeKhw0QDnqFUniUyb935eUd+ch8fFzc2XVxvAC+BLAUwu8iD0GamhoEftZO025VPnV5lGjGzgqAI7W1XubjflUUBdXVZ+OVISkpCT169NAXmyMIgmi/Fojq6moWEXHuuj7vvPMOkw1eoRQQpT560ea1MfxqzN9///0rme85kvp4V6B7lV5Zjp2MsYYyullaHo7i/PDQXgBVF188vKCB41WIwE5fyvqrQfsxV89B3UwJwgejbZaru1nUSP3/bZXVmspYvX47VqsVJ0+eRHR0NFRVRa9evSyDBg3iBQUFfSCGX0JpZVp99ciD9T3fDaB3Bo6a9g8y9Yx20t3TKa5zc9kZoJ56qNTTsVC+CYIy7ssYw8KFC7kUFRaI+A/nDSdomubhnB+rrq4uOn36ND958iTuvvtuJsd7G6zorl27TlIUxd5AAxwss7RXioJC8xfJyWd99XLlhffV8PMZM+7sZ95ZUlJiFFXH5DmqUBc1MVTR0tPTrm+1JzI9zacAbS9cbrX8R9WnY3KOnPIKTfWhh8PCwnDs2LFz/CAef/xxfR2PodSWEQTRbi0QkhrjPzExMejVqxcOHTqkT6nUzC/79PT0EwDGXHrppY8eP378Oc55l7i4OF5WVqbJ9Ood98/IyFAYY1ec14pprdZJ55zzUsZYknHnmDFjIaetRqKRmSZhYWG3mffdd98s3WpjjI7YHhpIL4Cj6elp/y8zMys+yOLBaN3QpDD1tKeH7sOLL7ruoojwgZDWtkK3B/nO2jD4sGoxxnDdddex8vJybrFYoCgKJk+ejGHDhtl37dp1EcTU6FBB72ntbqbA4z7SI0ILus6tU0+N9tdNW39/HzoWiGnTphW73e7txuGHsLAwTJw4EbKXlOwj82FhIBUAACAASURBVAxAzPbt2/efPn16Y1FR0fGSkpISTdOOA/gfxEwGXk/j21VRlMuMIxhVVVXYtGlT0HulWVkrxmZmZu1QFGW4eQRlypQpGDRoECCmBvokMzPrCohFt85pJDIzszgANmzYsNYertDS09Ouln9/k56eZnbO4zJ8dH3f6+tJnAbwaXp6WncALwH4INCfesRDKYRT1Jn09LTrWpj/VuFXgweFXRMT+YzxzslzOrU8p9Onk6zH48H111/PnU7nOUGkFi5cqAC4m9oygiDatQXC4/H8aLPZJp1VJoqClJQUfPDBB5aampo0iOmM9Tk9eqRQ2Cp7kxHS+rBTNkrnvVgVRXkGpjU3ysrKUFVVpfeGdwS6UcjKWtkN4O9zzm8ymCHO+93cuU/h5ZdfmpybmzsGwgHSW494WFqPSUP/nsue9vqhQ4dO27t3b0YrNHAeAEfS09N+BxGh0QsxDKRbgmoB5Pv43gkRn6MWwmH0/fT0tDcgFkwLtCOrWTx8DWAtgEMArC3If6tZetJjoibHKcq1BuWID06fqUZdiPTz6ktVVXz66afuXbt2VY8bNy5aVVUFAEaMGMF//vOfX/3+++9fCmB7W75IDN7vO5pzvDnynuFdQUuPhhDBus45OVs0qqd66+lYMNJvIL2djTyPQREQ/PTp05lJSUmPWSyWcH1nUlIS0tLSsHjx4ishgvZUmRpUDjG7IB/CaXCrzJMHwm8iH3XmfADA6tWruzPGphgdKDnnuPfee3XzvwdAsWzUAvby4VzrChFfokHi4+Px8st/w6pVK5dUV9c8MXr06DeTk5PtAIYBuMNseWjASsEfeuhByHr5uRRTwXqZegGckoInHsAkAD1k43tACrxCiOXS6/u+WNa7C8KBlENMPb1aCr1ADpUZxcMSeb6T8hwtyX/QX2AvDR04bKTd9pHdYEWo1DQsOHpc9+VxRUVFVcLH7IoJEybEVlRUOKOiomwAmKIo7LXXXsOXX375dl5e3igQRPtsbEkkdnYLxHvvvbfrySefPKSq6jC9bbdYLLj++uuxZs2ahPLy8kcAPIHzfSG8EPEhKmV+jELAbe7BK4ryNIC+xn1OpxMjR47kW7duhUwrD82Ldum755ielpuR8ckCRVH8mmFwyy23RgJ4Q37qxbgCp5lVq1bhxIkTAHADRKREvZEOFrUQS6G/B+AExKJklbLR1etzdwPfewzCYZO8DnsgosDFIzDDZVxaDA5Iy8NmKQzc8vwtzX/Q+OuFQ/r9Mi7miyhVUQ03Mx7dd5Drz6HFYnF06dLlYvientn3+++/f+nqq6/+nb4jLi4O33777ciUlJTf5efn/7Edv4v0OAB6z6epXutEO7zOwQw5bYrFUNvOn4e2Pv+BoAqIr776qnbq1KnDV69e7bZYLGfTTUxMRHl5uRIXF3eipKRknswINzUKbh8v8HNeHmvXrv0DY+whY/AoEcExnclplRwiYNVpBD6IFPvgg0XP3XXXz+5VFCXCKADcbneDK3L6tmrUHWsUEzU1NVi48D39Z99KIWRDcEztCkRERr1ODwPIgAi97ZEmtCrURfas7/tqnBtqW0Nd4LBvICJBBmoowyPTzYeYvmgx3cdNzX8+fE8xDggv9E3uf1dclzXxVrWbcf/Oymr3B4UnvZAhdi+88MKna2pqNjSQVPj48eP/39GjR+9KSkrqb7R6bdy48Yn58+e/+49//OMotVFEZ6cVAzmRBSJAeAH0LCsrO9y1a9dBxpUys7Oz+Y033sji4uK2l5SU3AoxrsIbEgtmpHh4kjEWYbY+jB07lksHSieAHIjhj4AHXlq+fHnt8uXLI3U/hbKyMrz99ts4cCAXBQUFTN/fBKsGS0xM5AMHDsLMmTMREyMiLr/77ruQQbj0RchiEJzFntTMzCxPZ34A0tPTxkkBWyTvmYDy3iXDrp4aE7U2SlUizDf7bw/nw6Vxffji9Y0bN+YVFhY2aqkpLCy8Jy4ubmNkZOTZ3/bv37/L73//+/z+/ftHPfroo1X0wiba43UOUvoT0MrxFNpbxM7m5jeQcSA4gMpNmzbNKy0trTCa5nURUVJScuno0aPX9ezZs7e/PdLVq1d3X7t27cuMsSfM4sHtdmPDhg1bDbMvDgPYBx/OlwEonxvAJeXlZWdWrVpVdffdv8QXX3yOgoICAPB8/PHHmtvtbjQht9uNZcuWAQAvKCjAF198zu+++5fuzMxMXlBQ8FeH4+yin4UQ5vUz8twBFxD0SsRDEMNECdKKEhD+OnRw182jRjyb3iXqi0iTeICiYN7xk84VRWd0s1U5gAUff/yx1b+XScr/8vLy3jYPf8XGxvL7H3igcsv27S89/szTdrq0BIEJVAXtwwLBAdS+/vrrawoLC4dOnTr1vh49etjMIsLpdCI9PT3/7rvv/vW777779/oSysjIUORUzWcYY1MA9DWveeF2u+FwOErmz5+vT8mrhBh73w9h2g6GSdoN4PicOXMeKi8v/ymANFnuEgBFixa9787Kyuw+fvz4XrNm3VevOHvzzTfx+ecb9RkjgDCjF2qaVvzuu+9YP/hg0Uy5j0E4Cn4PsS5GUEJZp6enXQHgXgDjAXRDG6xK2YZoAMZICw+HcFg91dJ7Z+GIEfeMiQz7XReL0s8qE2Z1DwLeP3kaj+ceMjbw/wawhzHm96Jkw4cPv//7779PuOyyy24x7GZWmw1Dhg2f+/gz//fzy1OufP3n09Jb2y8iUBEKyfchtAl0JMpApW8+j255cHaQemppxE79VbSjkfzu8uc6Bbqx8AIoysjIWFZeXp78i1/8YlJ8fLxqHM4IDw9HdnY2d7lcuPrqq5/zeDyOyMjI9TExMWssFks8Y2wy5/wnjLHLAXSvL1y12+1GdnY2FixYEGeo7O8AbINYq8IZpBeQBqC8vLx8B4B+EJ78kfLm2AXAWVFRMWTVqlUjZs2677L6LSqrjHVVLi0MP0jLid3tdg+DWAysCsL/YQ/ECqbBmCXgleJkC4SjZqT8KJ3kJahATBseBBG7Yy+Es2qTBMQ1ScnKA127dvMyZUyyTV2QHGZJtMiFLbwwrI7FGL6qqMQD+w4ab84cAE81NeMrVqxgr7zyytRnn3326yFDhoxkTCzF5WEAVxTYo2J6XXtL2vNf7sx7cu+OnU9zTc364K0Fp7/YuLpTD1kRBBGaFghdXVUDOLR+/fqlbrc7ZubMmWONIkIXEmFhYUhMTIzmnN+mado0j8fj1jQNqqraGGPwtcyFbnkwiAcXxBz4zbK3XoTgetS7Ibz4vzbs2yNFhAdihshhAJc1ks5+iPGsLVIo5Mnr8T2Ai2Rdfi3P5Q5WYTIzs4515gcgPT1tlxQNFc29b2Z26XJpD6stK1pVekeoDC4NUBTAzQELE4laFAULT5yueiD3YKSzLiT1fgA3NueckydP5gDcsbGxqePHj//f7bfffhEY4AWHFwxejaO2liG+V5+Y6OjEf5WWlL80bcY9d36xsU7BBolARyhkIEKRQF/nQKffUeuppRE7mZ/5PWToNLeagDhrhQCQ88UXX9g1TVNmzpx5Vc+ePVVjFD2jmFBVlamq2uD4M+ccTqcTGzZs2GoYttDFw2fycwBibn8wbzYOMVyy2yBWzkiLgR6R8TiA5xtJR18sax/Ect9V8uIWyp6wBcKcXongxSggHwghHr6HGP463hwRYVfUOJuiJAEMXi4S8ABQOOBiopJ/d/io54W8/HDDYeUQvhfFLcn8P//5zzP//Oc/RwGoqXQ6OQ8Lg4cDXi/g1QCPm4NzFZHR0dF79+2cCGAVXXKCIELRAqE3sLUQY0+bv/zyS3b06NHq1NTUcWPHjo3o3r07GrIw+BIO6enpbMyYMXzz5s1m8bAeYi7/TgTP96E+kVQqe636mhV6I++RVpjG+E5aGHQHSc1g4ahAnQU8qOUx+EBcg87pA9FHiredzRVUGtjZC+XlgMbE1qIwbKmo1F44lK9sLi1lqBsa2i/Fw5EAlaMGQL/bp077/L7HHr3mmhtu0LwepnjdHJqHwev1QFWt2PbdpscB3AlgKoCvgiiw69s2CX+DCzU3gh4RGte5gesZkAiLIXA/BLqegn18k/IZrMZCDyGcD2BTXl4e/v3vf1euWbNmzJgxY+IXL16sLl26lEdGRkJV639nV1VVoaysDPfeey8bOXIkZ4zxzZs36wWrhvA5+MwgHoI6l9+HiPD6KHttenpaFIBxEAGP6qNECh6zc6SG1lu62yuF3lcAEiHiEUSh8/hAQJa5L4AU+dJq8gweDRxc49AUDg0KLGAodHkw+9BB9+clJVaXWORNNVie7pLWq0ByeO2a1ZM+/3zDy1ddPWH2X+a/ha49ElBdzeHxalCYG5qYtdETwufjKxAEQYSYBaI+EfElAM/Ro0drFi9efInFYimeOXOmZ+TIkWqPHj3OM0VomoZNmzahsrISAPQIk5pUj6chhio2SwHRFuLB3/J7AKyE8PQPN/QWNxusDm05tueVFpAvZANXJnvk1k70DHBpgShFM30gvJrGPFxjLo3VHq6tsq08U1S59MTxcFM9FgP4G4A/N+WZNMRk88sSUVNdM+ez7DUHUwZd8MSU23/Z/ba7HrZ2u+ACpUvXeHi9WqB6MaEMRbQkGrofDlCVtA8BYRYRbtlYHfJ4PJdUVFT0+/zzz3vIHq8d9ZuP9bUyamSPvQDCZ2AbxLoZB9F6wxbNKXuJFDhA3bSbWrmvpBUtDQ3hQt06EbkAuqDz+Ubo92Zec0TEabcrT2PKzzNOF1ozTxYuABBt+skCAK819vJyu93O0tLSF4qKiqJ69OjxxyeeeKJ/ZWXlgaqqqqY2fq8CWP7Jsvce/mTZe0/16TcIA4YMdx89vF9F57IuEQQRRFgrnscGMd/+AgADAQyBmAqZADH2HmlquHRfilJpdTgKMXa8H2LsuEgKC2+I1q0KIE726OMMZdPX/jgit94Qyq8Fndex0ivFQ0uux5UQPjl2ee+uBfAYmhcFz2WyYHgAXIo6b25/iQXwOoBbIKasqgB+CWBhC+trgI8eXaB6/gNa2GMkC0RgCPXr3NT74UA7raeQzG9rOczploRiiFkFx2UvvDtELIWe8kVnwbnrKVRDrLR4WvYQi6SgcKJu8aZQbpBKIBwi1SA0VsHIrxdESzgD4D8AfoRYvr4lMyyWmJ5PD4S1ramUQjhOdgFwM4DrIKYZEwRBtAsLhPmcTDaqVgjTfqTcmi0Qbojx6RrULbjV1n4DBNHY8xSI+1P1IfJaiiLz19I86kNyvU37A+Xtbk7f38h7tQHOR2cnVK8zQux+CHY9hWR+22LKnv7y0p0MnRBz4pVGfkuigQh1AnmPBssapNFlIgiivVogCIIgCKIztKm8I+eXPLIJgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIguiU0CwMgiAIggjNNpa3cfoNQrMwCIIgCIJodXVEEEQnJCdnS0Dnt6ekjNJj8B+V6Tv9PG6g/FNfb6S2Jfn1Nz26ru3rurYg3/r5nW1Zb3r5g3CeFt3vZIEgCIIgiHMFQW5HF3cyzRYtLkYCgiCIUCBXfnrj/Pj8DXFAfvTj9LV2mkug06PrGhrXtbkiYrT82OWnTeotWJYWg4i4Un7C0IT1SCxteWelpaWpMTEx8Zqmnc2Hoiie8vLyU1lZWbQyJEEQBNGWbAQwgcoZggIiIiIi3uv1ZgBI1DRNBQC3230yNzf3foglv0+inSwx7XA45gOYY9q9IDU19SnULRxGoojqu0OSkjIq0OkNMvTEjL0lX4eENZLeQEPPtsXp0XUN7evagt64r8Z1UFPOE+h6C3T6fpTzoNzykBUQiqKonPMEAL0VRYymOJ3OnkeOHFkJIB/A7RBOJCG7IInD4Wgob3McDsccAEhNTU0EUALARQ0b1TdBEER7J6gCIi0tjWVlZTWp8eecq5qm9ZKioSuAEwDcxt/89Kc/jV68eHFFiDVkC1JTU8sBDJX5Zg6HY4feS3Y4HAXUsFF9dwLSm9KDMaB7fx817R9k6onubGa+jgU4PbquoX1dm8vO5lhCglhvxwKcvu5HsiMQ5QyaE2VaWpoSERHx3p133pkGH84vHo+Hcc59OcaEA0gEYDMef+edd05VFOXHGTNmXAsguo0as/mmhuxF2VBdD+BCmS81NTV1RGpq6lYACwzH/gbACAA9AFjpvUT1TRAEQRaIOvFgiYiIWMgYm84Ymz5o0KCvc3NzXwOQWY9C8iUgrABiAaj6jrvuumsOgPkA4Ha7P7rgggu048eP/wLAp2jdYQ7dTP4MgCsA/MThcLwP4NcAkuVv9gB4PDU19abU1NTBAL53OByXy2NVAOsBfAXgNPWMqb47EHpPaHcTe1zw8fuDAcpXbYDTo+tK17U16i3Q6Qd0JkvALRBSPCyS4kEBYBs5cuT4hISEpRA+DUoT8mbVC3znnXc+qYsHALBarT1GjRrVs1evXosA3IxWmpJq6g1fAWCow+E4BGAegL4yHwqAYQDWORwOL4D9AL4zpOEFcB2AfmYLC0H1TRAE0SktEBEREX9njN0uxQMAQFVVXHnllRaHw/F+VVVVLYCVEJ7yfnHrrbfaAaRxzsGYePczxhAVFYWUlJQeGzdufLOysvJeAI6mpNvC3vCLAK53OBxvyMbMF086HI4bZM/4dw6H448yjfUALgJwBO1otkkbWh+ovkMYg1f3juYc7yvyXhB6bJyuVse7rjk5W7QOWm/HgpF+SFogpk+fPpwxNsMoHgCgtrYWu3btQlVVlQ3AfyHGrf3uBa5cudLpdDpv93q933Jed9/pImLgwIG9ALwB4VDXWr3LoQCiIMzojfEqgEsh/Dp0YgGMBJCENp4N006g+iYIor7GlERhR7BAqKo6G0B34z6Xy4Uff/wR+/fvB8Rsik8BVKOJDm0ZGRlFAwYMeGj48OGfREZG9tEtEYqioG/fvjhw4EDvysrKXwF4BMLjPtg3VVdZjiF+/PZCAN0AGGeOVADoCSCmISHXyLRFcM6rOedlnPNdLpcr+4UXXnhjy5YttbKHzf1NxxepqakRMMRVWLZsWb/o6OgXAVzBGOslG2kP57xa07QCt9v92bJly55btGhRuTxOa0/1rfPxxx8nR0VFvQBgjCynHYBXlvOYx+NZ+9FHH7340UcfVdRXzgDVt+ZwODS5X/eO9iD4Vra2QI8L0KR56ETnvq7BFA+mWAu1bVlvKSmjBoVieO2AWSBmzJgxAMBkvWGXjRuOHTumiwcAOAMgTzYGqtfr9ddawACwgwcPVu/Zs2ed1+s95wUaHh6O5ORkBmAqhMd9a/hDMAA1Tfh9F4iZADqVqBu/b7bVhDEWoShKgqqq14WHh/9t7ty5K8PDw/tAzkwIQDmvAjAcQLfs7Ow/xMTE7GaM/ZQx1h9AhMy7lTHWRVXVi+x2+yMzZsw48vrrr8+RebAGyCrUavWdnZ39m+jo6P2MsZ8byqkYyjksLCzsyZ/97Gf58+fPvz/A5dTrO84k8C+Sn7gAXVeCIPwTD6GSp0Ed2QJxJYB44w632419+/bp/zohxmuOAShH08aguex1FR86dGhVv379ru/WrVtfoz9EUlIS9uzZ041zfheAH+X5gt178UIEvOrbyO/2ABhoevE3aQxe+gBcJBsyrpetS5cu1qSkJPukSZMSr7nmmsGxsbETZs6c+YcFCxb8C8BeAKXGHquvdBrgfgC7//KXv9gA/AYAczqde3bs2PHlsmXLzuzevTvaarV2Gzp0aI8JEyYkjh49OjkmJiaqX79+f3v44Yetr7/++lIApwJ0PYJe39nZ2T8D8CdZzt3btm3b+PHHH5fu27evi8Vi6TZ48OBu48ePTxw3blzfmJiYqIEDB86bNWtW2FtvvZUhy1kbiPoGsEJa0nQmy+1qiLnqXnrhEnRdWyW/E9B4PIZg5+OYTHcCRMTIllpuQssCAbHgiMVofThx4gSKi4t1AZAL4AsA30I4sXlUVW1Kg6IBKPN4PN8fO3bsLU3TvIZeOKKjo2G1WgEgVVo4WssX4u9+/ObxAJzH2AM9e93Kysrcu3btqnz55Zf3L126dC8ADB8+fJKshyEGK0GD6TTGsGHD7mGMsdLS0rVpaWn/ePbZZ9Xt27df5Ha7k6urqyO+//77yldeeWXfHXfcsb6goKBcURR19OjRTwMYD+F3ENYe6psx9kfGGCspKVmZlpb22nPPPWffuXPncLfbnVxTUxOxffv26nnz5uVOnz59fUFBQZmiKOrVV1/9W0M5bf5ct2Y8ny1JhyCI5osHylMwLRB33XVXDOd87Dmtvabh2LGzoq1KiodNELHEq9D0cVwO4UNxurS0dJXL5XooPDw8Uf/SarUiISEBR44cSYIIQHUKrTBWnJqaGu5wOJYAmO7jJ39LTU1dB2F+b0mvUZHCa63sgRrH5FQAYZs3bx5w5513/q1nz57REEM5hRCRPJ1+puOr119qsVieBYC5c+euBHA1hC/BYYgpkyflORjnPOrDDz/Mnzt37iNxcXGxAK6B8F2okPkJ6frmnCcxxjB37tw1DZVT07SohQsXHv7Nb37zq0bK2az6hvBaN+Y/zJBeKE9DDVTEQvJ9oOvaFvk151tvxJxtXG/6/9/IbXMjbzYWibL1BYSmaRbGWJLR/8HlchkFxBEAW2UlVrSgIeUAXAUFBYdcLtdXdrv9dqMzZWRkJCCc+m6SL2tPK9ywWmpq6hcOh2Mz6g9stE7mo0w2JM0+j2xYdkEERKox3RSWbt267QXwN6vVqkE4/Q2GiIdw3M90fDZqjDEPAMuwYcMm5OfnRwP4AcAGKQjLUBduPGz9+vVb169f/xmAiRCxFy6S9VHYDurbA8AyZMiQ8UePHo1tqJyff/751s8///xzUzn3msrZrPqW+aAFnQiCCFmCMp2Nc46KigrIKZcagK9lD64ELR+75QBqvF7vV5zzaeYpo7IxHSBfvq3hB+EBcDI1NXWobGTsEA58AyHiXdTIhmcngC0AprTgXF5ZphrZ2z2n3P/3f/93CwAUFxfvhxg/7wogEuebvBtKx5dI3KWq6siZM2feYrVa961YseKAbCxPyUZVr2e9F14lz1sJ4fPC20l9bwfwkwcffDDNYrHsyc7ODkQ5m1zf7ZhARywMtLWFgoh1zOsa6PyGar05Tel2DAHBOWdGC8SpU6fg9XohX5q5slcWqOmV3oqKCkeXLl1exLlz/XWiZMNZ3gp1yA0NFuQ5e6HOgc8ry74VQVi4Z8mSJeFRUVHJACZbLJb/BwCrV6/OhIiDwAP14Bw+fPiXffr0+TI6Ojpu9uzZI2bOnDmPc74fwDdutzv7tddec2zatMklBaMLQBGEv8sR2egXtof6drvdMxhjW6Ojo+Mef/zxyx9++OF5Xq93L4BNHo8ne968eRu//PLLhsp5gtoagiDIAuH/S5dJB8azREefXeeqUAqIUh/WB262XvjTiHTr1i32HMVyLnb5aY3eBpcNRzGEufuEFDB6r1+TvdOTLRE0DodDH0tLb0DEubdu3frnJUuWuGTZC2UvWWtKOjqpqamR8pp5Zs+efWDYsGE3PfTQQ+8kJycPttvtERB+FiPCw8MffPbZZz2aph1xu91f/e9//3v6lVdeKYJYd+KMrCNve6jvW2+99fDQoUNvnD179tt9+vS5MCwsLALA5fLz6G9/+1uPpmlHPB7Pxg0bNjz7j3/8o7ihcja3vtF+Yz1wH9sm4e/8foM3+U7Ad+TDQKfXCQnJ69rAcQEZ4w/A9W/Vemu3FohzbFOMoVu3brBYLPB4PBb5cnXWIxY8AI653e4It9vdjXPOqqurdRHRYIWFh4dPYozZfXytovWdzTwQQzTlOH+evhemwE6BprS0NPeFF174144dO7oCuBh14+4tWTzqSplOHoCKXbt2HZwzZ84TiqLcMGXKlPGjRo3q2bt374jY2NgIq9VqU1V1gKqqA6699to7Lrzwwr/PmjXrZQgTfzAaxKDV9969ew898sgjT6mqesOkSZPG/eQnP+nVt2/fSHM5b7jhhp9fdNFFf77//vvnGcrZkmtsrO9S6t8QBNHhLRCSc5zDwsLCEBUVhdLSUn1KpWZ+uRYUFJzmnN9z8ODBGysqKp4D0EXTNMXpdGpowIs+LS1NgVhY6Rw0rU07bfpwgYY6R7uAkZqaugbCSe+4FGTevn37Rl577bUX3HzzzYNjY2MHpaenP7Vjx469slf+HYBtsqfubSidBk5rjEmwB2LoYLumae7ly5efWL58+WAIPwtrSkpK3M0339z74osvjo+KirInJSU989RTTykvvfTSf6QlxBlgERHM+i4DsN3r9bpXrlx5YuXKlWfLedlll8XefPPNSZdddlmvqKgoe3Jy8u8ff/xxy6uvvvqOoZw8APVdSa+nZuEr8mGg06NZIu37ujb3vAc6WsW2JOJmQATExx9/XDx9+vTtjLFEfVRBVVX069cP27ZtC4fwlP9WComzD97mzZv18er9EMExroDwXagCkAMxvnzeg2q327sqinKZedbH0aNH0Zke7ry8vOq333770KZNmypefPHFUWPHju114403lmdnZ/8PwoEwH82fflRfg+2RFo2tECa9RIjYBwk5OTm9cnJyDjPGuixYsGDMwIEDu44cOfJh+cBtlr3qmnZStT7LuW3btl7btm3LUxSly2uvvXbV4MGDu40ePfoxCB+IzXJbDYIgiPYlHtrOAqFp2o+qqk7S/1cUBRdccAF27Nhh8Xg8aQCyfKgbjxQKW2VjFyEbmp3wYX5XFOUZmNbcqK2thdvthvz9jg4oIjyyMdPjCehRCm379u2Ly87Ovv222267Zdq0aQnZ2dlR8trW50RpTqchxanHJMjPzs4uY4yFHTx48NKHH344V4qT47LHHCM/sZzz+Pnz5+957bXXnoqOjo6CiI/ghBhqKAj1Ss7Odzu7mwAACkZJREFUznYyxsIOHDgwbPbs2Yd9lVPTtPj58+fvnj9//tP1lLO6pfUtj1ND+MUz0EePrDbI6YdEeh24QaHr2gnqzQfGiJt+tZ+BEhC8qqoqMyYm5jFVVc/OioiOjsaQIUOwa9euKwEkSMuC19SrdckX5jopIizy5XlG7q81Fmb69OndGWNTjA6UnHMUFRXB5XLpL+xinDvlriPgK56ACiBi4cKFuyZNmjQmOTk5bsSIESN++OGHA/JmqDbVeVPjEuhOfScBJHfp0uUPAP4oG9ViefwZyLUiAERceOGFpwE8JaOFxkPMCNnVHgSEtIj1iYmJeQ7AXxoq59ChQwsBPG0q525TOZtb3x1xwSyCIEKTZkW3DJgF4ocfftg1ZsyYQ4qiDDMPY+Tm5ia4XK5HADyB830hvBDOcJUyP/owh0eKAK/J+vA0TGsheDwe5OXl6f+WQJjLmxPtMtSpL54AA1BdW1tbdebMmcUREREP3XrrrQN/+OGHi2SP9xTON6k3OS6B1+tdZ7FYZsXGxt4yffp0z5IlS96CGCYpMdSzC0DNfffd91sAqKysPCGvY0+IBafaAysBzOnateuUqVOnahkZGe/4KueDDz7obzk7YhwIvadiXOCnj7zf/O7BNMBpub1ObqP8PE73HTHnI9DpdVTqu65A4CJJmtP3N1iar4iWzU0PzTxve6s3f8vXrIibARMQx48fry0rK3uva9euL6qqejbdmJgYXH311WzTpk3TnE7nPGmC4SYrhFu+gM+zbBj/mTFjxh8YYw8Zg0dxzlFcXIwTJ07ov98vXxZOdA5fCH3qYHVubu4/k5KSHkhJSUmIjIzsXVVV1R/C2ajFfhCvvPLKrx9//PFbbTZbz7vvvnvaLbfccmVhYeE7qqquycvL233VVVf1j4mJuUZRlPsYYxdqmuZZtmzZYggHwnbTo963b98T/fv3v91ms/WcNWvWHenp6WMKCgr+Y7Vas/Py8vaNGzeub3R09BhFUR5hjF3IOfd89NFHH0DMfOnsloPPAphWeYDTLA9CHgmiUxPIWRjedevWLZwyZcp94eHhg4wrZcbHx2Ps2LG9Nm3atMzpdN4qVRlvSCyYkeLhScZYhNn6YFrxMwfC1ByooFXtBe2vf/1r7qhRo/4XExNzza233tpv8eLFgyAiKxbrP2pKXAIASE1NjQCgbdiwwR0XFzf1jjvuyIiNje0ZHx+fGB8f/yyAZ4cNG2a2VtR88803by1fvlyfSlsAMbMh5HnsscdcaWlpU+68886M2NjYXj179kzq2bPn8wCev/jii88r56ZNm/6VlZVl9VXO5ta3WVD7k47p2GCv1qn3XMinoGMR7Osa6PRD5T5sb/UWEAK5qh8HUJmfnz/P6XRWGANC6SJi3LhxlyQmJq6LiIjoDT9jNEyfPr37jBkzXmaMPWEWD16vF3l5ecbZF4cB7EPLYh+0ZzzFxcVvAsANN9zQG2L2S28Ix9TmchWA4QBily9fvmv69OnTlyxZsu7w4cNlFRUVLo/H4wXAPR6Pu6am5lReXt6mRx999M/PP/+8ArEa6EkpYk63l0rMysraPX369J8uWrRozaFDh86Wk3N+tpyHDx/+4uGHH37xxRdfDDOV81QLT6/Xdxya7kR59lpRO0gQRLAJdKAlC4DkoUOH/nro0KH3RUZGnrO0MeccHo8HRUVFpUVFRX/s0aPHe5999tkZcyJpaWmKnKr5DGNsCoC+5jUvvF4vDh48iJycHH1XJYAP5ed7+X/ALRAOh2M+gDmyx/clgE8g4i00OmTicDj0ldQWpKamJsve4r8gVin1NTYeDmAMgPvk/29CTBes8XE97RDm9NsgfEU+h5gBUATgJwBmQwwrnIJ/a5O4IBwDsyGcXLsDuAxipcqhUpzojn/cIEz1KbrfyPweRTOGUtqgvvX7uKXljJANenPre4UUxKUArgfwsB/pGI/dRq83giCCSaAjUXoBFO3du3dZbW1t8iWXXDIpMjJSNQ5nWK1W9OrVK7ZHjx6vVFdXP3fzzTc7rFbreqvVusZiscQzxiZzzn/CGLscQPf6wlXXIx5qURc46QiC6P+Qmpr6lMPhmGNo3HtAOGTV+nvO1NTUH2VjUIp6AmyZ0GSDoS/GYnTmq88K5IaYOaBPi62VDR2X59sjf6ui6eP1Xojhoa0QwyJDIRYu6yXrwCLPVyyvw24InxR9HZT2UN+BKqfuHNyS+tYM17wl6RAEQYS8gOCyZ3fo8OHDSzVNixkxYsRYo4jQhYTFYkFMTEw05/w2zvk0TdPcnHMwxmyMMfha5qIe8eCCMB1vlpaHItTvkBkoNAALAMxxOByjAHyTmpp6AcSsj3qjLTocjp/pvWh57EgIb/19EM5dDTUIHtlIrZD/H22kfHrj9zVEFDWnrJNaiNkpyyHM4/4OX+mxCXS/FX2KbZXctxUiNkKYTNMj74ES2cBWomVTalu7vhGgcurXrSX1rVuZ/L1uxjgSBEEQQYUFKU07xPj7uN69e//isssuuyoyMlJVlOa7XOjDH3l5efjuu+/M4mE9AAdEAKkyBNf/QQXQ0+FwmGMaLEhNTc2GWLzKDUAzNWR6b3gugEmyEVsMYA3E+Lm3kXNaDA2T149roMqP3hhy2fhY0PSxdW8952UyvfrWHdHkxxuA3nJb1DcCVE61hfWtW0uako4XreNESRAECYigoECYm5MBjO3Spcu0AQMGjEtOTo4IDw9HQxYGX8KhuLgYe/fuxbFjx3yJh53wveJnoOssHGIlyp85HI6H/DkoNTV1FkSo7kGyN5wDYBHEipI1oNj6VN8EQRAkIM4XEQBSY2JixvTu3Ts+MTFRiY6OhtVqhS+rhMvlQm1tLYqKipCXl6fHeQDqhkl2Qczpbk3xYOxZ9oBwbrwWwGCHw7HH3PuVveQdEEtBDwTQRVpI9su8b0bnnTFC9U0QBEEColER0RtiqeKJAC5hjPW2Wq3RCQkJamRk5Hl50DQNR48ehcvl0te3AIQ5t1Y2APoCTZ+1gXjQsQLoBqA/gAsBpBgarQrURbCLkj3gMpnvHAiHuEMQY+xuug2pvgmCIEhA1C8i7BBrYQyDcGi7BEA/1HnU21H/+K6+VkYNhLNaAYQj3DYIp7aDCL7PQ2M94zAI57Y+smEbCRHSWDEIn5Myv3sgHOtKpBiinjDVN0EQBAmIRs5jg/Biv0D2HIdIEZEge5aRJhHB5Uu/VFodjkKYovfLRqFICotQaBSMDVuiLKexQdNXoqSGjOqbIAiCBEQzzqVIIREFoCtEsJ4esgcZi7rFtPSGoFr2Jk9DmJ+LpKBw4tyAPqHUsNXnLU+e8VTfBEEQJCACcE59mqFV9iQj5dZsgXBDzMOvQd2CW/4EAiIIgiAIooMJiPrEhG6dMMPlh0QDQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRBEB+T/AxdM6ZrzZ4qfAAAAAElFTkSuQmCC\",\njt.Configurator={applyConfig:function(){function a(){for(var a,b=(window.location.search||\"\").split(\"+\").join(\" \"),c=/[?&]?([^=]+)=([^&]*)/g,d={};a=c.exec(b);){var e=decodeURIComponent(a[1]).trim().toUpperCase();e=jt.Configurator.abbreviations[e]||e,d[e]=decodeURIComponent(a[2]).trim()}return d}function b(){Javatari.AUTO_POWER_ON_DELAY|=0,Javatari.CARTRIDGE_CHANGE_DISABLED=Javatari.CARTRIDGE_CHANGE_DISABLED===!0||\"true\"==Javatari.CARTRIDGE_CHANGE_DISABLED,Javatari.SCREEN_RESIZE_DISABLED=Javatari.SCREEN_RESIZE_DISABLED===!0||\"true\"==Javatari.SCREEN_RESIZE_DISABLED,Javatari.SCREEN_FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE|=0,Javatari.SCREEN_FILTER_MODE|=0,Javatari.SCREEN_CRT_MODE|=0,Javatari.SCREEN_DEFAULT_SCALE=parseFloat(Javatari.SCREEN_DEFAULT_SCALE),Javatari.SCREEN_DEFAULT_ASPECT=parseFloat(Javatari.SCREEN_DEFAULT_ASPECT),Javatari.SCREEN_CANVAS_SIZE=0|Javatari.SCREEN_CANVAS_SIZE,Javatari.SCREEN_CONTROL_BAR|=0,Javatari.SCREEN_FORCE_HOST_NATIVE_FPS|=0,Javatari.SCREEN_VSYNCH_MODE|=0,Javatari.AUDIO_MONITOR_BUFFER_BASE|=0,Javatari.AUDIO_MONITOR_BUFFER_SIZE|=0,Javatari.AUDIO_SIGNAL_BUFFER_RATIO=parseFloat(Javatari.AUDIO_SIGNAL_BUFFER_RATIO),Javatari.AUDIO_SIGNAL_ADD_FRAMES|=0}var c={};Javatari.ALLOW_URL_PARAMETERS&&(c=a(),c.PRESETS&&(this.applyParam(\"PRESETS\",c.PRESETS),delete c.PRESETS)),c.RESET&&this.applyReset(),this.applyPresets(Javatari.PRESETS);for(var d in c)this.applyParam(d,c[d]);b()},applyPresets:function(a){for(var b=(a||\"\").trim().toUpperCase().split(\",\"),c=0;c<b.length;c++)this.applyPreset(b[c].trim())},applyPreset:function(a){if(a){var b=Javatari.PRESETS_CONFIG[a];if(b){jt.Util.log(\"Applying preset: \"+a);for(var c in b){var d=c.trim().toUpperCase();\"_\"!==d[0]?this.applyParam(d,b[c]):\"_INCLUDE\"===d&&this.applyPresets(b[c])}}else jt.Util.warning('Preset \"'+a+'\" not found, skipping...')}},applyParam:function(a,b){if(a.indexOf(\".\")<0)Javatari[a]=b;else{for(var c=Javatari,d=a.split(\".\"),e=0;e<d.length-1;++e)c=c[d[e]];c[d[d.length-1]]=b}},mediaURLSpecs:function(){var a=jt.FileLoader.OPEN_TYPE;return[Javatari.AUTODETECT_URL&&{url:Javatari.AUTODETECT_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO,0,!0,!1)}},Javatari.CARTRIDGE_URL&&{url:Javatari.CARTRIDGE_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,0,!0,!1,Javatari.CARTRIDGE_FORMAT)}}]},applyReset:function(){jt.Util.warning(\"Removing all data saved on this client\");for(var a in localStorage)0===a.indexOf(\"javatari\")&&delete localStorage[a]},abbreviations:{P:\"PRESETS\",PRESET:\"PRESETS\",ROM:\"CARTRIDGE_URL\",CART:\"CARTRIDGE_URL\",FORMAT:\"CARTRIDGE_FORMAT\",ROM_FORMAT:\"CARTRIDGE_FORMAT\",CART_FORMAT:\"CARTRIDGE_FORMAT\",ANY:\"AUTODETECT_URL\",AUTO:\"AUTODETECT_URL\",AUTODETECT:\"AUTODETECT_URL\",STATE:\"STATE_URL\",SAVESTATE:\"STATE_URL\",VERSION:\"VERSION_CHANGE_ATTEMPTED\"}},Javatari.start=function(a){\"use strict\";if(delete Javatari.start,delete Javatari.preLoadImagesAndStart,Javatari.userPreferences.load(),!Javatari.screenElement&&(Javatari.screenElement=document.getElementById(Javatari.SCREEN_ELEMENT_ID),!Javatari.screenElement))throw new Error('Javatari cannot be started. HTML document is missing screen element with id \"'+Javatari.SCREEN_ELEMENT_ID+'\"');if(jt.Configurator.applyConfig(),void 0===a&&(a=Javatari.AUTO_POWER_ON_DELAY>=0),Javatari.room=new jt.Room(Javatari.screenElement,a),Javatari.room.powerOn(),jt.Util.log(\"version \"+Javatari.VERSION+\" started\"),jt.CartridgeDatabase.uncompress(),Javatari.STATE_URL)new jt.MultiDownloader([{url:Javatari.STATE_URL}],function(a){Javatari.room.start(function(){Javatari.room.fileLoader.loadFromContent(a[0].url,a[0].content,jt.FileLoader.OPEN_TYPE.STATE,0,!1)})}).start();else{var b=jt.Configurator.mediaURLSpecs();new jt.MultiDownloader(b,function(){Javatari.room.start()}).start()}Javatari.shutdown=function(){Javatari.room&&Javatari.room.powerOff(),jt.Util.log(\"shutdown\")}},Javatari.preLoadImagesAndStart=function(){function a(a){Javatari.start&&Javatari.AUTO_START&&(a||b&&0===c)&&Javatari.start()}var b=!1,c=jt.Images.embedded?0:jt.Images.count;if(document.addEventListener(\"DOMContentLoaded\",function(){b=!0,a(!1)}),c>0)for(var d in jt.Images.urls){var e=new Image;e.src=jt.Images.urls[d],e.onload=function(){c--,a(!1)}}window.addEventListener(\"load\",function(){a(!0)})},window.applicationCache&&(window.applicationCache.status===window.applicationCache.UPDATEREADY?onUpdateReady():window.applicationCache.addEventListener(\"updateready\",onUpdateReady)),Javatari.VERSION=\"4.0.1\",Javatari.preLoadImagesAndStart();\n        </script>\n\n        <div id=\"topbar\">\n            <div class=\"container\">\n                <a id=\"logo\" style=\"background-image: url('data:image/png;base64,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');\" href=\"http://javatari.org\" title=\"The online Atari 2600 emulator\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,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');\" href=\"https://github.com/ppeccin/javatari.js\" title=\"Project Homepage on GitHub\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEBElEQVRoQ+1Z0VEbMRDVHj+2pJlABSEVhFSAU0GgAuwKgAoIHZgKQioIVBCoIFAB0AGZOfn48W3mOTrP2dbppOOMPYw14y/vrfbtW612VyTe2aJ3hkdsAK07oxuGNgx5PMDM28aYb0KIPfsTRPQshLhj5mut9V2sA1cScgAyGo2OmfmEiLY9Rj8mSTLodrs3Lpk0TY+I6JNS6nvx/wKgLMt28zw/U0oNYr0TIm/1/yoYCflGCHFZ2JOm6R4RgdW+EGKXmb+UmVwAlKbpkIiOiehUSjkM3DBIzIbYQw0rVboQfmBztxBg5gut9Un5gwVAxpg/hfeYeaC1vgyyNkCorDtAvE7kXkrZs2duKusCxGVNzDzUWp/Waa/7P03TPhH9qJML+Z+Zb5VSBy8vL9t5nh8x807B1AwgG59gaH5dSSkH894I2byQMcY8lMMl5ts5B0+yIKLIhu4MUzOA7IHFxq71yMyHTVKpx1FNcU2+Y+a/QoieNykYY2ZCbn5HhKBS6jyGLWMM0urZq6xf/PiJmQ/mHew6Q49CiI++zZn5mYiGUsqLEGBLAORMCLDZBSjYmwCGO0II8dMXim0DSpLka9VlW3WxVp0jH3E4Y1dEdCOlvC0zt1JAsLglAwDwEcBwoRJRr60zFMVQKc0iNX5uy4g29QQDQnoVQhxtbW1ddDqdZ2MMQmi/TWPa0KWUqiyqfRdrETKthUobYKAjGJA9P957qC2jmupB2aO1rnSyK21fCSFQnq/lclXYZUNdabuX5/nvtUTz36hDpRSc7lzOw5Wm6c06JgMgkFLu+KoTJyAUqePx+I6IPqwZU9doG3w2VaY/m8LB1NqACmk4vUMSy9TlOoQfWgWttW+gMiEuaOqTZRkSBXr3VWa/8/J0JyopFMKj0eiEmSflDzNjOFF0iW96tMCOUmo3pFWpC7l1SeFB7ASFHOq5FYfak5QSkYHeq3bVniE75UTl7e1ia3dqKOCrrF0qawHhIzvkAFNvCqquzGkMyCYFzKPRbr9VprtXSqGdiVpBDJU1WraQwlHxLoWxmKw2jzYakAMcBu/TeXOUOx3CrllbjM7GgIwxmLNNnzFiNq2SfS2YoLRd3rx41ymeMtoAUdJROWuL2aeWIVvP7WNqg0llw6cQr03IZihrQu8an7IpIPs6MDnkzDxpca3x0ZkmwqNPSZL0q4aGEXqmovPD+t54PIanljrpwVmxo2Q8rgVVAKHgnCFnjEEThSe/tu+cJwDpdrtoSVoFUgD2niEkgSzL+nmeAyDqqSbN3j0z49H3sslTTCgzQYDmldkuFsDwWItma+F8YbYN7xPRXafTQRu/FCaqgNZmuVgPrVp+A2jVDNTtv2GozkOr/v/dMfQPssXcRMVCr4wAAAAASUVORK5CYII=');\" href=\"https://twitter.com/intent/tweet?source=http%3A%2F%2Fjavatari.org&text=:%20http%3A%2F%2Fjavatari.org&via=ppeccin\" target=\"_blank\" title=\"Tweet\" onclick=\"window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20'  + encodeURIComponent(document.URL)); return false;\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACj0lEQVRoQ+2a0W3bMBCG7/QmkUDTCdoNmkxQZ4IiE7SdoOkEzQZ1N0gnaDeIO0GdCZpMkBYQpTf9BQ1ZkBRRJGVTsA3qwYBN8sjv/hPPEo/pxC524SnL8q1Lv9B90jT9ZZvDCFQUxScAH4jo3GZk5vY1gKWU8vvQvM+A8jw/Z+YfRPR65oX6TvcA4EpKuW4P7ABpGCK6Y+YzX+v76A/AHlLMTfgD+EtEl22oDpBS6s+Myjwy87KqqlXfy2POUUqh174WQlxsf2uAiqK4BvB1H54eswHgX5IkN1mWLafMNQBEAD5KKW+1vQZIKfU79AagYYho4aNIH3oIiIgaldpAfSmnOHB0DDN/nqrM1rABiIQQG5bNR1mWi6qq7vZO0DX4KITYeec0AQG40MrPBgTgm5TyelenmYCSJLlM03Q1GxARXQkhfp4MUJZlL5lZ5w3jBeCs/oeyMHVi5sG22RXa3rSWHKMVfDdFxUMFmpzYDxVocuqIQFPiuj3G8R6KCm2dFjTk9GOAlNK49e6idp7nT0OPN0cJVOeppyGHHCXQ2H/OowRSSt0Q0ZeTUUgppR/i3p8MUJ7nK269U2iDHWvIGfNUUKChkIiJ1TNZRYU8Hfaseww5Tw/GkPN0WAw57QHTKyoXZ8aQc/HSWJ+4y3l6MIacp8PiLhd3uV4MxHvo0O+hzoHXrvHrAhs6D3WOJGsgXcDwxmVxU/oEBroXQmwqXmY71g8JNHisX6v0QESvpihgGxMQqFGno5D+UpfG6FdFL2wL9G0HsLKNMR03msYN1T2Yipf00WAQpWxQHu33ulpstHipbawuldHlZcE2Co/Ft7tqEF1etimF6V+uBYBBjkZ8gXQdgm2ME5DNyCG1/wfy83xTvpURYAAAAABJRU5ErkJggg==');\" href=\"https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fjavatari.org&t=\" title=\"Share on Facebook\" target=\"_blank\" onclick=\"window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;\"></a>\n                <div id=\"desc\">\n                    <span>The online Atari 2600 emulator</span>\n                </div>\n            </div>\n        </div>\n\n        <div id=\"keywords\" style=\"display: none;\">\n            Javatari - The online Atari 2600 emulator,\n            Play Atari 2600 games online in your browser,\n            Javascript HTML5 Atari 2600 Emulator,\n            Javatari.js, Javatari.thml, javatari.js, javatari.thml,\n            ROM, ROMS,\n            Touch Screen, Mobile, Tablet, Android, iPhone, iPad, iPod, iOS,\n            App, offline, add to home screen\n        </div>\n\n        <div id=\"javatari\" class=\"container\">\n            <div id=\"javatari-screen\"></div>\n        </div>\n\n        <div id=\"info-thin\" class=\"info container\">\n            Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <div id=\"info-wide\" class=\"info container\">\n            Drag & Drop or Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <button id=\"donate\" onclick=\"donate();\">DONATE!</button>\n\n        <div id=\"footer-space\"></div>\n        <div id=\"footer\">\n            <div class=\"container\">\n                <script>Javatari.PROXY_DOWNLOADER = \"http://webmsx.herokuapp.com/proxy-remote-download?url=\";</script>\n                <p>Created by <a href=\"http://twitter.com/ppeccin\" target=\"_blank\">Paulo A. Peccin</a></p>\n                <p>v4.0.1 &nbsp;<a href=\"https://github.com/ppeccin/javatari.js\" target=\"_blank\">Docs & Project Homepage</a></p>\n            </div>\n        </div>\n\n    </body>\n\n</html>"
  },
  {
    "path": "release/stable/4.0/standalone/manifest.webapp",
    "content": "{\n  \"name\": \"Javatari\",\n  \"description\": \"Javatari - The online Atari 2600 emulator\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#000\",\n  \"theme_color\": \"#363636\",\n  \"icons\": [{\n    \"src\": \"images/logo-icon192.png\",\n    \"sizes\": \"192x192\",\n    \"type\": \"image/png\"\n  }, {\n    \"src\": \"images/logo-icon512.png\",\n    \"sizes\": \"512x512\",\n    \"type\": \"image/png\"\n  }]\n}\n"
  },
  {
    "path": "release/stable/5.0/embedded/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n\n    </head>\n\n    <body>\n\n        <div id=\"javatari\" style=\"text-align: center; margin: 20px auto 0; padding: 0 10px;\">\n            <div id=\"javatari-screen\" style=\"box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\"></div>\n        </div>\n\n        <script src=\"javatari.js\"></script>\n\n    </body>\n\n</html>"
  },
  {
    "path": "release/stable/5.0/embedded/javatari.js",
    "content": "// Javatari version 5.0.4\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Main Emulator parameters.\n// May be overridden dynamically by URL query parameters, if ALLOW_URL_PARAMETERS = true.\n\nJavatari = {\n\n    PRESETS:                        \"\",                         // Configuration Presets to apply. See Presets Configuration\n\n    // Full or relative URL of Media files to load\n    CARTRIDGE_URL:                  \"\",\n    AUTODETECT_URL:                 \"\",\n    STATE_URL:                      \"\",\n\n    // Forcing ROM formats\n    CARTRIDGE_FORMAT:               \"\",                         // 4K, F8, F4, FE, AR, etc...\n\n    // NetPlay\n    NETPLAY_JOIN:                   \"\",                         // Join NetPlay! Session automatically\n    NETPLAY_NICK:                   \"\",                         // NetPlay! Nickname\n\n    // General configuration\n    AUTO_START:                     true,\n    AUTO_POWER_ON_DELAY:            1200,                       // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON\n    CARTRIDGE_SHOW_RECENT:          true,\n    CARTRIDGE_CHANGE_DISABLED:      false,\n    CARTRIDGE_LABEL_COLORS:         \"\",                         // Space-separated colors for Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n    SCREEN_RESIZE_DISABLED:         false,\n    SCREEN_CONSOLE_PANEL_DISABLED:  false,\n    SCREEN_ELEMENT_ID:              \"javatari-screen\",\n    CONSOLE_PANEL_ELEMENT_ID:       -1,                         // -1: auto. Don't change! :-)\n    SCREEN_FULLSCREEN_MODE:         -1,                         // -2: disabled; -1: auto; 0: off; 1: on\n    SCREEN_CRT_MODE:                0,                          // -1: auto; 0: off; 1: on\n    SCREEN_FILTER_MODE:             -3,                         // -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level\n    SCREEN_DEFAULT_SCALE:           -1,                         // -1: auto; 0.5..N in 0.1 steps: scale\n    SCREEN_DEFAULT_ASPECT:          1,                          // in 0.1 steps\n    SCREEN_CANVAS_SIZE:             2,                          // Internal canvas size factor. Don't change! :-)\n    SCREEN_CONTROL_BAR:             1,                          // 0: on hover; 1: always\n    SCREEN_FORCE_HOST_NATIVE_FPS:   -1,                         // -1: auto. Don't change! :-)\n    SCREEN_VSYNCH_MODE:             -2,                         // -2: user set (default on); -1: disabled; 0: off; 1: on\n    AUDIO_MONITOR_BUFFER_BASE:      -3,                         // -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n    AUDIO_MONITOR_BUFFER_SIZE:      -1,                         // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size.     More buffer = more delay. Don't change! :-)\n    AUDIO_SIGNAL_BUFFER_RATIO:      2,                          // Internal Audio Signal buffer based on Monitor buffer\n    AUDIO_SIGNAL_ADD_FRAMES:        3,                          // Additional frames in internal Audio Signal buffer based on Monitor buffer\n    PADDLES_MODE:                   -1,                         // -1: auto; 0: off; 1: on\n    TOUCH_MODE:                     -1,                         // -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n\n    IMAGES_PATH:                    window.JAVATARI_IMAGES_PATH || \"images/\",\n    PAGE_BACK_CSS:                  \"\",                         // CSS to modify page background color. Applied to the body element\n\n    SERVER_ADDRESS:                 \"webmsx.azurewebsites.net/\",\n    SERVER_KEEPALIVE:               0,\n\n    RESET:                          0,                          // if value = 1 clear all saved data on the client\n    ALLOW_URL_PARAMETERS:           true                        // Allows user to override any of these parameters via URL query parameters\n\n};\n\nJavatari.PRESETS_CONFIG = { };                                  // No built-in Presets for now\n\njt = window.jt || {};                                           // Namespace for all classes and objects\n\nfunction onUpdateReady(){alert(\"A new version is available!\\nJavatari will restart...\"),window.applicationCache.swapCache(),window.location.reload()}JavatariFullScreenSetup={apply:function(){if(!this.cssApplied){var a=document.createElement(\"style\");a.type=\"text/css\",a.innerHTML=this.css,document.head.appendChild(a),this.cssApplied=!0}document.documentElement.classList.toggle(\"jt-full-screen\",this.shouldStartInFullScreen())},shouldStartInFullScreen:function(){return window.Javatari?1===Javatari.SCREEN_FULLSCREEN_MODE||-1===Javatari.SCREEN_FULLSCREEN_MODE&&this.isBrowserStandaloneMode():this.isBrowserStandaloneMode()},isBrowserStandaloneMode:function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},css:\"html.jt-full-screen, html.jt-full-screen body {   background: black;}html.jt-full-screen .jt-full-screen-hidden {   display: none;}html:not(.jt-full-screen) .jt-full-screen-only {   display: none;}\"},JavatariFullScreenSetup.apply(),jt.Util=new function(){\"use strict\";function a(a,b){return a.name<b.name?-1:a.name>b.name?1:0}function b(a){return a.stopPropagation(),a.cancelable&&a.preventDefault(),!1}this.logs=[],this.log=function(a){var b=[\">> jt:\"];Array.prototype.push.apply(b,arguments),console.log.apply(console,b)},this.warning=function(a){var b=[\">> jt Warning:\"];Array.prototype.push.apply(b,arguments),console.warn.apply(console,b)},this.error=function(a){var b=[\">> jt Error:\"];Array.prototype.push.apply(b,arguments),console.error.apply(console,b)},this.message=function(a){console.info(a),alert(a)},this.asNormalArray=function(a){return a instanceof Array?a:this.arrayCopy(a,0,new Array(a.length))},this.arrayFill=function(a,b,c,d){if(a.fill)return a.fill(b,c,d);void 0===c&&(c=0);for(var e=(void 0===d?a.length:d)-1;e>=c;e-=1)a[e]=b;return a},this.arrayFillSegment=function(a,b,c,d){for(var e=c;e-- >b;)a[e]=d;return a},this.arrayCopy=function(a,b,c,d,e){d=d||0;for(var f=e?b+e:a.length;b<f;)c[d++]=a[b++];return c},this.arrayAdd=function(a,b){return a[a.length]=b,a},this.arrayRemoveAllElement=function(a,b){for(var c;(c=a.indexOf(b))>=0;)a.splice(c,1);return a},this.arraysConcatAll=function(a){for(var b=0,c=0;c<a.length;++c)b+=a[c].length;var d=new a[0].constructor(b),e=0;for(c=0;c<a.length;++c)this.arrayCopy(a[c],0,d,e),e+=a[c].length;return d},this.arrayRemove=function(a,b){var c=a.indexOf(b);c<0||a.splice(c,1)},this.arraysEqual=function(a,b){var c=a.length;if(c!==b.length)return!1;for(;c--;)if(a[c]!==b[c])return!1;return!0},this.reverseInt8=function(a){return(1&a)<<7|(2&a)<<5|(4&a)<<3|(8&a)<<1|(16&a)>>1|(32&a)>>3|(64&a)>>5|(128&a)>>7},this.int8BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e]);return d},this.byteStringToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0;e<c;e+=1)d[e]=255&a.charCodeAt(e);return d}},this.int32BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e])+String.fromCharCode(a[e]>>8&255)+String.fromCharCode(a[e]>>16&255)+String.fromCharCode(a[e]>>24&255);return d},this.byteStringToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length/4|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e<c;e+=1,f+=4)d[e]=255&a.charCodeAt(f)|(255&a.charCodeAt(f+1))<<8|(255&a.charCodeAt(f+2))<<16|(255&a.charCodeAt(f+3))<<24;return d}},this.storeInt8BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int8BitArrayToByteString(a))},this.restoreStringBase64ToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt8BitArray(atob(a),b)},this.compressInt8BitArrayToStringBase64=function(a,b){return null===a||void 0===a?a:0===a.length?\"\":b<a.length?this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a.slice(0,b))):this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToInt8BitArray=function(a,b,c){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){if(\"\"==a)return[];var d=JSZip.compressions.DEFLATE.uncompress(atob(a));return b&&(c||b.length===d.length)?this.arrayCopy(d,0,b):this.arrayCopy(d,0,new(b?b.constructor:Array)(d.length))}},this.storeInt32BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int32BitArrayToByteString(a))},this.restoreStringBase64ToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt32BitArray(atob(a),b)},this.compressStringToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?a:this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToString=function(a){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?a:this.int8BitArrayToByteString(JSZip.compressions.DEFLATE.uncompress(atob(a)))},this.toHex2=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();return a>=0&&b.length%2?\"0\"+b:b},this.toHex4=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();if(a<0)return b;switch(b.length){case 4:return b;case 3:return\"0\"+b;case 2:return\"00\"+b;case 1:return\"000\"+b;default:return b}},this.escapeHtml=function(a){return a.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#039;\").replace(/\\//g,\"&#047;\").replace(/\\?/g,\"&#063;\").replace(/\\-/g,\"&#045;\").replace(/\\|/g,\"&#0124;\")},this.arrayFind=function(a,b){if(a.find)return a.find(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return a[c]},this.arrayFindIndex=function(a,b){if(a.findIndex)return a.findIndex(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return c;return-1},this.arrayIndexOfSubArray=function(a,b,c,d){var e=b.length,f=a.length,g=d||1;a:for(var h=c;h>=0&&h<f;h+=g){for(var i=0;i<e;i+=1)if(a[h+i]!==b[i])continue a;return h}return-1},this.stringCountOccurrences=function(a,b){for(var c=0,d=0,e=a.length;d<e;++d)a[d]==b&&++c;return c},this.stringStartsWith=function(a,b){return a.startsWith?a.startsWith(b):a.substr(0,b.length)===b},this.stringEndsWith=function(a,b){return a.endsWith?a.endsWith(b):a.substr(a.length-b.length)===b},this.checkContentIsZIP=function(a){if(a&&80===a[0]&&75===a[1])try{return new JSZip(a)}catch(a){}return null},this.getZIPFilesSorted=function(b){var c=b.file(/.+/);return c.sort(a),c},this.checkContentIsGZIP=function(a){if(!a||31!==a[0]||139!==a[1]||8!==a[2])return null;try{var b=a[3],c=2&b,d=4&b,e=8&b,f=16&b,g=10;if(d){var h=a[g++]|a[g++]<<8;g+=h}if(e)for(;0!==a[g++];);if(f)for(;0!==a[g++];);return c&&(g+=2),JSZip.compressions.DEFLATE.uncompress(a.slice(g,a.length-8))}catch(a){return null}},this.leafFilename=function(a){return((a&&a.indexOf(\"/\")>=0?a.split(\"/\").pop():a)||\"\").trim()},this.leafFilenameNoExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?b:b.substr(0,c).trim()},this.leafFilenameOnlyExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?\"\":b.substr(c+1).trim()},this.dump=function(a,b,c,d){var e=\"\",f=b||0;d=d||1;for(var g=0;g<d;g++){for(var h=0;h<c;h++){var i=a[f++];e+=void 0!=i?i.toString(16,2)+\" \":\"? \"}e+=\"   \"}console.log(e)},this.browserInfo=function(){if(this.browserInfoAvailable)return this.browserInfoAvailable;var a,b=navigator.userAgent,c=b.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[]\n;if(/trident/i.test(c[1]))return a=/\\brv[ :]+(\\d+)/g.exec(b)||[],this.browserInfoAvailable={name:\"IE\",version:a[1]||\"\"};if(\"Chrome\"===c[1]&&null!=(a=b.match(/\\bOPR\\/(\\d+)/)))return this.browserInfoAvailable={name:\"OPERA\",version:a[1]};c=c[2]?[c[1],c[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!=(a=b.match(/version\\/(\\d+)/i))&&c.splice(1,1,a[1]);var d=c[0].toUpperCase();return this.browserInfoAvailable={name:this.isIOSDevice()||\"NETSCAPE\"===d?\"SAFARI\":d,version:c[1]}},this.userLanguage=function(){return(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage||\"en-US\").trim()},this.browserCurrentURL=function(){return window.location.origin+window.location.pathname},this.isOfficialHomepage=function(){var a=window.location;return a&&\"javatari.org\"===a.hostname.toLowerCase()&&(\"\"===a.port||\"80\"===a.port)},this.isTouchDevice=function(){return\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},this.isMobileDevice=function(){return this.isTouchDevice()&&/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)},this.isIOSDevice=function(){return/ipad|iphone|ipod/i.test(navigator.userAgent)},this.isBrowserStandaloneMode=function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},this.onTapOrMouseDown=function(a,b){this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",b)},this.onTapOrMouseDownWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",d)},this.onTapOrMouseUpWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mouseup\":\"mouseup\",d)},this.onTapOrMouseDownWithBlockUIG=function(a,c){function d(a){if(\"touchend\"===a.type&&!a.target.jtNeedsUIG)return b(a);var d=\"touchstart\"===a.type&&a.target.jtNeedsUIG,e=\"touchend\"===a.type;return c(a,d,e),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart touchend mousedown\":\"mousedown\",d)},this.blockEvent=b,this.addEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.addEventListener(b[e],c,d)},this.removeEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.removeEventListener(b[e],c,d)},this.insertCSS=function(a){var b=document.createElement(\"style\");b.type=\"text/css\",b.innerHTML=a,document.head.appendChild(b)},this.scaleToFitParentHeight=function(a,b,c){var d=b.clientHeight-c-20,e=a.clientHeight,f=e<d?1:d/e;a.style.transform=\"translateY(-\"+(c/2|0)+\"px) scale(\"+f.toFixed(4)+\")\"},this.scaleToFitParentWidth=function(a,b,c){var d=b.clientWidth-(2*c|0),e=a.clientWidth,f=e<d?1:d/e,g=e*f|0,h=Math.floor((d-g)/2+c);a.style.left=h+\"px\",a.style.right=\"initial\",a.style.transform=\"scale(\"+f.toFixed(4)+\")\"},this.log2=function(a){return Math.log(a)/Math.log(2)},this.exp2=function(a){return Math.pow(2,a)},this.performanceNow=function(){return this.performanceNow.startOffset?Date.now()-this.performanceNow.startOffset:window.performance.now()}},window.performance&&window.performance.now||(jt.Util.performanceNow.startOffset=Date.now()),jt.MD5=function(a){\"use strict\";function b(a){var b=(a>>>0).toString(16);return\"00000000\".substr(0,8-b.length)+b}function c(a){for(var b=[],c=0;c<8;c++)b.push(255&a),a>>>=8;return b}function d(a,b){return a<<b&4294967295|a>>>32-b}function e(a,b,c){return a&b|~a&c}function f(a,b,c){return c&a|~c&b}function g(a,b,c){return a^b^c}function h(a,b,c){return b^(a|~c)}function i(a,b){return a[b+3]<<24|a[b+2]<<16|a[b+1]<<8|a[b]}function j(a){for(var b=[],c=0;c<a.length;c++)if(a.charCodeAt(c)<=127)b.push(a.charCodeAt(c));else for(var d=encodeURIComponent(a.charAt(c)).substr(1).split(\"%\"),e=0;e<d.length;e++)b.push(parseInt(d[e],16));return b}function k(a,c,d,e){for(var f=\"\",g=0,h=0,i=3;i>=0;i--)h=arguments[i],g=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=h,f+=b(g);return f}function l(a){for(var b=new Array(a.length),c=0;c<a.length;c++)b[c]=a[c];return b}function m(a,b){return 4294967295&a+b}var n=null,o=null;return\"string\"==typeof a?n=j(a):a.constructor==Array?0===a.length?n=a:\"string\"==typeof a[0]?n=function(a){for(var b=[],c=0;c<a.length;c++)b=b.concat(j(a[c]));return b}(a):\"number\"==typeof a[0]?n=a:o=typeof a[0]:\"undefined\"!=typeof ArrayBuffer?a instanceof ArrayBuffer?n=l(new Uint8Array(a)):a instanceof Uint8Array||a instanceof Int8Array?n=l(a):a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array||a instanceof Float32Array||a instanceof Float64Array?n=l(new Uint8Array(a.buffer)):o=typeof a:o=typeof a,o&&alert(\"MD5 type mismatch, cannot process \"+o),function(){function a(a,b,c,e){var f=v;v=u,u=t,t=m(t,d(m(s,m(a,m(b,c))),e)),s=f}var b=n.length;n.push(128);var j=n.length%64;if(j>56){for(var l=0;l<64-j;l++)n.push(0);j=n.length%64}for(l=0;l<56-j;l++)n.push(0);n=n.concat(c(8*b));var o=1732584193,p=4023233417,q=2562383102,r=271733878,s=0,t=0,u=0,v=0;for(l=0;l<n.length/64;l++){s=o,t=p,u=q,v=r;var w=64*l;a(e(t,u,v),3614090360,i(n,w),7),a(e(t,u,v),3905402710,i(n,w+4),12),a(e(t,u,v),606105819,i(n,w+8),17),a(e(t,u,v),3250441966,i(n,w+12),22),a(e(t,u,v),4118548399,i(n,w+16),7),a(e(t,u,v),1200080426,i(n,w+20),12),a(e(t,u,v),2821735955,i(n,w+24),17),a(e(t,u,v),4249261313,i(n,w+28),22),a(e(t,u,v),1770035416,i(n,w+32),7),a(e(t,u,v),2336552879,i(n,w+36),12),a(e(t,u,v),4294925233,i(n,w+40),17),a(e(t,u,v),2304563134,i(n,w+44),22),a(e(t,u,v),1804603682,i(n,w+48),7),a(e(t,u,v),4254626195,i(n,w+52),12),a(e(t,u,v),2792965006,i(n,w+56),17),a(e(t,u,v),1236535329,i(n,w+60),22),a(f(t,u,v),4129170786,i(n,w+4),5),a(f(t,u,v),3225465664,i(n,w+24),9),a(f(t,u,v),643717713,i(n,w+44),14),a(f(t,u,v),3921069994,i(n,w),20),a(f(t,u,v),3593408605,i(n,w+20),5),a(f(t,u,v),38016083,i(n,w+40),9),a(f(t,u,v),3634488961,i(n,w+60),14),a(f(t,u,v),3889429448,i(n,w+16),20),a(f(t,u,v),568446438,i(n,w+36),5),a(f(t,u,v),3275163606,i(n,w+56),9),a(f(t,u,v),4107603335,i(n,w+12),14),a(f(t,u,v),1163531501,i(n,w+32),20),a(f(t,u,v),2850285829,i(n,w+52),5),a(f(t,u,v),4243563512,i(n,w+8),9),a(f(t,u,v),1735328473,i(n,w+28),14),a(f(t,u,v),2368359562,i(n,w+48),20),a(g(t,u,v),4294588738,i(n,w+20),4),a(g(t,u,v),2272392833,i(n,w+32),11),a(g(t,u,v),1839030562,i(n,w+44),16),a(g(t,u,v),4259657740,i(n,w+56),23),a(g(t,u,v),2763975236,i(n,w+4),4),a(g(t,u,v),1272893353,i(n,w+16),11),a(g(t,u,v),4139469664,i(n,w+28),16),a(g(t,u,v),3200236656,i(n,w+40),23),a(g(t,u,v),681279174,i(n,w+52),4),a(g(t,u,v),3936430074,i(n,w),11),a(g(t,u,v),3572445317,i(n,w+12),16),a(g(t,u,v),76029189,i(n,w+24),23),a(g(t,u,v),3654602809,i(n,w+36),4),a(g(t,u,v),3873151461,i(n,w+48),11),a(g(t,u,v),530742520,i(n,w+60),16),a(g(t,u,v),3299628645,i(n,w+8),23),a(h(t,u,v),4096336452,i(n,w),6),a(h(t,u,v),1126891415,i(n,w+28),10),a(h(t,u,v),2878612391,i(n,w+56),15),a(h(t,u,v),4237533241,i(n,w+20),21),a(h(t,u,v),1700485571,i(n,w+48),6),a(h(t,u,v),2399980690,i(n,w+12),10),a(h(t,u,v),4293915773,i(n,w+40),15),a(h(t,u,v),2240044497,i(n,w+4),21),a(h(t,u,v),1873313359,i(n,w+32),6),a(h(t,u,v),4264355552,i(n,w+60),10),a(h(t,u,v),2734768916,i(n,w+24),15),a(h(t,u,v),1309151649,i(n,w+52),21),a(h(t,u,v),4149444226,i(n,w+16),6),a(h(t,u,v),3174756917,i(n,w+44),10),a(h(t,u,v),718787259,i(n,w+8),15),a(h(t,u,v),3951481745,i(n,w+36),21),o=m(o,s),p=m(p,t),q=m(q,u),r=m(r,v)}return k(r,q,p,o).toUpperCase()}()},function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={\nexports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c||a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\0\\0\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(void 0===a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);void 0===b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date(1980+(a>>25&127),(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\0\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}\n}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a);return\"string\"===d.getTypeOf(b)?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||void 0===b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&void 0===c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},!0!==a.base64||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||void 0===b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&!0!==c.optimizedBinaryString&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=void 0!==b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";return w+=\"\\n\\0\",w+=p||q?\"\\0\\b\":\"\\0\\0\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2),{fileRecord:f.LOCAL_FILE_HEADER+w+m+t,dirRecord:f.CENTRAL_FILE_HEADER+\"\u0014\\0\"+w+s(o.length,2)+\"\\0\\0\\0\\0\"+(!0===j?\"\u0010\\0\\0\\0\":\"\\0\\0\\0\\0\")+s(g,4)+m+t+o,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={\nappend:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=void 0!==a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(a){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;e.append(b),c.blob=0===e.getBlob(\"application/zip\").size}catch(a){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(128>(e=a[b++]))i[c++]=e;else if((f=g[e])>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length;f>c;){var g=j(a,Math.min(c+65536,f));b.push(k(e.uint8array?a.subarray(c,g):a.slice(c,g))),c=g}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(a){h=!1}if(!h){for(var i=\"\",k=0;k<a.length;k++)i+=String.fromCharCode(a[k]);return i}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(c){try{var b=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,d=new b;return d.append(a),d.getBlob(\"application/zip\")}catch(a){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b);return k[d][a](b)},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){if(!h[a.toLowerCase()])throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),\nthis.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44;d>0;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,-1===(a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR)))throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(null===(b=e.findCompression(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=!!(16&this.externalFileAttributes)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new l(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=function(a){this.options=h.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(0!==c)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};l.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?4:0,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{\nif(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),1!==(c=g.deflate(e,d))&&0!==c)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&4===d)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&1!==c);return 4!==d||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,0===c)},l.prototype.onData=function(a){this.chunks.push(a)},l.prototype.onEnd=function(a){0===a&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=l,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0==(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),(c=f.inflate(l,i.Z_NO_FLUSH))!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(128>(f=a[c++]))j[e++]=f;else if((g=h[f])>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do{e=e+b[d++]|0,f=f+e|0}while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(a,b,c,e){var f=d,g=e+c;a^=-1;for(var h=e;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var d=function(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}();b.exports=c},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ha?a.strstart-(a.w_size-ha):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ga,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do{if(c=b,\nj[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do{}while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ga-(m-f),f=m-ga,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}}while((b=l[b&k])>i&&0!=--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ha)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do{d=a.head[--b],a.head[b]=d>=g?d-g:0}while(--c);c=g,b=c;do{d=a.prev[--b],a.prev[b]=d>=g?d-g:0}while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=fa)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+fa-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<fa)););}while(a.lookahead<ha&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return qa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return qa;if(a.strstart-a.block_start>=a.w_size-ha&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):(a.strstart>a.block_start&&(h(a,!1),a.strm.avail_out),qa)}function o(a,b){for(var c,d;;){if(a.lookahead<ha){if(m(a),a.lookahead<ha&&b===H)return qa;if(0===a.lookahead)break}if(c=0,a.lookahead>=fa&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-ha&&(a.match_length=l(a,c)),a.match_length>=fa)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-fa),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=fa){a.match_length--;do{a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart}while(0!=--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=a.strstart<fa-1?a.strstart:fa-1,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function p(a,b){for(var c,d,e;;){if(a.lookahead<ha){if(m(a),a.lookahead<ha&&b===H)return qa;if(0===a.lookahead)break}if(c=0,a.lookahead>=fa&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=fa-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-ha&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===fa&&a.strstart-a.match_start>4096)&&(a.match_length=fa-1)),a.prev_length>=fa&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-fa,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-fa),a.lookahead-=a.prev_length-1,a.prev_length-=2;do{++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart)}while(0!=--a.prev_length);if(a.match_available=0,a.match_length=fa-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return qa}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return qa}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<fa-1?a.strstart:fa-1,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ga){if(m(a),a.lookahead<=ga&&b===H)return qa;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=fa&&a.strstart>0&&(e=a.strstart-1,(d=g[e])===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ga;do{}while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ga-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=fa?(c=D._tr_tally(a,1,a.match_length-fa),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return qa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=fa-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*da),this.dyn_dtree=new C.Buf16(2*(2*ba+1)),this.bl_tree=new C.Buf16(2*(2*ca+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ea+1),this.heap=new C.Buf16(2*aa+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*aa+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?ja:oa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+fa-1)/fa),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}\nfunction y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===pa&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===ja)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ka):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,ua),h.status=oa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ia),m+=31-m%31,h.status=oa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ka)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=la)}else h.status=la;if(h.status===la)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ma)}else h.status=ma;if(h.status===ma)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=na)}else h.status=na;if(h.status===na&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=oa)):h.status=oa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===pa&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==pa){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===sa||o===ta)&&(h.status=pa),o===qa||o===sa)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ra&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==ja&&b!==ka&&b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa?d(a,O):(a.state=null,b===oa?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=286,ba=30,ca=19,da=2*aa+1,ea=15,fa=3,ga=258,ha=ga+fa+1,ia=32,ja=42,ka=69,la=73,ma=91,na=103,oa=113,pa=666,qa=1,ra=2,sa=3,ta=4,ua=3,va=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new va(0,0,0,0,n),new va(4,4,8,4,o),new va(4,5,16,8,o),new va(4,6,32,32,o),new va(4,4,16,16,p),new va(8,16,32,32,p),new va(8,16,128,128,p),new va(8,32,128,256,p),new va(32,128,258,1024,p),new va(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";b.exports=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A;c=a.state,d=a.next_in,z=a.input,e=d+(a.avail_in-5),f=a.next_out,A=a.output,g=f-(b-a.avail_out),h=f+(a.avail_out-257),i=c.dmax,j=c.wsize,k=c.whave,l=c.wnext,m=c.window,n=c.hold,o=c.bits,p=c.lencode,q=c.distcode,r=(1<<c.lenbits)-1,s=(1<<c.distbits)-1;a:do{15>o&&(n+=z[d++]<<o,o+=8,n+=z[d++]<<o,o+=8),t=p[n&r];b:for(;;){if(u=t>>>24,n>>>=u,o-=u,0===(u=t>>>16&255))A[f++]=65535&t;else{if(!(16&u)){if(0==(64&u)){t=p[(65535&t)+(n&(1<<u)-1)];continue b}if(32&u){c.mode=12;break a}a.msg=\"invalid literal/length code\",c.mode=30;break a}v=65535&t,u&=15,u&&(u>o&&(n+=z[d++]<<o,o+=8),v+=n&(1<<u)-1,n>>>=u,o-=u),15>o&&(n+=z[d++]<<o,o+=8,n+=z[d++]<<o,o+=8),t=q[n&s];c:for(;;){if(u=t>>>24,n>>>=u,o-=u,!(16&(u=t>>>16&255))){if(0==(64&u)){t=q[(65535&t)+(n&(1<<u)-1)];continue c}a.msg=\"invalid distance code\",c.mode=30;break a}if(w=65535&t,u&=15,u>o&&(n+=z[d++]<<o,o+=8,u>o&&(n+=z[d++]<<o,o+=8)),(w+=n&(1<<u)-1)>i){a.msg=\"invalid distance too far back\",c.mode=30;break a}if(n>>>=u,o-=u,u=f-g,w>u){if((u=w-u)>k&&c.sane){a.msg=\"invalid distance too far back\",c.mode=30;break a}if(x=0,y=m,0===l){if(x+=j-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}else if(u>l){if(x+=j+l-u,u-=l,v>u){v-=u;do{A[f++]=m[x++]}while(--u);if(x=0,v>l){u=l,v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}}else if(x+=l-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}for(;v>2;)A[f++]=y[x++],A[f++]=y[x++],A[f++]=y[x++],v-=3;v&&(A[f++]=y[x++],v>1&&(A[f++]=y[x++]))}else{x=f-w;do{A[f++]=A[x++],A[f++]=A[x++],A[f++]=A[x++],v-=3}while(v>2);v&&(A[f++]=A[x++],v>1&&(A[f++]=A[x++]))}break}}break}}while(e>d&&h>f);v=o>>3,d-=v,o-=v<<3,n&=(1<<o)-1,a.next_in=d,a.next_out=f,a.avail_in=e>d?e-d+5:5-(d-e),a.avail_out=h>f?h-f+257:257-(f-h),c.hold=n,c.bits=o}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=1+(b>>4),48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}\nfunction j(a){return i(a,qa)}function k(a){if(ra){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),ra=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa=0,Ba=new r.Buf8(4),Ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xa=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=la;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(m>>>=4,n-=4,wa=8+(15&m),0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg=\"invalid window size\",c.mode=la;break}c.dmax=1<<wa,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=la;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=la;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!=(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=257+(31&m),m>>>=5,n-=5,c.ndist=1+(31&m),m>>>=5,n-=5,c.ncode=4+(15&m),m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Ca[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid code lengths set\",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have<c.nlen+c.ndist;){for(;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qa,n-=qa,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid literal/lengths set\",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg=\"invalid distances set\",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(ra&&0==(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.lencode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg=\"invalid literal/length code\",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<<c.distbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0==(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.distcode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg=\"invalid distance code\",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,\nm>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if((q=c.offset-q)>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do{f[h++]=pa[oa++]}while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=la;break}m=0,n=0}c.mode=ja;case ja:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=la;break}m=0,n=0}c.mode=ka;case ka:xa=D;break a;case la:xa=G;break a;case ma:return H;case na:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<la&&(c.mode<ia||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=ma,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===ba||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xa===C&&(xa=I),xa)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0==(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,aa=19,ba=20,ca=21,da=22,ea=23,fa=24,ga=25,ha=26,ia=27,ja=28,ka=29,la=30,ma=31,na=32,oa=852,pa=592,qa=15,ra=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],f=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],g=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],h=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,i,j,k,l,m,n){var o,p,q,r,s,t,u,v,w,x=n.bits,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=null,J=0,K=new c.Buf16(16),L=new c.Buf16(16),M=null,N=0;for(y=0;d>=y;y++)K[y]=0;for(z=0;j>z;z++)K[b[i+z]]++;for(C=x,B=d;B>=1&&0===K[B];B--);if(C>B&&(C=B),0===B)return k[l++]=20971520,k[l++]=20971520,n.bits=1,0;for(A=1;B>A&&0===K[A];A++);for(A>C&&(C=A),F=1,y=1;d>=y;y++)if(F<<=1,0>(F-=K[y]))return-1;if(F>0&&(0===a||1!==B))return-1;for(L[1]=0,y=1;d>y;y++)L[y+1]=L[y]+K[y];for(z=0;j>z;z++)0!==b[i+z]&&(m[L[b[i+z]]++]=z);if(0===a?(I=M=m,t=19):1===a?(I=e,J-=257,M=f,N-=257,t=256):(I=g,M=h,t=-1),H=0,z=0,y=A,s=l,D=C,E=0,q=-1,G=1<<C,r=G-1,1===a&&G>852||2===a&&G>592)return 1;for(var O=0;;){O++,u=y-E,m[z]<t?(v=0,w=m[z]):m[z]>t?(v=M[N+m[z]],w=I[J+m[z]]):(v=96,w=0),o=1<<y-E,p=1<<D,A=p;do{p-=o,k[s+(H>>E)+p]=u<<24|v<<16|w|0}while(0!==p);for(o=1<<y-1;H&o;)o>>=1;if(0!==o?(H&=o-1,H+=o):H=0,z++,0==--K[y]){if(y===B)break;y=b[i+m[z]]}if(y>C&&(H&r)!==q){for(0===E&&(E=C),s+=A,D=y-E,F=1<<D;B>D+E&&!(0>=(F-=K[D+E]));)D++,F<<=1;if(G+=1<<D,1===a&&G>852||2===a&&G>592)return 1;q=H&r,k[q]=C<<24|D<<16|s-l|0}}return 0!==H&&(k[s+H]=y-E<<24|64<<16|0),n.bits=C,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?da[a]:da[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>T-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>T-a.bi_valid,a.bi_valid+=c-T):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do{c|=1&a,a>>>=1,c<<=1}while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;S>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;R>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)(e=a.heap[--c])>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(S+1),g=0;for(d=1;S>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(S+1);for(c=0,d=0;M-1>d;d++)for(fa[d]=c,a=0;a<1<<Z[d];a++)ea[c++]=d;for(ea[c-1]=d,e=0,d=0;16>d;d++)for(ga[d]=e,a=0;a<1<<$[d];a++)da[e++]=d;for(e>>=7;P>d;d++)for(ga[d]=e<<7,a=0;a<1<<$[d]-7;a++)da[256+e++]=d;for(b=0;S>=b;b++)f[b]=0;for(a=0;143>=a;)ba[2*a+1]=8,a++,f[8]++;for(;255>=a;)ba[2*a+1]=9,a++,f[9]++;for(;279>=a;)ba[2*a+1]=7,a++,f[7]++;for(;287>=a;)ba[2*a+1]=8,a++,f[8]++;for(l(ba,O+1,f),a=0;P>a;a++)ca[2*a+1]=5,ca[2*a]=i(a,5);ha=new ka(ba,Z,N+1,O,S),ia=new ka(ca,$,0,P,S),ja=new ka(new Array(0),_,0,Q,U)}function n(a){var b;for(b=0;O>b;b++)a.dyn_ltree[2*b]=0;for(b=0;P>b;b++)a.dyn_dtree[2*b]=0;for(b=0;Q>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*V]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do{d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=ea[f],h(a,i+N+1,b),j=Z[i],0!==j&&(f-=fa[i],g(a,f,j)),d--,i=e(d),h(a,i,c),0!==(j=$[i])&&(d-=ga[i],g(a,d,j)))}while(k<a.last_lit);h(a,V,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=R,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do{c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1)}while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),\nl(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*W]++):10>=h?a.bl_tree[2*X]++:a.bl_tree[2*Y]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j)do{h(a,e,a.bl_tree)}while(0!=--j);else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,W,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,X,a.bl_tree),g(a,j-3,3)):(h(a,Y,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=Q-1;b>=3&&0===a.bl_tree[2*aa[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*aa[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;N>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){ma||(m(),ma=!0),a.l_desc=new la(a.dyn_ltree,ha),a.d_desc=new la(a.dyn_dtree,ia),a.bl_desc=new la(a.bl_tree,ja),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,V,ba),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ba,ca)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ea[c]+N+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=29,N=256,O=N+1+M,P=30,Q=19,R=2*O+1,S=15,T=16,U=7,V=256,W=16,X=17,Y=18,Z=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],$=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],aa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ba=new Array(2*(O+2));d(ba);var ca=new Array(2*P);d(ca);var da=new Array(512);d(da);var ea=new Array(256);d(ea);var fa=new Array(M);d(fa);var ga=new Array(P);d(ga);var ha,ia,ja,ka=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},la=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},ma=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),jt.EmbeddedFiles={get:function(a){var b=this.compressedContent[a];if(void 0!==b)return{name:a,content:jt.Util.uncompressStringBase64ToInt8BitArray(b)};var c=this.diffsContent[a];if(void 0!==c){var d=this.get(c.based);if(void 0!==d){var e=d.content;for(var f in c.diffs)for(var g=c.diffs[f],h=0;h<g.length;++h)e[(0|f)+h]=g[h];return{name:a,content:e}}}},embedFileCompressedContent:function(a,b){this.compressedContent[a]=b},embedFileDiff:function(a,b){this.diffsContent[a]=b},compressedContent:{},diffsContent:{}},jt.MultiDownloader=function(a,b,c,d){\"use strict\";function e(a){if(a){var b=a.url.trim().split(/\\s*\\|\\s*/);a.filesToLoad=b.length,a.filesContent=new Array(a.filesToLoad);for(var c=0;c<b.length;++c){var d=b[c];\"@\"===d[0]?f(a,c,d):g(a,c,d)}}}function f(a,b,c){jt.Util.log(\"Reading Embedded file: \"+c);var d=jt.EmbeddedFiles.get(c.substr(1));void 0!==d?h(a,b,d.content):i(a,\"Embedded file not found!\")}function g(a,b,c,e){var f=k(c)?l(c):c,g=new XMLHttpRequest;g.open(\"GET\",f,!0),g.responseType=\"arraybuffer\",g.timeout=void 0!==d?d:s,g.onload=function(){200!==g.status&&0!==g.status||!g.response?g.onerror():h(a,b,new Uint8Array(g.response))},g.onerror=g.ontimeout=function(){i(a,g.status+\" \"+g.statusText)},jt.Util.log(\"Reading file from: \"+c),g.send()}function h(a,b,c){a.filesContent[b]=c,--a.filesToLoad>0||(a.success=!0,a.content=jt.Util.arraysConcatAll(a.filesContent),a.onSuccess&&a.onSuccess(a),j())}function i(a,b){a.success=!1,a.error=b;var d=\"Could not load file: \"+a.url+\"\\nError: \"+b;a.onError?(jt.Util.error(d),a.onError(a)):c||jt.Util.message(d),j()}function j(){if(!q){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(q=!0,n(),d=0;d<a.length;d++)if(a[d]&&!a[d].success)return void(c&&c(a));b&&b(a)}}function k(a){return a&&(0===a.indexOf(\"http:\")||0===a.indexOf(\"https:\"))}function l(a){return Javatari.PROXY_SERVER_ADDRESS?\"https://\"+Javatari.PROXY_SERVER_ADDRESS+\"/proxy-remote-download?url=\"+a:a}function m(){Javatari.room.isLoading||(p=window.setTimeout(function(){p=null,o=!0,Javatari.room.setLoading(!0)},r))}function n(){p&&(window.clearTimeout(p),p=null),o&&(o=!1,Javatari.room.setLoading(!1))}this.start=function(){if(a&&0!==a.length){m();for(var b=0;b<a.length;b++)e(a[b])}j()};var o=!1,p=null,q=!1,r=1e3,s=15e3},jt.MultiFileReader=function(a,b,c,d){\"use strict\";function e(a){if(a){jt.Util.log(\"Reading file: \"+a.name);var b=new FileReader;b.onload=function(b){a.success=!0,a.content=new Uint8Array(b.target.result),f()},b.onerror=function(b){a.success=!1,a.error=b.target.error.name,f()},b.readAsArrayBuffer(a)}}function f(){if(!g){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(g=!0,d=0;d<a.length;d++)if(a[d]&&!a[d].success)return c&&c(a,a[d].error),a;b&&b(a)}}this.start=function(){if(a&&0!==a.length){d||(d=h);for(var g=0,i=0;i<a.length;i++)g+=a[i].size;if(g>d){var j=\"Maximum total size limit exceeded: \"+(d/1024|0)+\"KB\";return void(c&&c(a,j,!0))}for(i=0;i<a.length;i++)e(a[i]);f()}else b(a)};var g=!1,h=5898240},jt.VideoStandard={NTSC:{name:\"NTSC\",desc:\"NTSC 60Hz\",totalWidth:228,totalHeight:262,defaultOriginYPct:10.8,defaultHeightPct:85.2,targetFPS:60,pulldowns:{60:{standard:\"NTSC\",frequency:60,divider:1,cadence:[1],steps:1},120:{standard:\"NTSC\",frequency:120,divider:2,cadence:[1],steps:1},\"120s\":{standard:\"NTSC\",frequency:120,divider:1,cadence:[0,1],steps:2},50:{standard:\"NTSC\",frequency:50,divider:1,cadence:[1,1,1,1,2],steps:5},100:{standard:\"NTSC\",frequency:100,divider:2,cadence:[1,1,1,1,2],steps:5},\"100s\":{standard:\"NTSC\",frequency:100,divider:1,cadence:[0,1,0,1,1,0,1,0,1,1],steps:10},TIMER:{standard:\"NTSC\",frequency:62.5,divider:1,cadence:[1],steps:1}}},PAL:{name:\"PAL\",desc:\"PAL 50Hz\",totalWidth:228,totalHeight:312,defaultOriginYPct:13.5,defaultHeightPct:77.3,targetFPS:50,pulldowns:{50:{standard:\"PAL\",frequency:50,divider:1,cadence:[1],steps:1},100:{standard:\"PAL\",frequency:100,divider:2,cadence:[1],steps:1},\"100s\":{standard:\"PAL\",frequency:100,divider:1,cadence:[0,1],steps:2},60:{standard:\"PAL\",frequency:60,divider:1,cadence:[0,1,1,1,1,1],steps:6},120:{standard:\"PAL\",frequency:120,divider:2,cadence:[0,1,1,1,1,1],steps:6},\"120s\":{standard:\"PAL\",frequency:120,divider:1,cadence:[0,0,1,0,1,0,0,1,0,1,0,1],steps:12},TIMER:{standard:\"PAL\",frequency:50,divider:1,cadence:[1],steps:1}}}},jt.VideoSignal=function(){\"use strict\";this.connectMonitor=function(a){this.monitor=a},this.setVideoStandard=function(a){this.monitor&&this.monitor.setVideoStandard(a)},this.nextLine=function(a,b){return this.monitor.nextLine(a,b)},this.finishFrame=function(){this.monitor.refresh()},this.signalOff=function(){\nthis.monitor&&this.monitor.videoSignalOff()},this.showOSD=function(a,b,c){this.monitor&&this.monitor.showOSD(a,b,c)},this.toggleShowInfo=function(){this.monitor.toggleShowInfo()},this.monitor=null},jt.AudioSignal=function(a,b,c,d){\"use strict\";function e(){if(n>0){if(p<=0)return void(n=0);g(),--n,--p}}function f(){var a=s*Javatari.AUDIO_SIGNAL_BUFFER_RATIO+k*Javatari.AUDIO_SIGNAL_ADD_FRAMES|0;r.length=a,a>o&&jt.Util.arrayFill(r,0,o,a),o=a,t.bufferSize=o,q=o-2,j.flush()}function g(){r[l]=b.nextSample()*d,++l>=o&&(l=0)}function h(){r[l]=0,++l>=o&&(l=0)}function i(a,b){if(b)for(var c=a;c>0;c-=1)h();else for(var d=a;d>0;d-=1)g();p-=a}var j=this;this.flush=function(){l=0,m=0,p=q},this.setFps=function(a){k=c/a|0,f()},this.audioFinishFrame=function(){if(n>0)for(;n>0;)e();n=k},this.retrieveSamples=function(a,b){var c=q-p,d=a-c;d>0&&(d>p&&(d=p),i(d,b)),t.start=m;var e=c+d;return p+=e,m+=e,m>=o&&(m-=o),t},this.audioClockPulse=e,this.getSampleRate=function(){return c},this.toString=function(){return\"AudioSignal \"+a},this.setAudioMonitorBufferSize=function(a){s=a,f()},this.name=a;var k,l=0,m=0,n=0,o=0,p=0,q=0,r=jt.Util.arrayFill(new Array(o),0),s=0,t={buffer:r,bufferSize:o,start:0}},jt.M6502=function(){\"use strict\";function a(){return[ja,function(){Ta(\"KIL/HLT/JAM\")},function(){X--}]}function b(a){return a(function(){Ta(\"NOP/DOP\")})}function c(a){return a(function(){if(T){var a=Z,b=(15&O)+(15&a)+W;b>9&&(b+=6);var c=(O>>4)+(a>>4)+(b>15)<<4;Ka(O+a+W&255),La(c),Ma((O^c)&~(O^a)&128),c>159&&(c+=96),Na(c>255),O=255&(c|15&b)}else{var d=O+Z+W;Na(d>255),Ma((O^d)&(Z^d)&128),O=255&d,Ka(O),La(O)}})}function d(a){return a(function(){O&=Z,Ka(O),La(O)})}function e(a){return a(function(){var a=Z;Ka(O&a),Ma(64&a),La(a)})}function f(a){return a(function(){var a=O-Z&255;Na(O>=Z),Ka(a),La(a)})}function g(a){return a(function(){var a=P-Z&255;Na(P>=Z),Ka(a),La(a)})}function h(a){return a(function(){var a=Q-Z&255;Na(Q>=Z),Ka(a),La(a)})}function i(a){return a(function(){O^=Z,Ka(O),La(O)})}function j(a){return a(function(){O=Z,Ka(O),La(O)})}function k(a){return a(function(){P=Z,Ka(P),La(P)})}function l(a){return a(function(){Q=Z,Ka(Q),La(Q)})}function m(a){return a(function(){O|=Z,Ka(O),La(O)})}function n(a){return a(function(){if(T){var a=Z,b=(15&O)-(15&a)-(1-W),c=(O>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=O-a-(1-W);Na(256&~d),Ma((O^a)&(O^d)&128),Ka(255&d),La(d),O=255&(c<<4|15&b)}else a=255&~Z,d=O+a+W,Na(d>255),Ma((O^d)&(a^d)&128),O=255&d,Ka(O),La(O)})}function o(a){return a(function(){Ta(\"ANC\"),O&=Z,Ka(O),R=W=128&O?1:0})}function p(a){return a(function(){Ta(\"LAX\");var a=Z;O=a,P=a,Ka(a),La(a)})}function q(a){return a(function(){Z=O})}function r(a){return a(function(){Z=P})}function s(a){return a(function(){Z=Q})}function t(a){return a(function(){Ta(\"SAX\"),Z=O&P})}function u(a){return a(function(){Ta(\"SHA\"),Z=O&P&1+(_>>>8)&255})}function v(a){return a(function(){Na(Z>127);var a=Z<<1&255;Z=a,Ka(a),La(a)})}function w(a){return a(function(){var a=Z-1&255;Z=a,Ka(a),La(a)})}function x(a){return a(function(){var a=Z+1&255;Z=a,Ka(a),La(a)})}function y(a){return a(function(){W=1&Z,Z>>>=1,Ka(Z),R=0})}function z(a){return a(function(){var a=Z>127,b=255&(Z<<1|W);Z=b,Na(a),Ka(b),La(b)})}function A(a){return a(function(){var a=1&Z,b=Z>>>1|W<<7;Z=b,Na(a),Ka(b),La(b)})}function B(a){return a(function(){Ta(\"DCP\");var a=Z-1&255;Z=a,a=O-a,Na(a>=0),Ka(a),La(a)})}function C(a){return a(function(){if(Ta(\"ISB\"),Z=Z+1&255,T){var a=Z,b=(15&O)-(15&a)-(1-W),c=(O>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=O-a-(1-W);Na(256&~d),Ma((O^a)&(O^d)&128),Ka(255&d),La(d),O=255&(c<<4|15&b)}else a=255&~Z,d=O+a+W,Na(d>255),Ma((O^d)&(a^d)&128),O=255&d,Ka(O),La(O)})}function D(a){return a(function(){Ta(\"RLA\");var a=Z,b=W;Na(128&a),a=255&(a<<1|b),Z=a,O&=a,Ka(a),La(a)})}function E(a){return a(function(){Ta(\"RRA\");var a=Z,b=W?128:0;if(Na(1&a),a=a>>>1|b,Z=a,T){var c=Z,d=(15&O)+(15&c)+W;d>9&&(d+=6);var e=(O>>4)+(c>>4)+(d>15)<<4;Ka(O+c+W&255),La(e),Ma((O^e)&~(O^c)&128),e>159&&(e+=96),Na(e>255),O=255&(e|15&d)}else{var f=O+Z+W;Na(f>255),Ma((O^f)&(Z^f)&128),O=255&f,Ka(O),La(O)}})}function F(a){return a(function(){Ta(\"SLO\");var a=Z;Na(128&a),a=a<<1&255,Z=a,a|=O,O=a,Ka(a),La(a)})}function G(a){return a(function(){Ta(\"SRE\");var a=Z;Na(1&a),a>>>=1,Z=a,a=255&(O^a),O=a,Ka(a),La(a)})}function H(a,b){var c;return c=a===ha?function(){return V===b}:a===ga?function(){return R===b}:a===ia?function(){return W===b}:function(){return S===b},[ja,na,function(){c()?(ma(),Ia()):ka()},function(){da?(ma(),Ja()):ka()},ka]}var I=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){L&&(X++,K[X]())},this.connectBus=function(a){J=a},this.setRDY=function(a){L=a},this.reset=function(){U=1,X=-1,Y=-1,K=la,M=J.read(ea)|J.read(ea+1)<<8,this.setRDY(!0)};var J,K,L=!1,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=-1,Y=-1,Z=0,$=0,_=0,aa=!1,ba=0,ca=0,da=0,ea=65532,fa=65534,ga=7,ha=1,ia=0;this.debug=!1,this.trace=!1;var ja=function(){Y=J.read(M),K=nb[Y],X=0,M++},ka=ja,la=[ja],ma=function(){J.read(M)},na=function(){ca=J.read(M),M++},oa=function(){$=J.read(M),M++},pa=function(){$|=J.read(M)<<8,M++},qa=function(){$=J.read(_)},ra=function(){$|=J.read(_)<<8},sa=function(){_=J.read(M),M++},ta=function(){_|=J.read(M)<<8,M++},ua=function(){_=J.read(ba)},va=function(){_|=J.read(ba)<<8},wa=function(){var a=(255&_)+P;aa=a>255,_=65280&_|255&a},xa=function(){var a=(255&_)+Q;aa=a>255,_=65280&_|255&a},ya=function(){var a=1+(255&_);aa=a>255,_=65280&_|255&a},za=function(){aa&&(_=_+256&65535)},Aa=function(){ba=J.read(M),M++},Ba=function(){ba|=J.read(M)<<8,M++},Ca=function(){ba=65280&ba|255&1+(255&ba)},Da=function(){Z=J.read(M),M++},Ea=function(){Z=J.read($)},Fa=function(){Z=J.read(_)},Ga=function(){J.write($,Z)},Ha=function(){J.write(_,Z)},Ia=function(){var a=255&M,b=a+ca&255;da=ca>127?b>a?-256:0:b<a?256:0,M=65280&M|b},Ja=function(){M=M+da&65535},Ka=function(a){V=0===a?1:0},La=function(a){R=128&a?1:0},Ma=function(a){S=a?1:0},Na=function(a){W=a?1:0},Oa=function(){return N=N+1&255,J.read(256+N)},Pa=function(){return J.read(256+N)},Qa=function(a){J.write(256+N,a),N=N-1&255},Ra=function(){return R<<7|S<<6|48|T<<3|U<<2|V<<1|W},Sa=function(a){R=a>>>7,S=a>>>6&1,T=a>>>3&1,U=a>>>2&1,V=a>>>1&1,W=1&a},Ta=function(a){I.debug&&I.breakpoint(\"Illegal Opcode: \"+a)},Ua=function(a){return[ja,ma,function(){a(),ka()}]},Va=function(a){return[ja,Da,function(){a(),ka()}]},Wa=function(a){return[ja,oa,Ea,function(){a(),ka()}]},Xa=function(a){return[ja,oa,pa,Ea,function(){a(),ka()}]},Ya=function(a){return[ja,sa,Fa,function(){wa(),qa()},function(){ya(),ra()},Ea,function(){a(),ka()}]},Za=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,ta,function(){b(),Fa(),za()},function(){aa?Fa():(a(),ka())},function(){a(),ka()}]}},$a=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,Fa,function(){b(),Fa()},function(){a(),ka()}]}},_a=function(a){return[ja,Aa,ua,function(){Ca(),va()},function(){xa(),Fa(),za()},function(){aa?Fa():(a(),ka())},function(){a(),ka()}]},ab=function(a){return[ja,oa,function(){a(),Ga()},ka]},bb=function(a){return[ja,oa,pa,function(){a(),Ga()},ka]},cb=function(a){return[ja,sa,Fa,function(){wa(),qa()},function(){ya(),ra()},function(){a(),Ga()},ka]},db=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,ta,function(){b(),Fa(),za()},function(){a(),Ha()},ka]}},eb=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,Fa,function(){b(),a(),Ha()},ka]}},fb=function(a){return[ja,Aa,ua,function(){Ca(),va()},function(){xa(),Fa(),za()},function(){a(),Ha()},ka]},gb=function(a){return[ja,oa,Ea,Ga,function(){a(),Ga()},ka]},hb=function(a){return[ja,oa,pa,Ea,Ga,function(){a(),Ga()},ka]},ib=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,Fa,function(){b(),Fa()},Ha,function(){a(),Ha()},ka]}},jb=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,ta,function(){b(),Fa(),za()},Fa,Ha,function(){a(),Ha()},ka]}\n},kb=function(a){return[ja,sa,Fa,function(){wa(),qa()},function(){ya(),ra()},Ea,Ga,function(){a(),Ga()},ka]},lb=function(a){return[ja,Aa,ua,function(){Ca(),va()},function(){xa(),Fa(),za()},Fa,Ha,function(){a(),Ha()},ka]},mb=new Array(256),nb=new Array(256);mb[0]=\"BRK\",nb[0]=function(){return[ja,Da,function(){I.debug&&I.breakpoint(\"BRK \"+Z),Qa(M>>>8&255)},function(){Qa(255&M)},function(){Qa(Ra())},function(){$=J.read(fa)},function(){$|=J.read(fa+1)<<8},function(){M=$,ka()}]}(),mb[1]=\"ORA\",nb[1]=m(Ya),mb[2]=\"uKIL\",nb[2]=a(),mb[3]=\"uSLO\",nb[3]=F(kb),mb[4]=\"uNOP\",nb[4]=b(Wa),mb[5]=\"ORA\",nb[5]=m(Wa),mb[6]=\"ASL\",nb[6]=v(gb),mb[7]=\"uSLO\",nb[7]=F(gb),mb[8]=\"PHP\",nb[8]=function(){return[ja,ma,function(){Qa(Ra())},ka]}(),mb[9]=\"ORA\",nb[9]=m(Va),mb[10]=\"ASL\",nb[10]=function(){return Ua(function(){Na(O>127),O=O<<1&255,Ka(O),La(O)})}(),mb[11]=\"uANC\",nb[11]=o(Va),mb[12]=\"uNOP\",nb[12]=b(Xa),mb[13]=\"ORA\",nb[13]=m(Xa),mb[14]=\"ASL\",nb[14]=v(hb),mb[15]=\"uSLO\",nb[15]=F(hb),mb[16]=\"BPL\",nb[16]=H(ga,0),mb[17]=\"ORA\",nb[17]=m(_a),mb[18]=\"uKIL\",nb[18]=a(),mb[19]=\"uSLO\",nb[19]=F(lb),mb[20]=\"uNOP\",nb[20]=b($a(0)),mb[21]=\"ORA\",nb[21]=m($a(0)),mb[22]=\"ASL\",nb[22]=v(ib(0)),mb[23]=\"uSLO\",nb[23]=F(ib(0)),mb[24]=\"CLC\",nb[24]=function(){return Ua(function(){W=0})}(),mb[25]=\"ORA\",nb[25]=m(Za(1)),mb[26]=\"uNOP\",nb[26]=b(Ua),mb[27]=\"uSLO\",nb[27]=F(jb(1)),mb[28]=\"uNOP\",nb[28]=b(Za(0)),mb[29]=\"ORA\",nb[29]=m(Za(0)),mb[30]=\"ASL\",nb[30]=v(jb(0)),mb[31]=\"uSLO\",nb[31]=F(jb(0)),mb[32]=\"JSR\",nb[32]=function(){return[ja,oa,Pa,function(){Qa(M>>>8&255)},function(){Qa(255&M)},pa,function(){M=$,ka()}]}(),mb[33]=\"AND\",nb[33]=d(Ya),mb[34]=\"uKIL\",nb[34]=a(),mb[35]=\"uRLA\",nb[35]=D(kb),mb[36]=\"BIT\",nb[36]=e(Wa),mb[37]=\"AND\",nb[37]=d(Wa),mb[38]=\"ROL\",nb[38]=z(gb),mb[39]=\"uRLA\",nb[39]=D(gb),mb[40]=\"PLP\",nb[40]=function(){return[ja,ma,Pa,function(){Sa(Oa())},ka]}(),mb[41]=\"AND\",nb[41]=d(Va),mb[42]=\"ROL\",nb[42]=function(){return Ua(function(){var a=O>127;O=255&(O<<1|W),Na(a),Ka(O),La(O)})}(),mb[43]=\"uANC\",nb[43]=o(Va),mb[44]=\"BIT\",nb[44]=e(Xa),mb[45]=\"AND\",nb[45]=d(Xa),mb[46]=\"ROL\",nb[46]=z(hb),mb[47]=\"uRLA\",nb[47]=D(hb),mb[48]=\"BMI\",nb[48]=H(ga,1),mb[49]=\"AND\",nb[49]=d(_a),mb[50]=\"uKIL\",nb[50]=a(),mb[51]=\"uRLA\",nb[51]=D(lb),mb[52]=\"uNOP\",nb[52]=b($a(0)),mb[53]=\"AND\",nb[53]=d($a(0)),mb[54]=\"ROL\",nb[54]=z(ib(0)),mb[55]=\"uRLA\",nb[55]=D(ib(0)),mb[56]=\"SEC\",nb[56]=function(){return Ua(function(){W=1})}(),mb[57]=\"AND\",nb[57]=d(Za(1)),mb[58]=\"uNOP\",nb[58]=b(Ua),mb[59]=\"uRLA\",nb[59]=D(jb(1)),mb[60]=\"uNOP\",nb[60]=b(Za(0)),mb[61]=\"AND\",nb[61]=d(Za(0)),mb[62]=\"ROL\",nb[62]=z(jb(0)),mb[63]=\"uRLA\",nb[63]=D(jb(0)),mb[64]=\"RTI\",nb[64]=function(){return[ja,ma,Pa,function(){Sa(Oa())},function(){$=Oa()},function(){$|=Oa()<<8},function(){M=$,ka()}]}(),mb[65]=\"EOR\",nb[65]=i(Ya),mb[66]=\"uKIL\",nb[66]=a(),mb[67]=\"uSRE\",nb[67]=G(kb),mb[68]=\"uNOP\",nb[68]=b(Wa),mb[69]=\"EOR\",nb[69]=i(Wa),mb[70]=\"LSR\",nb[70]=y(gb),mb[71]=\"uSRE\",nb[71]=G(gb),mb[72]=\"PHA\",nb[72]=function(){return[ja,ma,function(){Qa(O)},ka]}(),mb[73]=\"EOR\",nb[73]=i(Va),mb[74]=\"LSR\",nb[74]=function(){return Ua(function(){W=1&O,O>>>=1,Ka(O),R=0})}(),mb[75]=\"uASR\",nb[75]=function(a){return a(function(){Ta(\"ASR\");var a=O&Z;W=1&a,a>>>=1,O=a,Ka(a),R=0})}(Va),mb[76]=\"JMP\",nb[76]=function(){return[ja,oa,pa,function(){M=$,ka()}]}(),mb[77]=\"EOR\",nb[77]=i(Xa),mb[78]=\"LSR\",nb[78]=y(hb),mb[79]=\"uSRE\",nb[79]=G(hb),mb[80]=\"BVC\",nb[80]=H(6,0),mb[81]=\"EOR\",nb[81]=i(_a),mb[82]=\"uKIL\",nb[82]=a(),mb[83]=\"uSRE\",nb[83]=G(lb),mb[84]=\"uNOP\",nb[84]=b($a(0)),mb[85]=\"EOR\",nb[85]=i($a(0)),mb[86]=\"LSR\",nb[86]=y(ib(0)),mb[87]=\"uSRE\",nb[87]=G(ib(0)),mb[88]=\"CLI\",nb[88]=function(){return Ua(function(){U=0})}(),mb[89]=\"EOR\",nb[89]=i(Za(1)),mb[90]=\"uNOP\",nb[90]=b(Ua),mb[91]=\"uSRE\",nb[91]=G(jb(1)),mb[92]=\"uNOP\",nb[92]=b(Za(0)),mb[93]=\"EOR\",nb[93]=i(Za(0)),mb[94]=\"LSR\",nb[94]=y(jb(0)),mb[95]=\"uSRE\",nb[95]=G(jb(0)),mb[96]=\"RTS\",nb[96]=function(){return[ja,ma,Pa,function(){$=Oa()},function(){$|=Oa()<<8},function(){M=$,Da()},ka]}(),mb[97]=\"ADC\",nb[97]=c(Ya),mb[98]=\"uKIL\",nb[98]=a(),mb[99]=\"uRRA\",nb[99]=E(kb);mb[100]=\"uNOP\",nb[100]=b(Wa),mb[101]=\"ADC\",nb[101]=c(Wa),mb[102]=\"ROR\",nb[102]=A(gb),mb[103]=\"uRRA\",nb[103]=E(gb),mb[104]=\"PLA\",nb[104]=function(){return[ja,ma,Pa,function(){O=Oa(),Ka(O),La(O)},ka]}(),mb[105]=\"ADC\",nb[105]=c(Va),mb[106]=\"ROR\",nb[106]=function(){return Ua(function(){var a=1&O;O=O>>>1|W<<7,Na(a),Ka(O),La(O)})}(),mb[107]=\"uARR\",nb[107]=function(a){return a(function(){Ta(\"ARR\");var a=O&Z;a=a>>>1|(W?128:0),O=a,Ka(a),La(a);var b=96&O;96==b?(W=1,S=0):0==b?(W=0,S=0):32==b?(W=0,S=1):64==b&&(W=1,S=1)})}(Va),mb[108]=\"JMP\",nb[108]=function(){return[ja,Aa,Ba,ua,function(){Ca(),va()},function(){M=_,ka()}]}(),mb[109]=\"ADC\",nb[109]=c(Xa),mb[110]=\"ROR\",nb[110]=A(hb),mb[111]=\"uRRA\",nb[111]=E(hb),mb[112]=\"BVS\",nb[112]=H(6,1),mb[113]=\"ADC\",nb[113]=c(_a),mb[114]=\"uKIL\",nb[114]=a(),mb[115]=\"uRRA\",nb[115]=E(lb),mb[116]=\"uNOP\",nb[116]=b($a(0)),mb[117]=\"ADC\",nb[117]=c($a(0)),mb[118]=\"ROR\",nb[118]=A(ib(0)),mb[119]=\"uRRA\",nb[119]=E(ib(0)),mb[120]=\"SEI\",nb[120]=function(){return Ua(function(){U=1})}(),mb[121]=\"ADC\",nb[121]=c(Za(1)),mb[122]=\"uNOP\",nb[122]=b(Ua),mb[123]=\"uRRA\",nb[123]=E(jb(1)),mb[124]=\"uNOP\",nb[124]=b(Za(0)),mb[125]=\"ADC\",nb[125]=c(Za(0)),mb[126]=\"ROR\",nb[126]=A(jb(0)),mb[127]=\"uRRA\",nb[127]=E(jb(0)),mb[128]=\"uNOP\",nb[128]=b(Va),mb[129]=\"STA\",nb[129]=q(cb),mb[130]=\"uNOP\",nb[130]=b(Va),mb[131]=\"uSAX\",nb[131]=t(cb),mb[132]=\"STY\",nb[132]=s(ab),mb[133]=\"STA\",nb[133]=q(ab),mb[134]=\"STX\",nb[134]=r(ab),mb[135]=\"uSAX\",nb[135]=t(ab),mb[136]=\"DEY\",nb[136]=function(){return Ua(function(){Q=Q-1&255,Ka(Q),La(Q)})}(),mb[137]=\"uNOP\",nb[137]=b(Va),mb[138]=\"TXA\",nb[138]=function(){return Ua(function(){O=P,Ka(O),La(O)})}(),mb[139]=\"uANE\",nb[139]=function(a){return a(function(){Ta(\"ANE\")})}(Va),mb[140]=\"STY\",nb[140]=s(bb),mb[141]=\"STA\",nb[141]=q(bb),mb[142]=\"STX\",nb[142]=r(bb),mb[143]=\"uSAX\",nb[143]=t(bb),mb[144]=\"BCC\",nb[144]=H(ia,0),mb[145]=\"STA\",nb[145]=q(fb),mb[146]=\"uKIL\",nb[146]=a(),mb[147]=\"uSHA\",nb[147]=u(fb),mb[148]=\"STY\",nb[148]=s(eb(0)),mb[149]=\"STA\",nb[149]=q(eb(0)),mb[150]=\"STX\",nb[150]=r(eb(1)),mb[151]=\"uSAX\",nb[151]=t(eb(1)),mb[152]=\"TYA\",nb[152]=function(){return Ua(function(){O=Q,Ka(O),La(O)})}(),mb[153]=\"STA\",nb[153]=q(db(1)),mb[154]=\"TXS\",nb[154]=function(){return Ua(function(){N=P})}(),mb[155]=\"uSHS\",nb[155]=function(a){return a(function(){Ta(\"SHS\");var a=O&P;N=a,Z=a&1+(_>>>8)&255})}(db(1)),mb[156]=\"uSHY\",nb[156]=function(a){return a(function(){Ta(\"SHY\"),Z=Q&1+(_>>>8)&255})}(db(0)),mb[157]=\"STA\",nb[157]=q(db(0)),mb[158]=\"uSHX\",nb[158]=function(a){return a(function(){Ta(\"SHX\"),Z=P&1+(_>>>8)&255})}(db(1)),mb[159]=\"uSHA\",nb[159]=u(db(1)),mb[160]=\"LDY\",nb[160]=l(Va),mb[161]=\"LDA\",nb[161]=j(Ya),mb[162]=\"LDX\",nb[162]=k(Va),mb[163]=\"uLAX\",nb[163]=p(Ya),mb[164]=\"LDY\",nb[164]=l(Wa),mb[165]=\"LDA\",nb[165]=j(Wa),mb[166]=\"LDX\",nb[166]=k(Wa),mb[167]=\"uLAX\",nb[167]=p(Wa),mb[168]=\"TAY\",nb[168]=function(){return Ua(function(){Q=O,Ka(Q),La(Q)})}(),mb[169]=\"LDA\",nb[169]=j(Va),mb[170]=\"TAX\",nb[170]=function(){return Ua(function(){P=O,Ka(P),La(P)})}(),mb[171]=\"uLXA\",nb[171]=function(a){return a(function(){Ta(\"LXA\");var a=O&Z;O=a,P=a,Ka(a),La(a)})}(Va),mb[172]=\"LDY\",nb[172]=l(Xa),mb[173]=\"LDA\",nb[173]=j(Xa),mb[174]=\"LDX\",nb[174]=k(Xa),mb[175]=\"uLAX\",nb[175]=p(Xa),mb[176]=\"BCS\",nb[176]=H(ia,1),mb[177]=\"LDA\",nb[177]=j(_a),mb[178]=\"uKIL\",nb[178]=a(),mb[179]=\"uLAX\",nb[179]=p(_a),mb[180]=\"LDY\",nb[180]=l($a(0)),mb[181]=\"LDA\",nb[181]=j($a(0)),mb[182]=\"LDX\",nb[182]=k($a(1)),mb[183]=\"uLAX\",nb[183]=p($a(1)),mb[184]=\"CLV\",nb[184]=function(){return Ua(function(){S=0})}(),mb[185]=\"LDA\",nb[185]=j(Za(1)),mb[186]=\"TSX\",nb[186]=function(){return Ua(function(){P=N,Ka(P),La(P)})}(),mb[187]=\"uLAS\",nb[187]=function(a){return a(function(){Ta(\"LAS\");var a=N&Z;O=a,P=a,N=a,Ka(a),La(a)})}(Za(1)),mb[188]=\"LDY\",nb[188]=l(Za(0)),mb[189]=\"LDA\",nb[189]=j(Za(0)),mb[190]=\"LDX\",nb[190]=k(Za(1)),mb[191]=\"uLAX\",nb[191]=p(Za(1)),mb[192]=\"CPY\",nb[192]=h(Va),\nmb[193]=\"CMP\",nb[193]=f(Ya),mb[194]=\"uNOP\",nb[194]=b(Va),mb[195]=\"uDCP\",nb[195]=B(kb),mb[196]=\"CPY\",nb[196]=h(Wa),mb[197]=\"CMP\",nb[197]=f(Wa),mb[198]=\"DEC\",nb[198]=w(gb),mb[199]=\"uDCP\",nb[199]=B(gb);mb[200]=\"INY\",nb[200]=function(){return Ua(function(){Q=Q+1&255,Ka(Q),La(Q)})}(),mb[201]=\"CMP\",nb[201]=f(Va),mb[202]=\"DEX\",nb[202]=function(){return Ua(function(){P=P-1&255,Ka(P),La(P)})}(),mb[203]=\"uSBX\",nb[203]=function(a){return a(function(){Ta(\"SBX\");var a=O&P,b=Z,c=a-b&255;P=c,Na(a>=b),Ka(c),La(c)})}(Va),mb[204]=\"CPY\",nb[204]=h(Xa),mb[205]=\"CMP\",nb[205]=f(Xa),mb[206]=\"DEC\",nb[206]=w(hb),mb[207]=\"uDCP\",nb[207]=B(hb),mb[208]=\"BNE\",nb[208]=H(ha,0),mb[209]=\"CMP\",nb[209]=f(_a),mb[210]=\"uKIL\",nb[210]=a(),mb[211]=\"uDCP\",nb[211]=B(lb),mb[212]=\"uNOP\",nb[212]=b($a(0)),mb[213]=\"CMP\",nb[213]=f($a(0)),mb[214]=\"DEC\",nb[214]=w(ib(0)),mb[215]=\"uDCP\",nb[215]=B(ib(0)),mb[216]=\"CLD\",nb[216]=function(){return Ua(function(){T=0})}(),mb[217]=\"CMP\",nb[217]=f(Za(1)),mb[218]=\"uNOP\",nb[218]=b(Ua),mb[219]=\"uDCP\",nb[219]=B(jb(1)),mb[220]=\"uNOP\",nb[220]=b(Za(0)),mb[221]=\"CMP\",nb[221]=f(Za(0)),mb[222]=\"DEC\",nb[222]=w(jb(0)),mb[223]=\"uDCP\",nb[223]=B(jb(0)),mb[224]=\"CPX\",nb[224]=g(Va),mb[225]=\"SBC\",nb[225]=n(Ya),mb[226]=\"uNOP\",nb[226]=b(Va),mb[227]=\"uISB\",nb[227]=C(kb),mb[228]=\"CPX\",nb[228]=g(Wa),mb[229]=\"SBC\",nb[229]=n(Wa),mb[230]=\"INC\",nb[230]=x(gb),mb[231]=\"uISB\",nb[231]=C(gb),mb[232]=\"newINX\",nb[232]=function(){return Ua(function(){P=P+1&255,Ka(P),La(P)})}(),mb[233]=\"SBC\",nb[233]=n(Va),mb[234]=\"NOP\",nb[234]=function(){return Ua(function(){})}(),mb[235]=\"SBC\",nb[235]=n(Va),mb[236]=\"CPX\",nb[236]=g(Xa),mb[237]=\"SBC\",nb[237]=n(Xa),mb[238]=\"INC\",nb[238]=x(hb),mb[239]=\"uISB\",nb[239]=C(hb),mb[240]=\"BEQ\",nb[240]=H(ha,1),mb[241]=\"SBC\",nb[241]=n(_a),mb[242]=\"uKIL\",nb[242]=a(),mb[243]=\"uISB\",nb[243]=C(lb),mb[244]=\"uNOP\",nb[244]=b($a(0)),mb[245]=\"SBC\",nb[245]=n($a(0)),mb[246]=\"INC\",nb[246]=x(ib(0)),mb[247]=\"uISB\",nb[247]=C(ib(0)),mb[248]=\"SED\",nb[248]=function(){return Ua(function(){T=1})}(),mb[249]=\"SBC\",nb[249]=n(Za(1)),mb[250]=\"uNOP\",nb[250]=b(Ua),mb[251]=\"uISB\",nb[251]=C(jb(1)),mb[252]=\"uNOP\",nb[252]=b(Za(0)),mb[253]=\"SBC\",nb[253]=n(Za(0)),mb[254]=\"INC\",nb[254]=x(jb(0)),mb[255]=\"uISB\",nb[255]=C(jb(0)),this.saveState=function(){return{PC:M,A:O,X:P,Y:Q,SP:N,N:R,V:S,D:T,I:U,Z:V,C:W,T:X,o:Y,R:0|L,d:Z,AD:$,BA:_,BC:0|aa,IA:ba,bo:ca,boa:da}},this.loadState=function(a){M=a.PC,O=a.A,P=a.X,Q=a.Y,N=a.SP,R=a.N,S=a.V,T=a.D,U=a.I,V=a.Z,W=a.C,X=a.T,Y=a.o,L=!!a.R,Z=a.d,$=a.AD,_=a.BA,aa=!!a.BC,ba=a.IA,ca=a.bo,da=a.boa,K=-1===Y?la:nb[Y]},this.toString=function(){return\"CPU  PC: \"+M.toString(16)+\"  op: \"+Y.toString()+\"  T: \"+X+\"  data: \"+Z+\"\\n A: \"+O.toString(16)+\"  X: \"+P.toString(16)+\"  Y: \"+Q.toString(16)+\"  SP: \"+N.toString(16)+\"     N\"+R+\"  V\"+S+\"  D\"+T+\"  I\"+U+\"  Z\"+V+\"  C\"+W+\"  \"},this.breakpoint=function(a){if(jt.Util.log(a),this.trace){var b=\"CPU Breakpoint!  \"+(a?\"(\"+a+\")\":\"\")+\"\\n\\n\"+this.toString();jt.Util.message(b)}},this.runCycles=function(a){for(var b=performance.now(),c=0;c<a;c++)this.clockPulse();var d=performance.now();jt.Util.message(\"Done running \"+a+\" cycles in \"+(d-b)+\" ms.\")}},jt.Ram=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.read=function(c){return a[c&b]},this.write=function(c,d){a[c&b]=d},this.powerFry=function(){for(var b=1-e+2*Math.random()*e,f=b*c,g=0;g<f;g++)a[128*Math.random()|0]&=256*Math.random()|0;var h=b*d;for(g=0;g<h;g++)a[128*Math.random()|0]|=1<<(8*Math.random()|0)},this.saveState=function(){return{b:jt.Util.storeInt8BitArrayToStringBase64(a)}},this.loadState=function(b){a=jt.Util.restoreStringBase64ToInt8BitArray(b.b,a)};var a=new Array(128),b=127,c=120,d=25,e=.3;!function(){for(var b=a.length-1;b>=0;b--)a[b]=256*Math.random()|0}()},jt.Pia=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.clockPulse=function(){--h<=0&&a()},this.connectBus=function(a){g=a},this.read=function(a){var b=a&u;return 4===b||6===b?(c(),o):0===b?k:2===b?m:1===b?l:3===b?n:5===b||7===b?p:0},this.write=function(a,c){var f=a&u;return 4===f?(q=c,void b(c,1)):5===f?(r=c,void b(c,8)):6===f?(s=c,void b(c,64)):7===f?(t=c,void b(c,1024)):2===f?void d(c):3===f?(n=c,void e(\">>>> Ineffective Write to PIA SWBCNT: \"+c)):0===f?void e(\">>>> Unsupported Write to PIA SWCHA: \"+c):1===f?void e(\">>>> Unsupported Write to PIA SWACNT \"+c):0};var a=function(){--o<0?(p|=192,o=255,h=i=1):h=i},b=function(b,c){o=b,p&=63,h=i=j=c,a()},c=function(){p&=191,1===i&&(h=i=j)},d=function(a){m=203&m|34&a},e=function(a){self.debug&&jt.Util.log(a)},f=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case f.JOY0_UP:return void(b?k&=239:k|=16);case f.JOY0_DOWN:return void(b?k&=223:k|=32);case f.PADDLE1_BUTTON:case f.JOY0_LEFT:return void(b?k&=191:k|=64);case f.PADDLE0_BUTTON:case f.JOY0_RIGHT:return void(b?k&=127:k|=128);case f.JOY1_UP:return void(b?k&=254:k|=1);case f.JOY1_DOWN:return void(b?k&=253:k|=2);case f.JOY1_LEFT:return void(b?k&=251:k|=4);case f.JOY1_RIGHT:return void(b?k&=247:k|=8);case f.RESET:return void(b?m&=254:m|=1);case f.SELECT:return void(b?m&=253:m|=2)}if(b)switch(a){case f.BLACK_WHITE:return 0==(8&m)?m|=8:m&=247,void g.getTia().getVideoOutput().showOSD(0!=(8&m)?\"COLOR\":\"B/W\",!0);case f.DIFFICULTY0:return 0==(64&m)?m|=64:m&=191,void g.getTia().getVideoOutput().showOSD(0!=(64&m)?\"P1 Expert\":\"P1 Novice\",!0);case f.DIFFICULTY1:return 0==(128&m)?m|=128:m&=127,void g.getTia().getVideoOutput().showOSD(0!=(128&m)?\"P2 Expert\":\"P2 Novice\",!0)}},this.controlsStateReport=function(a){a[f.BLACK_WHITE]=0==(8&m),a[f.DIFFICULTY0]=0!=(64&m),a[f.DIFFICULTY1]=0!=(128&m),a[f.SELECT]=0==(2&m),a[f.RESET]=0==(1&m)},this.saveState=function(){return{t:h,c:i,l:j,SA:k,SAC:l,SB:m,SBC:n,IT:o,IS:p,T1:q,T8:r,T6:s,T2:t}},this.loadState=function(a){h=a.t,i=a.c,j=a.l,l=a.SAC,m=a.SB,n=a.SBC,o=a.IT,p=a.IS,q=a.T1,r=a.T8,s=a.T6,t=a.T2},this.debug=!1;var g,h=1024,i=1024,j=1024,k=255,l=0,m=11,n=0,o=256*Math.random()|0,p=0,q=0,r=0,s=0,t=0,u=7},function(){\"use strict\"\n;for(var a=[0,4210752,7105644,9474192,11579568,13158600,14474460,16053492,17476,1074276,2393220,3448992,4241592,5296336,6088936,6880508,10352,1328260,2645144,3963052,5016764,6070476,6862044,7915756,6276,1586328,3166380,4745408,6062288,7378144,8431852,9747708,136,2105500,3947696,5789888,7368912,8947936,10526956,11842812,6029432,7610508,8928416,10246320,11563200,12616912,13671644,14725356,7864392,9445472,10763384,12081292,13398176,14451892,15506628,16560340,8650772,9969712,11287628,12605544,13660284,14715028,15507624,16561340,8912896,10231836,11550776,12606544,13661288,14716028,15508624,16562340,8132608,9451548,11031608,12349520,13404264,14457980,15512720,16566436,6040576,7883804,9463864,11306064,12622952,13939836,15256720,16572580,2898944,4742172,6585400,8428624,9745512,11325564,12641424,13958308,15360,2120736,4226112,6069340,7648372,9228428,10806436,12123320,14356,1858612,3701840,5281900,6861956,8178844,9495732,10812616,12332,1855564,3436648,5016708,6596764,7913652,8967372,10284256,10308,1591396,3172484,4490400,5807288,7124176,8178920,9232636],b=[0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,22656,2125972,3966120,5807292,7384268,8700124,10277100,11591932,23620,2127964,3969140,5811340,7389344,8705200,10283204,11599060,13424,2117768,3958944,5801140,7379144,8695004,10273004,11588860,1336320,3440672,5281852,7123032,8701040,10279044,11856028,13171888,1310832,3416200,5258400,7100596,8679624,10257628,11836652,13152508,6052864,7631904,9210940,10789976,12105840,13158532,14474396,15527088,6029424,7610500,8928404,10246312,11563188,12616900,13671632,14725344,7355392,8935452,10515512,11832400,13149288,14465148,15518864,16572580,7340120,8921196,10501248,11819156,13136036,14451892,15506628,16560340,7348224,8928284,10508344,11826256,13142120,14459004,15512720,16566436,8388668,9707604,11025516,12343424,13398164,14451880,15506616,16560328,8912896,10231840,11549756,12605528,13660272,14713988,15506588,16560304,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113],c=new Uint32Array(256),d=new Uint32Array(256),e=0,f=a.length;e<f;e++)c[2*e]=c[2*e+1]=a[e]+4278190080,d[2*e]=d[2*e+1]=b[e]+4278190080;a=b=void 0,jt.TiaPalettes={NTSC:c,PAL:d}}(),jt.TiaAudio=function(){\"use strict\";function a(){e||(e=new jt.AudioSignal(\"TiaAudio\",c,k,j)),d.connectAudioSignal(e)}function b(){e&&d.disconnectAudioSignal(e)}var c=this;this.connectAudioSocket=function(a){d=a},this.cartridgeInserted=function(a){f=a&&a.needsAudioClock()?a:null},this.audioClockPulse=function(){d.audioClockPulse()},this.getChannel0=function(){return h},this.getChannel1=function(){return i},this.powerOn=function(){this.reset(),a()},this.powerOff=function(){b()},this.reset=function(){h.setVolume(0),i.setVolume(0),g=0},this.nextSample=function(){f&&f.audioClockPulse();var a=h.nextSample()-i.nextSample();return a!==g&&(a=(9*a+g)/10,g=a),a};var d,e,f,g=0,h=new jt.TiaAudioChannel,i=new jt.TiaAudioChannel,j=.4,k=31440},jt.TiaAudioChannel=function(){\"use strict\";this.nextSample=function(){return--s<=0&&(s+=r,t=o()),1===t?p:0},this.setVolume=function(a){p=a/E},this.setDivider=function(a){r!==a&&(s=s/r*a,r=a)},this.setControl=function(b){q!==b&&(q=b,o=0===b||11===b?a:1===b?c:2===b?k:3===b?l:4===b||5===b?f:6===b||10===b?j:7===b||9===b?d:8===b?e:12===b||13===b?h:14===b?m:15===b?n:a)};var a=function(){return 1},b=function(){return z[y]},c=function(){return 15==++y&&(y=0),z[y]},d=function(){return 31==++A&&(A=0),B[A]},e=function(){var a=1&x,b=1&(x>>4^a);return x>>>=1,0===b?x&=255:x|=256,a},f=function(){return 1===r?1:u=u?0:1},g=function(){return v},h=function(){return 0==--w&&(w=3,v=v?0:1),v},i=function(){return D[C]},j=function(){return 31==++C&&(C=0),D[C]},k=function(){return i()!==j()?c():b()},l=function(){return d()?c():b()},m=function(){return i()!=j()?h():g()},n=function(){return d()?h():g()},o=a,p=0,q=0,r=1,s=1,t=0,u=1,v=1,w=3,x=511,y=14,z=[1,1,1,1,0,0,0,1,0,0,1,1,0,1,0],A=30,B=[1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0],C=30,D=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],E=15},jt.Tia=function(pCpu,pPia,audioSocket){\"use strict\";function init(){generateObjectsLineSprites(),generateObjectsCopiesOffsets()}function renderLineTo(a){var b,c=a>LINE_WIDTH?LINE_WIDTH:a;if(vBlankOn)for(var d=renderClock;d<c;++d)linePixels[d]=vBlankColor;else{for(var e=collisions,f=renderClock-HBLANK_DURATION,g=c-HBLANK_DURATION;f<g;++f){var h=0,i=collisionsPossible;playfieldPriority&&(playfieldEnabled&&(1&(f<80?playfieldPatternL>>(f>>2):playfieldPatternR>>(f-80>>2))?h=playfieldColor:i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),player0Enabled&&(b=f-player0Pixel,b<0&&(b+=160),playerLineSprites[player0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player0Color):i&=P0C),missile0Enabled&&(b=f-missile0Pixel,b<0&&(b+=160),missileBallLineSprites[missile0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile0Color):i&=M0C),player1Enabled&&(b=f-player1Pixel,b<0&&(b+=160),playerLineSprites[player1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player1Color):i&=P1C),missile1Enabled&&(b=f-missile1Pixel,b<0&&(b+=160),missileBallLineSprites[missile1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile1Color):i&=M1C),playfieldPriority||(playfieldEnabled&&(f<80?playfieldPatternL>>(f>>2)&1?h||(h=playfieldLeftColor):i&=PFC:playfieldPatternR>>(f-80>>2)&1?h||(h=playfieldRightColor):i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),linePixels[f+HBLANK_DURATION]=h||playfieldBackground,e|=i}debugNoCollisions||(collisions=e)}}function changeAt(a){vBlankOn||(a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock)}function changeAtClock(){changeAt(clock)}function changeAtClockPlus(a){changeAt(clock+a)}function changePlayfieldAtClock(){if(debug&&debugPixel(DEBUG_PF_GR_COLOR),clock<renderClock-1)return changeAtClock();var a=3&clock;changeAtClockPlus(a<3?4-a:5)}function changeVBlankAtClockPlus1(){var a=clock+1;a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock}function updateToClock(){vBlankOn||clock>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(clock),renderClock=clock)}function augmentCollisionsPossible(){collisionsPossible=65534,player0Enabled||(collisionsPossible&=P0C),player1Enabled||(collisionsPossible&=P1C),missile0Enabled||(collisionsPossible&=M0C),missile1Enabled||(collisionsPossible&=M1C),playfieldEnabled||(collisionsPossible&=PFC),ballEnabled||(collisionsPossible&=BLC)}function playfieldUpdateSprite(){playfieldPatternL=PF2<<12|jt.Util.reverseInt8(PF1)<<4|(240&PF0)>>4,playfieldUpdateSpriteR()}function playfieldUpdateSpriteR(){playfieldPatternR=playfieldReflected?jt.Util.reverseInt8(PF0)<<16|PF1<<8|jt.Util.reverseInt8(PF2):playfieldPatternL,0!==playfieldPatternL||0!==playfieldPatternR?(playfieldEnabled=!0,augmentCollisionsPossible()):(playfieldEnabled=!1,collisionsPossible&=PFC)}function ballSetEnabled(a){a?(ballEnabled=!0,augmentCollisionsPossible()):(ballEnabled=!1,collisionsPossible&=BLC)}function player0SetShape(a){if(NUSIZ0!==a){var b=NUSIZ0^a,c=NUSIZ0;NUSIZ0=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player0Alt){var f=e-player0Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];if(h!==g)if(player0Enabled&&changeAtClockPlus(2),player0Alt=player0Pixel>=80?1:2,player0LineSpritePointer+=20,player0AltFrom=f,player0AltLength=playerCopyLengthPerShape[d],192&g)player0AltCopyOffset=191&g;else if(clock<HBLANK_DURATION&&hMoveHitBlank)player0AltCopyOffset=128;else{var i=playerPixelSizePerShape[d]\n;player0AltCopyOffset=playerScanStartPerShape[d]+g*i+(1&f),player0AltLength-=(192&h?0:h)*i}}player0UpdateSprite(2)}if(55&b){if(!missile0Alt&&(f=e-missile0Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],(h=missileScanOffsetsShape[160*((48&a)>>1|d)+f])!==g)){missile0Enabled&&changeAtClockPlus(2),missile0Alt=missile0Pixel>=80?1:2,missile0LineSpritePointer+=20,missile0AltFrom=f;var j=(48&a)>>4;missile0AltLength=4+(1<<j),192&g?missile0AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile0AltCopyOffset=128:(missile0AltCopyOffset=4+(g<<j)+(1&f),missile0AltLength-=(192&h?0:h)<<j)}missile0UpdateSprite(2)}}}function player0SetSprite(a){debug&&debugPixel(DEBUG_P0_GR_COLOR),GRP0d!==a&&(GRP0d=a,VDELP0||player0UpdateSprite(1)),GRP1!==GRP1d&&(GRP1=GRP1d,VDELP1&&player1UpdateSprite(1))}function player0UpdateSprite(a){var b=VDELP0?GRP0:GRP0d;if(b){var c=((REFP0<<11|b<<3|7&NUSIZ0)<<6)+(player0Alt?20:0);player0Enabled&&player0LineSpritePointer===c||(changeAtClockPlus(a),player0LineSpritePointer=c,player0Alt&&player0DefineAlt()),player0Enabled||(player0Enabled=!0,augmentCollisionsPossible())}else player0Enabled&&(changeAtClockPlus(a),player0Enabled=!1,collisionsPossible&=P0C)}function player1SetShape(a){if(NUSIZ1!==a){var b=NUSIZ1^a,c=NUSIZ1;NUSIZ1=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player1Alt){var f=e-player1Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];h!==g&&(player1Enabled&&changeAtClockPlus(2),player1Alt=player1Pixel>=80?1:2,player1LineSpritePointer+=40,player1AltFrom=f,player1AltLength=playerCopyLengthPerShape[d],192&g?player1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?player1AltCopyOffset=128:(player1AltCopyOffset=playerScanStartPerShape[d]+g*playerPixelSizePerShape[d]+(1&f),player1AltLength-=(192&h?0:h)*playerPixelSizePerShape[d]))}player1UpdateSprite(2)}if(55&b){if(!missile1Alt&&(f=e-missile1Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],(h=missileScanOffsetsShape[160*((48&a)>>1|d)+f])!==g)){missile1Enabled&&changeAtClockPlus(2),missile1Alt=missile1Pixel>=80?1:2,missile1LineSpritePointer+=40,missile1AltFrom=f;var i=(48&a)>>4;missile1AltLength=4+(1<<i),192&g?missile1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile1AltCopyOffset=128:(missile1AltCopyOffset=4+(g<<i)+(1&f),missile1AltLength-=(192&h?0:h)<<i)}missile1UpdateSprite(2)}}}function player1SetSprite(a){debug&&debugPixel(DEBUG_P1_GR_COLOR),GRP1d!==a&&(GRP1d=a,VDELP1||player1UpdateSprite(1)),GRP0!==GRP0d&&(GRP0=GRP0d,VDELP0&&player0UpdateSprite(1)),ENABL!==ENABLd&&(ENABL=ENABLd,VDELBL&&changeAtClockPlus(1),ballSetEnabled(ENABL))}function player1UpdateSprite(a){var b=VDELP1?GRP1:GRP1d;if(b){var c=((REFP1<<11|b<<3|7&NUSIZ1)<<6)+(player1Alt?40:0);player1Enabled&&player1LineSpritePointer===c||(changeAtClockPlus(a),player1LineSpritePointer=c,player1Alt&&player1DefineAlt()),player1Enabled||(player1Enabled=!0,augmentCollisionsPossible())}else player1Enabled&&(changeAtClockPlus(a),player1Enabled=!1,collisionsPossible&=P1C)}function missile0UpdateSprite(a){var b=(((48&NUSIZ0)>>1|7&NUSIZ0)<<6)+(missile0Alt?20:0);missile0LineSpritePointer!==b&&(missile0Enabled?(changeAtClockPlus(a),missile0LineSpritePointer=b,missile0Alt&&missile0DefineAlt()):missile0LineSpritePointer=b)}function missile0SetEnabled(a){a?(missile0Enabled=!0,augmentCollisionsPossible(),missile0Alt&&missile0DefineAlt()):(missile0Enabled=!1,collisionsPossible&=M0C)}function missile0SetResetToPlayer(a){RESMP0!==(2&a)&&(ENAM0?(changeAtClock(),missile0SetEnabled(!(RESMP0=2&a))):RESMP0=2&a,RESMP0||(missile0Pixel=player0Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ0])>=160&&(missile0Pixel-=160))}function missile1UpdateSprite(a){var b=(((48&NUSIZ1)>>1|7&NUSIZ1)<<6)+(missile1Alt?40:0);missile1LineSpritePointer!==b&&(missile1Enabled?(changeAtClockPlus(a),missile1LineSpritePointer=b,missile1Alt&&missile1DefineAlt()):missile1LineSpritePointer=b)}function missile1SetEnabled(a){a?(missile1Enabled=!0,augmentCollisionsPossible(),missile1Alt&&missile1DefineAlt()):(missile1Enabled=!1,collisionsPossible&=M1C)}function missile1SetResetToPlayer(a){RESMP1!==(2&a)&&(ENAM1?(changeAtClock(),missile1SetEnabled(!(RESMP1=2&a))):RESMP1=2&a,RESMP1||(missile1Pixel=player1Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ1])>=160&&(missile1Pixel-=160))}function player0DefineAlt(){var a=player0AltFrom<<16|player0AltLength<<8|player0AltCopyOffset,b=player0LineSpritePointer-20>>6;if(player0AltControl[b]!==a){for(var c=player0LineSpritePointer-20,d=0;d<20;++d)playerLineSprites[player0LineSpritePointer+d]=playerLineSprites[c+d];var e=player0AltFrom;if(128&player0AltCopyOffset)for(var f=0;f<player0AltLength;++f)playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=player0AltCopyOffset,h=player0AltCopyOffset+player0AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player0LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player0AltControl[b]=a}}function player1DefineAlt(){var a=player1AltFrom<<16|player1AltLength<<8|player1AltCopyOffset,b=player1LineSpritePointer-40>>6;if(player1AltControl[b]!==a){for(var c=player1LineSpritePointer-40,d=0;d<20;++d)playerLineSprites[player1LineSpritePointer+d]=playerLineSprites[c+d];var e=player1AltFrom;if(128&player1AltCopyOffset)for(var f=0;f<player1AltLength;++f)playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=player1AltCopyOffset,h=player1AltCopyOffset+player1AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player1LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player1AltControl[b]=a}}function missile0DefineAlt(){var a=missile0AltFrom<<16|missile0AltLength<<8|missile0AltCopyOffset,b=missile0LineSpritePointer-20>>6;if(missile0AltControl[b]!==a){for(var c=missile0LineSpritePointer-20,d=0;d<20;++d)missileBallLineSprites[missile0LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile0AltFrom;if(128&missile0AltCopyOffset)for(var f=0;f<missile0AltLength;++f)missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=missile0AltCopyOffset,h=missile0AltCopyOffset+missile0AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile0LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile0AltControl[b]=a}}function missile1DefineAlt(){var a=missile1AltFrom<<16|missile1AltLength<<8|missile1AltCopyOffset,b=missile1LineSpritePointer-40>>6;if(missile1AltControl[b]!==a){for(var c=missile1LineSpritePointer-40,d=0;d<20;++d)missileBallLineSprites[missile1LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile1AltFrom;if(128&missile1AltCopyOffset)for(var f=0;f<missile1AltLength;++f)missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=missile1AltCopyOffset,h=missile1AltCopyOffset+missile1AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile1LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile1AltControl[b]=a}}function getRESxPixel(){if(clock>=HBLANK_DURATION+(hMoveHitBlank?7:0))return clock-HBLANK_DURATION;if(hMoveHitBlank){if(clock>=HBLANK_DURATION)return-6;var a=clock-hMoveHitClock-4>>2;return a>8?-6:a>1?-(a-2):-(158+a)}return-158}\nfunction checkLateHMOVE(){hMoveLateHit?(hMoveLateHit=!1,hMoveHitBlank=hMoveLateHitBlank,performHMOVE()):hMoveHitBlank=!1}function updateExtendedHBLANK(){hMoveHitBlank!==(linePixels[HBLANK_DURATION]===hBlankColor)&&(hMoveHitBlank?linePixels[HBLANK_DURATION]=linePixels[HBLANK_DURATION+1]=linePixels[HBLANK_DURATION+2]=linePixels[HBLANK_DURATION+3]=linePixels[HBLANK_DURATION+4]=linePixels[HBLANK_DURATION+5]=linePixels[HBLANK_DURATION+6]=linePixels[HBLANK_DURATION+7]=hBlankColor:changeClock=HBLANK_DURATION),hMoveHitBlank&&(renderClock=HBLANK_DURATION+8)}function endObjectsAltStatusMidLine(){1===player0Alt&&(player0Enabled&&changeAtClock(),player0Alt=0,player0LineSpritePointer-=20),1===player1Alt&&(player1Enabled&&changeAtClock(),player1Alt=0,player1LineSpritePointer-=40),1===missile0Alt&&(missile0Enabled&&changeAtClock(),missile0Alt=0,missile0LineSpritePointer-=20),1===missile1Alt&&(missile1Enabled&&changeAtClock(),missile1Alt=0,missile1LineSpritePointer-=40)}function endObjectsAltStatusEndOfLine(){2===player0Alt&&(player0Alt=0,player0LineSpritePointer-=20),2===player1Alt&&(player1Alt=0,player1LineSpritePointer-=40),2===missile0Alt&&(missile0Alt=0,missile0LineSpritePointer-=20),2===missile1Alt&&(missile1Alt=0,missile1LineSpritePointer-=40)}function vSyncSet(a){debug?(debugPixel(VSYNC_COLOR),changeAtClock(),vSyncOn=0!=(2&a),vBlankColor=vSyncOn?VSYNC_COLOR:DEBUG_VBLANK_COLOR):vSyncOn=0!=(2&a)}function generateObjectsLineSprites(){function a(a,b,c){for(var d=0;d<8;++d)a[c+d]=b>>d&1}function b(a,b,c){for(var d=0;d<8;++d)a[c+4*d]=a[c+4*d+1]=a[c+4*d+2]=a[c+4*d+3]=b>>d&1}function c(a,b,c,d,e){for(var f=((a<<11|b<<3|c)<<6)+20*d,g=0;g<20;++g)for(var h=0;h<8;++h)e[8*g+h]&&(playerLineSprites[f+g]|=1<<h)}function d(a,b,c,d){for(var e=((a<<3|b)<<6)+20*c,f=0;f<20;++f)for(var g=0;g<8;++g)d[8*f+g]&&(missileBallLineSprites[e+f]|=1<<g)}for(var e=new Uint8Array(160),f=0;f<=1;++f)for(var g=0;g<256;++g){var h=f?g:jt.Util.reverseInt8(g);a(e,h,5),c(f,g,0,0,e),a(e,h,21),c(f,g,1,0,e),a(e,h,37),c(f,g,3,0,e),a(e,0,21),c(f,g,2,0,e),a(e,h,69),c(f,g,6,0,e),a(e,0,37),c(f,g,4,0,e),a(e,0,69),e[5]=0,function(a,b,c){for(var d=0;d<8;++d)a[c+2*d]=a[c+2*d+1]=b>>d&1}(e,h,6),c(f,g,5,0,e),b(e,h,6),c(f,g,7,0,e),b(e,0,6)}jt.Util.arrayFill(e,0);for(var i=0;i<4;++i)h=(1<<(1<<i))-1,a(e,h,4),d(i,0,0,e),d(i,5,0,e),d(i,7,0,e),a(e,h,20),d(i,1,0,e),a(e,h,36),d(i,3,0,e),a(e,0,20),d(i,2,0,e),a(e,h,68),d(i,6,0,e),a(e,0,36),d(i,4,0,e),a(e,0,4),a(e,0,68)}function generateObjectsCopiesOffsets(){var a=new Uint8Array(40);a[0]=0,a[1]=1,a[2]=2,a[3]=3,jt.Util.arrayFill(playerCopyOffsetsReset,128),jt.Util.arrayFill(playerScanOffsetsShape,128);for(var b=0;b<13;++b){var c=b-a[b];playerCopyOffsetsReset[0+b]=c,playerCopyOffsetsReset[160+b]=c,playerCopyOffsetsReset[160+b+16]=c,playerCopyOffsetsReset[320+b]=c,playerCopyOffsetsReset[320+b+32]=c,playerCopyOffsetsReset[480+b]=c,playerCopyOffsetsReset[480+b+16]=c,playerCopyOffsetsReset[480+b+32]=c,playerCopyOffsetsReset[640+b]=c,playerCopyOffsetsReset[640+b+64]=c,playerCopyOffsetsReset[960+b]=c,playerCopyOffsetsReset[960+b+32]=c,playerCopyOffsetsReset[960+b+64]=c,c=b<5?64|b:b-5,playerScanOffsetsShape[0+b]=c,playerScanOffsetsShape[160+b]=c,playerScanOffsetsShape[160+b+16]=c,playerScanOffsetsShape[320+b]=c,playerScanOffsetsShape[320+b+32]=c,playerScanOffsetsShape[480+b]=c,playerScanOffsetsShape[480+b+16]=c,playerScanOffsetsShape[480+b+32]=c,playerScanOffsetsShape[640+b]=c,playerScanOffsetsShape[640+b+64]=c,playerScanOffsetsShape[960+b]=c,playerScanOffsetsShape[960+b+32]=c,playerScanOffsetsShape[960+b+64]=c}for(b=0;b<22;b++)c=b-a[b],playerCopyOffsetsReset[800+b]=c,c=b<6?64|b:b-6>>1,playerScanOffsetsShape[800+b]=c;for(b=0;b<38;b++)c=b-a[b],playerCopyOffsetsReset[1120+b]=c,c=b<6?64|b:b-6>>2,playerScanOffsetsShape[1120+b]=c;jt.Util.arrayFill(missileCopyOffsetsReset,128),jt.Util.arrayFill(missileScanOffsetsShape,128);for(var d=0;d<=3;++d){var e=4+(1<<d);for(b=0;b<e;++b)c=b-a[b],missileCopyOffsetsReset[8*d*160+0+b]=c,missileCopyOffsetsReset[8*d*160+160+b]=c,missileCopyOffsetsReset[8*d+160+b+16]=c,missileCopyOffsetsReset[8*d*160+320+b]=c,missileCopyOffsetsReset[8*d+320+b+32]=c,missileCopyOffsetsReset[8*d*160+480+b]=c,missileCopyOffsetsReset[8*d+480+b+16]=c,missileCopyOffsetsReset[8*d*160+480+b+32]=c,missileCopyOffsetsReset[8*d*160+640+b]=c,missileCopyOffsetsReset[8*d+640+b+64]=c,missileCopyOffsetsReset[8*d*160+800+b]=c,missileCopyOffsetsReset[8*d*160+960+b]=c,missileCopyOffsetsReset[8*d+960+b+32]=c,missileCopyOffsetsReset[8*d*160+960+b+64]=c,missileCopyOffsetsReset[8*d*160+1120+b]=c,c=b<4?64|b:b-4>>d,missileScanOffsetsShape[8*d*160+0+b]=c,missileScanOffsetsShape[8*d*160+160+b]=c,missileScanOffsetsShape[8*d+160+b+16]=c,missileScanOffsetsShape[8*d*160+320+b]=c,missileScanOffsetsShape[8*d+320+b+32]=c,missileScanOffsetsShape[8*d*160+480+b]=c,missileScanOffsetsShape[8*d+480+b+16]=c,missileScanOffsetsShape[8*d*160+480+b+32]=c,missileScanOffsetsShape[8*d*160+640+b]=c,missileScanOffsetsShape[8*d+640+b+64]=c,missileScanOffsetsShape[8*d*160+800+b]=c,missileScanOffsetsShape[8*d*160+960+b]=c,missileScanOffsetsShape[8*d+960+b+32]=c,missileScanOffsetsShape[8*d*160+960+b+64]=c,missileScanOffsetsShape[8*d*160+1120+b]=c}}var self=this;this.powerOn=function(){jt.Util.arrayFill(linePixels,VBLANK_COLOR),jt.Util.arrayFill(debugPixels,0),audioSignal.getChannel0().setVolume(0),audioSignal.getChannel1().setVolume(0),initLatchesAtPowerOn(),hMoveLateHit=!1,changeClock=changeClockPrevLine=-1,audioSignal.powerOn(),powerOn=!0},this.powerOff=function(){powerOn=!1,videoSignal.signalOff(),audioSignal.powerOff()},this.frame=function(){do{clock=0,changeClock=-1,renderClock=HBLANK_DURATION,debug&&(debugLevel>=4?jt.Util.arrayFill(linePixels,4278190080):debugLevel>=2&&debugLevel<4&&(changeClock=0)),checkLateHMOVE(),bus.clockPulse(),cpu.setRDY(!0);for(var a=0;a<22;++a)clock+=3,bus.clockPulse();updateExtendedHBLANK();for(var b=0;b<27;++b)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),endObjectsAltStatusMidLine();for(var c=0;c<26;++c)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),finishLine()}while(!videoSignal.nextLine(linePixels,vSyncOn));videoSignal.finishFrame()},this.connectBus=function(a){bus=a},this.getVideoOutput=function(){return videoSignal},this.getAudioOutput=function(){return audioSignal},this.setVideoStandard=function(a){videoSignal.setVideoStandard(a),palette=jt.TiaPalettes[a.name]},this.debug=function(a){debugLevel=a>4?0:a,debug=0!==debugLevel,pia.debug=debug,debug?debugSetColors():debugRestoreColors()},this.showDebugMessage=function(){videoSignal.showOSD(debug?\"Debug Level \"+debugLevel:\"Debug OFF\",!0)},this.debugNoCollisions=function(a){debugNoCollisions=!!a},this.getDebugNoCollisions=function(){return debugNoCollisions},this.read=function(a){switch(a&READ_ADDRESS_MASK){case 0:return updateToClock(),(1024&collisions)>>3|(16384&collisions)>>8;case 1:return updateToClock(),(8192&collisions)>>6|(512&collisions)>>3;case 2:return updateToClock(),(4096&collisions)>>5|(2048&collisions)>>5;case 3:return updateToClock(),(256&collisions)>>1|(128&collisions)>>1;case 4:return updateToClock(),(32&collisions)<<2|(16&collisions)<<2;case 5:return updateToClock(),(8&collisions)<<4|(4&collisions)<<4;case 6:return updateToClock(),(2&collisions)<<6;case 7:return updateToClock(),(32768&collisions)>>8|64&collisions;case 8:return INPT0;case 9:return INPT1;case 10:return INPT2;case 11:return INPT3;case 12:return INPT4;case 13:return INPT5;default:return 0}},this.write=function(a,b){switch(a&WRITE_ADDRESS_MASK){case 0:return void vSyncSet(b);case 1:return void vBlankSet(b);case 2:return cpu.setRDY(!1),void(debug&&debugPixel(DEBUG_WSYNC_COLOR));case 9:return void(COLUBK===b||debug||(changeAtClock(),COLUBK=b,playfieldBackground=palette[b]));case 13:return void(PF0!==(240&b)&&(changePlayfieldAtClock(),PF0=240&b,playfieldUpdateSprite()));case 14:return void(PF1!==b&&(changePlayfieldAtClock(),PF1=b,\nplayfieldUpdateSprite()));case 15:return void(PF2!==b&&(changePlayfieldAtClock(),PF2=b,playfieldUpdateSprite()));case 8:return void(COLUPF===b||debug||((playfieldEnabled&&!playfieldScoreMode||ballEnabled)&&changeAtClock(),COLUPF=b,ballColor=palette[b],playfieldScoreMode||(playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)));case 10:return void(CTRLPF!==b&&playfieldSetShape(b));case 20:return void hitRESBL();case 31:return void(ENABLd!==(2&b)&&(ENABLd=2&b,VDELBL||(changeAtClock(),ballSetEnabled(ENABLd))));case 39:return void(VDELBL!==(1&b)&&(VDELBL=1&b,ENABL!==ENABLd&&(changeAtClock(),ballSetEnabled(VDELBL?ENABL:ENABLd))));case 4:return void player0SetShape(b);case 6:return void(COLUP0===b||debug||(COLUP0=b,(player0Enabled||missile0Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player0Color=missile0Color=palette[b],playfieldScoreMode&&(playfieldLeftColor=player0Color)));case 11:return void(REFP0!==(b>>3&1)&&(REFP0=b>>3&1,player0UpdateSprite(0)));case 16:return void hitRESP0();case 27:return void player0SetSprite(b);case 37:return void(VDELP0!==(1&b)&&(VDELP0=1&b,GRP0!==GRP0d&&player0UpdateSprite(0)));case 5:return void player1SetShape(b);case 7:return void(COLUP1===b||debug||(COLUP1=b,(player1Enabled||missile1Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player1Color=missile1Color=palette[b],playfieldScoreMode&&(playfieldRightColor=player1Color)));case 12:return void(REFP1!==(b>>3&1)&&(REFP1=b>>3&1,player1UpdateSprite(0)));case 17:return void hitRESP1();case 28:return void player1SetSprite(b);case 38:return void(VDELP1!==(1&b)&&(VDELP1=1&b,GRP1!==GRP1d&&player1UpdateSprite(0)));case 18:return void hitRESM0();case 29:return void(ENAM0!==(2&b)&&(ENAM0=2&b,RESMP0||(changeAtClock(),missile0SetEnabled(ENAM0))));case 40:return void missile0SetResetToPlayer(b);case 19:return void hitRESM1();case 30:return void(ENAM1!==(2&b)&&(ENAM1=2&b,RESMP1||(changeAtClock(),missile1SetEnabled(ENAM1))));case 41:return void missile1SetResetToPlayer(b);case 32:return void(HMP0=(b>127?-16:0)+(b>>4));case 33:return void(HMP1=(b>127?-16:0)+(b>>4));case 34:return void(HMM0=(b>127?-16:0)+(b>>4));case 35:return void(HMM1=(b>127?-16:0)+(b>>4));case 36:return void(HMBL=(b>127?-16:0)+(b>>4));case 42:return void hitHMOVE();case 43:return void(HMP0=HMP1=HMM0=HMM1=HMBL=0);case 44:return changeAtClock(),void(collisions=0);case 21:return void(AUDC0!==b&&(AUDC0=b,audioSignal.getChannel0().setControl(15&b)));case 22:return void(AUDC1!==b&&(AUDC1=b,audioSignal.getChannel1().setControl(15&b)));case 23:return void(AUDF0!==b&&(AUDF0=b,audioSignal.getChannel0().setDivider(1+(31&b))));case 24:return void(AUDF1!==b&&(AUDF1=b,audioSignal.getChannel1().setDivider(1+(31&b))));case 25:return void(AUDV0!==b&&(AUDV0=b,audioSignal.getChannel0().setVolume(15&b)));case 26:return void(AUDV1!==b&&(AUDV1=b,audioSignal.getChannel1().setVolume(15&b)))}};var finishLine=function(){changeClock>=0?(renderLineTo(LINE_WIDTH),changeClockPrevLine=changeClock):changeClockPrevLine>=0&&(renderLineTo(changeClockPrevLine),changeClockPrevLine=-1),endObjectsAltStatusEndOfLine(),paddle0Position>=0&&!paddleCapacitorsGrounded&&(INPT0<128&&++paddle0CapacitorCharge>=paddle0Position&&(INPT0|=128),INPT1<128&&++paddle1CapacitorCharge>=paddle1Position&&(INPT1|=128)),debugLevel>=1&&processDebugPixelsInLine()},playfieldSetShape=function(a){if(CTRLPF!==a){var b=7&a;b!==(7&CTRLPF)&&(playfieldEnabled&&changeAtClock(),b=0!=(1&a),playfieldReflected!==b&&(playfieldReflected=b,playfieldUpdateSpriteR()),b=0!=(2&a),playfieldScoreMode!==b&&(playfieldScoreMode=b,debug||(b?(playfieldLeftColor=player0Color,playfieldRightColor=player1Color):playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)),playfieldPriority=0!=(4&a)),b=48&a,b!==(48&CTRLPF)&&(ballEnabled&&changeAtClock(),ballLineSpritePointer=b>>1<<6),CTRLPF=a}},hitRESP0=function(){debug&&debugPixel(DEBUG_P0_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player0Pixel!==b){player0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player0Pixel;d<0&&(d+=160),player0Pixel=b;var e=7&NUSIZ0;if(player0Alt){if(d<=playerCopyLengthPerShape[e])return}else player0LineSpritePointer+=20;var f=c-b;f<-100&&(f+=160),player0Alt=b>=80?1:2,player0AltFrom=f>=0?f:160+f,player0AltLength=playerCopyLengthPerShape[e]-f,player0AltCopyOffset=playerCopyOffsetsReset[160*e+d],player0Enabled&&player0DefineAlt()}},hitRESP1=function(){debug&&debugPixel(DEBUG_P1_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player1Pixel!==b){player1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player1Pixel;d<0&&(d+=160),player1Pixel=b;var e=7&NUSIZ1;if(player1Alt){if(d<=playerCopyLengthPerShape[e])return}else player1LineSpritePointer+=40;var f=c-b;f<-100&&(f+=160),player1Alt=b>=80?1:2,player1AltFrom=f>=0?f:160+f,player1AltLength=playerCopyLengthPerShape[e]-f,player1AltCopyOffset=playerCopyOffsetsReset[160*e+d],player1Enabled&&player1DefineAlt()}},hitRESM0=function(){debug&&debugPixel(DEBUG_M0_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(missile0Pixel!==b){missile0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile0Pixel;if(d<0&&(d+=160),missile0Pixel=b,missile0Alt){if(d<=4+(1<<((48&NUSIZ0)>>4)))return}else missile0LineSpritePointer+=20;var e=c-b;e<-100&&(e+=160),missile0Alt=b>=80?1:2,missile0AltFrom=e>=0?e:160+e,missile0AltLength=4+(1<<((48&NUSIZ0)>>4))-e,missile0AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ0)>>1|7&NUSIZ0)+d],missile0Enabled&&missile0DefineAlt()}},hitRESM1=function(){debug&&debugPixel(DEBUG_M1_COLOR);var a=getRESxPixel(),b=a>=1?a:-a;if(missile1Pixel!==b){missile1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile1Pixel;if(d<0&&(d+=160),missile1Pixel=b,missile1Alt){if(d<=4+(1<<((48&NUSIZ1)>>4)))return}else missile1LineSpritePointer+=40;var e=c-b;e<-100&&(e+=160),missile1Alt=b>=80?1:2,missile1AltFrom=e>=0?e:160+e,missile1AltLength=4+(1<<((48&NUSIZ1)>>4))-e,missile1AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ1)>>1|7&NUSIZ1)+d],missile1Enabled&&missile1DefineAlt()}},hitRESBL=function(){debug&&debugPixel(DEBUG_BL_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;ballPixel!==b&&(ballEnabled&&changeAtClock(),ballPixel=b)},hitHMOVE=function(){if(debug&&debugPixel(DEBUG_HMOVE_COLOR),clock<HBLANK_DURATION)return hMoveHitClock=clock,hMoveHitBlank=!0,void performHMOVE();clock<219||(hMoveHitClock=160-clock,hMoveLateHit=!0,hMoveLateHitBlank=clock>=225)},performHMOVE=function(){var a,b=!1;a=hMoveHitBlank?HMP0:HMP0+8,0!==a&&(player0Pixel-=a,player0Pixel>=160?player0Pixel-=160:player0Pixel<0&&(player0Pixel+=160),player0Enabled&&(b=!0)),a=hMoveHitBlank?HMP1:HMP1+8,0!==a&&(player1Pixel-=a,player1Pixel>=160?player1Pixel-=160:player1Pixel<0&&(player1Pixel+=160),player1Enabled&&(b=!0)),a=hMoveHitBlank?HMM0:HMM0+8,0!==a&&(missile0Pixel-=a,missile0Pixel>=160?missile0Pixel-=160:missile0Pixel<0&&(missile0Pixel+=160),missile0Enabled&&(b=!0)),a=hMoveHitBlank?HMM1:HMM1+8,0!==a&&(missile1Pixel-=a,missile1Pixel>=160?missile1Pixel-=160:missile1Pixel<0&&(missile1Pixel+=160),missile1Enabled&&(b=!0)),a=hMoveHitBlank?HMBL:HMBL+8,0!==a&&(ballPixel-=a,ballPixel>=160?ballPixel-=160:ballPixel<0&&(ballPixel+=160),ballEnabled&&(b=!0)),b&&(changeClock=hMoveHitBlank?HBLANK_DURATION+8:HBLANK_DURATION)},vBlankSet=function(a){var b=0!=(2&a);vBlankOn!==b&&(changeVBlankAtClockPlus1(),vBlankOn=b),0!=(64&a)?controlsButtonsLatched=!0:(controlsButtonsLatched=!1,controlsJOY0ButtonPressed?INPT4&=127:INPT4|=128,controlsJOY1ButtonPressed?INPT5&=127:INPT5|=128),0!=(128&a)?(paddleCapacitorsGrounded=!0,paddle0CapacitorCharge=paddle1CapacitorCharge=0,INPT0&=127,INPT1&=127,INPT2&=127,INPT3&=127):paddleCapacitorsGrounded=!1},initLatchesAtPowerOn=function(){collisions=0,INPT0=INPT1=INPT2=INPT3=0,INPT4=INPT5=128},debugPixel=function(a){debugPixels[clock]=a},processDebugPixelsInLine=function(){if(jt.Util.arrayFillSegment(linePixels,0,HBLANK_DURATION+(hMoveHitBlank?8:0),hBlankColor),\ndebugLevel>=3&&videoSignal.monitor.currentLine()%10==0)for(var a=0;a<LINE_WIDTH;a++)debugPixels[a]||(a<HBLANK_DURATION?a%6!=0&&66!=a&&63!=a||(debugPixels[a]=DEBUG_MARKS_COLOR):(a-HBLANK_DURATION-1)%6==0&&(debugPixels[a]=DEBUG_MARKS_COLOR));if(debugLevel>=2)for(a=0;a<LINE_WIDTH;a++)debugPixels[a]&&(linePixels[a]=debugPixels[a],debugPixels[a]=0)},debugSetColors=function(){player0Color=DEBUG_P0_COLOR,player1Color=DEBUG_P1_COLOR,missile0Color=DEBUG_M0_COLOR,missile1Color=DEBUG_M1_COLOR,ballColor=DEBUG_BL_COLOR,playfieldColor=playfieldLeftColor=playfieldRightColor=DEBUG_PF_COLOR,playfieldBackground=DEBUG_BK_COLOR,hBlankColor=debugLevel>=1?DEBUG_HBLANK_COLOR:HBLANK_COLOR,vBlankColor=debugLevel>=1?DEBUG_VBLANK_COLOR:VBLANK_COLOR},debugRestoreColors=function(){hBlankColor=HBLANK_COLOR,vBlankColor=VBLANK_COLOR,playfieldBackground=palette[0],jt.Util.arrayFill(linePixels,hBlankColor),changeAtClock()},info=function(a){console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},debugInfo=function(a){debug&&console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case controls.JOY0_BUTTON:return void(b?(controlsJOY0ButtonPressed=!0,INPT4&=127):(controlsJOY0ButtonPressed=!1,controlsButtonsLatched||(INPT4|=128)));case controls.JOY1_BUTTON:return void(b?(controlsJOY1ButtonPressed=!0,INPT5&=127):(controlsJOY1ButtonPressed=!1,controlsButtonsLatched||(INPT5|=128)))}if(b)switch(a){case controls.DEBUG:return self.debug(debugLevel+1),void self.showDebugMessage();case controls.SHOW_INFO:return void videoSignal.toggleShowInfo();case controls.NO_COLLISIONS:self.debugNoCollisions(!debugNoCollisions),videoSignal.showOSD(debugNoCollisions?\"No Collisions: ON\":\"No Collisions: OFF\",!0)}},this.controlValueChanged=function(a,b){switch(a){case controls.PADDLE0_POSITION:return void(paddle0Position=b);case controls.PADDLE1_POSITION:return void(paddle1Position=b)}},this.saveState=function(a){var b={ccp:changeClockPrevLine,lpx:jt.Util.storeInt32BitArrayToStringBase64(linePixels),vs:vSyncOn,vb:vBlankOn,pfe:playfieldEnabled,pfl:playfieldPatternL,pfr:playfieldPatternR,pfc:playfieldColor,pflc:playfieldLeftColor,pfrc:playfieldRightColor,pfb:playfieldBackground,pfrl:playfieldReflected,pfsc:playfieldScoreMode,pfp:playfieldPriority,be:ballEnabled,bx:ballPixel,blp:ballLineSpritePointer,bc:ballColor,p0e:player0Enabled,p0x:player0Pixel,p0lp:player0LineSpritePointer,p0a:player0Alt,p0af:player0AltFrom,p0al:player0AltLength,p0ao:player0AltCopyOffset,p0c:player0Color,p1e:player1Enabled,p1x:player1Pixel,p1lp:player1LineSpritePointer,p1a:player1Alt,p1af:player1AltFrom,p1al:player1AltLength,p1ao:player1AltCopyOffset,p1c:player1Color,m0e:missile0Enabled,m0x:missile0Pixel,m0lp:missile0LineSpritePointer,m0a:missile0Alt,m0af:missile0AltFrom,m0al:missile0AltLength,m0ao:missile0AltCopyOffset,m0c:missile0Color,m1e:missile1Enabled,m1x:missile1Pixel,m1lp:missile1LineSpritePointer,m1a:missile1Alt,m1af:missile1AltFrom,m1al:missile1AltLength,m1ao:missile1AltCopyOffset,m1c:missile1Color,hmh:hMoveHitBlank,hmc:hMoveHitClock,hmlh:hMoveLateHit,hmlb:hMoveLateHitBlank,co:collisions,cop:collisionsPossible,cod:debugNoCollisions,cbl:controlsButtonsLatched,j0p:controlsJOY0ButtonPressed,j1p:controlsJOY1ButtonPressed,pcg:paddleCapacitorsGrounded,pd0:paddle0Position,pd0c:paddle0CapacitorCharge,pd1:paddle1Position,pd1c:paddle1CapacitorCharge,CTRLPF:CTRLPF,COLUPF:COLUPF,COLUBK:COLUBK,PF0:PF0,PF1:PF1,PF2:PF2,ENABL:ENABL,ENABLd:ENABLd,VDELBL:VDELBL,NUSIZ0:NUSIZ0,COLUP0:COLUP0,REFP0:REFP0,GRP0:GRP0,GRP0d:GRP0d,VDELP0:VDELP0,NUSIZ1:NUSIZ1,COLUP1:COLUP1,REFP1:REFP1,GRP1:GRP1,GRP1d:GRP1d,VDELP1:VDELP1,ENAM0:ENAM0,RESMP0:RESMP0,ENAM1:ENAM1,RESMP1:RESMP1,HMP0:HMP0,HMP1:HMP1,HMM0:HMM0,HMM1:HMM1,HMBL:HMBL,AUDC0:AUDC0,AUDC1:AUDC1,AUDF0:AUDF0,AUDF1:AUDF1,AUDV0:AUDV0,AUDV1:AUDV1};return a&&(b.dl=debugLevel),b},this.loadState=function(a){changeClockPrevLine=a.ccp,jt.Util.restoreStringBase64ToInt32BitArray(a.lpx,linePixels),vSyncOn=a.vs,vBlankOn=a.vb,playfieldEnabled=a.pfe,playfieldPatternL=0|a.pfl,playfieldPatternR=0|a.pfr,playfieldColor=0|a.pfc,playfieldLeftColor=0|a.pflc,playfieldRightColor=0|a.pfrc,playfieldBackground=0|a.pfb,playfieldReflected=a.pfrl,playfieldScoreMode=a.pfsc,playfieldPriority=a.pfp,ballEnabled=a.be,ballPixel=0|a.bx,ballLineSpritePointer=0|a.blp,ballColor=0|a.bc,player0Enabled=a.p0e,player0Pixel=0|a.p0x,player0LineSpritePointer=0|a.p0lp,player0Alt=0|a.p0a,player0AltFrom=0|a.p0af,player0AltLength=0|a.p0al,player0AltCopyOffset=0|a.p0ao,jt.Util.arrayFill(player0AltControl,0),player0Color=0|a.p0c,player1Enabled=a.p1e,player1Pixel=0|a.p1x,player1LineSpritePointer=0|a.p1lp,player1Alt=0|a.p1a,player1AltFrom=0|a.p1af,player1AltLength=0|a.p1al,player1AltCopyOffset=0|a.p1ao,jt.Util.arrayFill(player1AltControl,0),player1Color=0|a.p1c,missile0Enabled=a.m0e,missile0Pixel=0|a.m0x,missile0LineSpritePointer=0|a.m0lp,missile0Alt=0|a.m0a,missile0AltFrom=0|a.m0af,missile0AltLength=0|a.m0al,missile0AltCopyOffset=0|a.m0ao,jt.Util.arrayFill(missile0AltControl,0),missile0Color=0|a.m0c,missile1Enabled=a.m1e,missile1Pixel=0|a.m1x,missile1LineSpritePointer=0|a.m1lp,missile1Alt=0|a.m1a,missile1AltFrom=0|a.m1af,missile1AltLength=0|a.m1al,missile1AltCopyOffset=0|a.m1ao,jt.Util.arrayFill(missile1AltControl,0),missile1Color=0|a.m1c,hMoveHitBlank=a.hmh,hMoveHitClock=0|a.hmc,hMoveLateHit=a.hmlh,hMoveLateHitBlank=a.hmlb,collisions=0|a.co,collisionsPossible=0|a.cop,void 0!==a.cod&&(debugNoCollisions=a.cod),void 0!==a.cbl&&(controlsButtonsLatched=a.cbl,controlsJOY0ButtonPressed=a.j0p,controlsJOY1ButtonPressed=a.j1p,paddleCapacitorsGrounded=a.pcg,paddle0Position=a.pd0,paddle0CapacitorCharge=a.pd0c,paddle1Position=a.pd1,paddle1CapacitorCharge=a.pd1c),CTRLPF=0|a.CTRLPF,COLUPF=0|a.COLUPF,COLUBK=0|a.COLUBK,PF0=0|a.PF0,PF1=0|a.PF1,PF2=0|a.PF2,ENABL=0|a.ENABL,ENABLd=0|a.ENABLd,VDELBL=0|a.VDELBL,NUSIZ0=0|a.NUSIZ0,COLUP0=0|a.COLUP0,REFP0=0|a.REFP0,GRP0=0|a.GRP0,GRP0d=0|a.GRP0d,VDELP0=0|a.VDELP0,NUSIZ1=0|a.NUSIZ1,COLUP1=0|a.COLUP1,REFP1=0|a.REFP1,GRP1=0|a.GRP1,GRP1d=0|a.GRP1d,VDELP1=0|a.VDELP1,ENAM0=0|a.ENAM0,RESMP0=0|a.RESMP0,ENAM1=0|a.ENAM1,RESMP1=0|a.RESMP1,HMP0=0|a.HMP0,HMP1=0|a.HMP1,HMM0=0|a.HMM0,HMM1=0|a.HMM1,HMBL=0|a.HMBL,AUDC0=0|a.AUDC0,audioSignal.getChannel0().setControl(15&AUDC0),AUDC1=0|a.AUDC1,audioSignal.getChannel1().setControl(15&AUDC1),AUDF0=0|a.AUDF0,audioSignal.getChannel0().setDivider(1+(31&AUDF0)),AUDF1=0|a.AUDF1,audioSignal.getChannel1().setDivider(1+(31&AUDF1)),AUDV0=0|a.AUDV0,audioSignal.getChannel0().setVolume(15&AUDV0),AUDV1=0|a.AUDV1,audioSignal.getChannel1().setVolume(15&AUDV1),void 0!==a.dl?this.debug(a.dl):debug&&debugSetColors()}\n;var HBLANK_DURATION=68,LINE_WIDTH=228,VBLANK_COLOR=4278190080,HBLANK_COLOR=4261412864,VSYNC_COLOR=4292730333,DEBUG_P0_COLOR=4278190335,DEBUG_P0_RES_COLOR=4280427195,DEBUG_P0_GR_COLOR=4279308663,DEBUG_P1_COLOR=4294901760,DEBUG_P1_RES_COLOR=4290454050,DEBUG_P1_GR_COLOR=4285993233,DEBUG_M0_COLOR=4284901119,DEBUG_M1_COLOR=4294927974,DEBUG_PF_COLOR=4282681412,DEBUG_PF_GR_COLOR=4281589043,DEBUG_BK_COLOR=4281549875,DEBUG_BL_COLOR=4278255615,DEBUG_MARKS_COLOR=4280295456,DEBUG_HBLANK_COLOR=4282664004,DEBUG_VBLANK_COLOR=4280953386,DEBUG_WSYNC_COLOR=4287103112,DEBUG_HMOVE_COLOR=4294967295,DEBUG_ALT_COLOR=4289374720,READ_ADDRESS_MASK=15,WRITE_ADDRESS_MASK=63,P0C=-63489,P1C=-34689,M0C=-17521,M1C=-8781,PFC=-4395,BLC=-2199,cpu=pCpu,pia=pPia,bus,powerOn=!1,clock,changeClock,changeClockPrevLine,renderClock,linePixels=new Uint32Array(LINE_WIDTH),vSyncOn=!1,vBlankOn=!1,vBlankColor=VBLANK_COLOR,hBlankColor=HBLANK_COLOR,playfieldEnabled=!1,playfieldPatternL=0,playfieldPatternR=0,playfieldColor=4278190080,playfieldLeftColor=4278190080,playfieldRightColor=4278190080,playfieldBackground=4278190080,playfieldReflected=!1,playfieldScoreMode=!1,playfieldPriority=!1,ballEnabled=!1,ballPixel=0,ballLineSpritePointer=0,ballColor=4278190080,player0Enabled=!1,player0Pixel=0,player0LineSpritePointer=0,player0Alt=0,player0AltFrom=0,player0AltLength=0,player0AltCopyOffset=0,player0AltControl=new Uint32Array(4096),player0Color=4278190080,player1Enabled=!1,player1Pixel=0,player1LineSpritePointer=0,player1Alt=0,player1AltFrom=0,player1AltLength=0,player1AltCopyOffset=0,player1AltControl=new Uint32Array(4096),player1Color=4278190080,missile0Enabled=!1,missile0Pixel=0,missile0LineSpritePointer=0,missile0Alt=0,missile0AltFrom=0,missile0AltLength=0,missile0AltCopyOffset=0,missile0AltControl=new Uint32Array(32),missile0Color=4278190080,missile1Enabled=!1,missile1Pixel=0,missile1LineSpritePointer=0,missile1Alt=0,missile1AltFrom=0,missile1AltLength=0,missile1AltCopyOffset=0,missile1AltControl=new Uint32Array(32),missile1Color=4278190080,hMoveHitBlank=!1,hMoveHitClock=0,hMoveLateHit=!1,hMoveLateHitBlank=!1,collisions=0,collisionsPossible=0,controlsButtonsLatched=!1,controlsJOY0ButtonPressed=!1,controlsJOY1ButtonPressed=!1,paddleCapacitorsGrounded=!1,paddle0Position=-1,paddle0CapacitorCharge=0,paddle1Position=-1,paddle1CapacitorCharge=0,debug=!1,debugLevel=0,debugNoCollisions=!1,debugPixels=new Uint32Array(LINE_WIDTH),playerLineSprites=new Uint8Array(262144),missileBallLineSprites=new Uint8Array(2048),playerCopyLengthPerShape=new Uint8Array([13,13,13,13,13,22,13,38]),playerScanStartPerShape=new Uint8Array([5,5,5,5,5,6,5,6]),playerPixelSizePerShape=new Uint8Array([1,1,1,1,1,2,1,4]),playerCopyOffsetsReset=new Uint8Array(1280),playerScanOffsetsShape=new Uint8Array(1280),missileCopyOffsetsReset=new Uint8Array(5120),missileScanOffsetsShape=new Uint8Array(5120),objectsLineSpritePointerDeltaToSingleCopy=new Uint16Array([0,64,128,192,256,0,384,0]),missileCenterOffsetsPerPlayerSize=new Uint8Array([5,5,5,5,5,10,5,18]),videoSignal=new jt.VideoSignal,palette,audioSignal=new jt.TiaAudio(audioSocket),INPT0=0,INPT1=0,INPT2=0,INPT3=0,INPT4=0,INPT5=0,CTRLPF=0,COLUPF=0,COLUBK=0,PF0=0,PF1=0,PF2=0,ENABL=0,ENABLd=0,VDELBL=0,NUSIZ0=0,COLUP0=0,REFP0=0,GRP0=0,GRP0d=0,VDELP0=0,NUSIZ1=0,COLUP1=0,REFP1=0,GRP1=0,GRP1d=0,VDELP1=0,ENAM0=0,RESMP0=0,ENAM1=0,RESMP1=0,HMP0=0,HMP1=0,HMM0=0,HMM1=0,HMBL=0,AUDC0=0,AUDC1=0,AUDF0=0,AUDF1=0,AUDV0=0,AUDV1=0;init(),self.eval=function(code){return eval(code)}},jt.Bus=function(a,b,c,d){\"use strict\";this.powerOn=function(){null!=i&&i.powerOn(),h.powerOn(),g.powerOn(),e.powerOn(),f.powerOn()},this.powerOff=function(){f.powerOff(),e.powerOff(),g.powerOff(),h.powerOff()},this.setCartridge=function(a){i=a,i&&(k=0,i.connectBus(this)),j=i&&i.needsBusMonitoring()},this.getCartridge=function(){return i},this.getTia=function(){return f},this.clockPulse=function(){g.clockPulse(),e.clockPulse()},this.read=function(a){return j&&i.monitorBusBeforeRead(a),(a&l)===m?i?k=i.read(a):k:k=(a&n)===o?h.read(a):(a&r)===s?g.read(a):63&k|f.read(a)},this.write=function(a,b){j&&i.monitorBusBeforeWrite(a,b),k=b,(a&p)===q?f.write(a,b):(a&n)===o?h.write(a,b):(a&r)===s?g.write(a,b):i&&i.write(a,b)},this.saveState=function(){return{d:k}},this.loadState=function(a){k=a.d};var e,f,g,h,i,j=!1,k=256*Math.random()|0,l=4096,m=4096,n=4736,o=128,p=4224,q=0,r=4736,s=640;!function(i){e=a,f=b,g=c,h=d,e.connectBus(i),f.connectBus(i),g.connectBus(i)}(this)},jt.AtariConsole=function(mainVideoClock){\"use strict\";function init(){mainComponentsCreate(),socketsCreate()}function videoFrame(){userPaused&&userPauseMoreFrames--<=0||(videoStandardAutoDetectionInProgress&&videoStandardAutoDetectionTry(),tia.frame())}function vSynchToggleMode(){if(-1===vSynchMode)return void self.showOSD(\"V-Synch is DISABLED / UNSUPPORTED\",!0,!0);vSynchMode=vSynchMode?0:1,updateVideoSynchronization(),self.showOSD(\"V-Synch: \"+(vSynchMode?\"ON\":\"OFF\"),!0),Javatari.userPreferences.current.vSynch=vSynchMode,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()}function showVideoStandardMessage(){self.showOSD((videoStandardIsAuto?\"AUTO: \":\"\")+videoStandard.name,!0)}function updateVideoSynchronization(){videoPulldown=1===vSynchMode?videoStandard.pulldowns[videoClockSocket.getVSynchNativeFrequency()]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER,videoPulldownStep=0,videoClockUpdateSpeed()}function setDefaults(){setVideoStandardAuto(!0),speedControl=1,alternateSpeed=null,videoClockUpdateSpeed(),tia.debug(0),tia.debugNoCollisions(!1)}function videoClockUpdateSpeed(){videoClockSocket.setVSynch(1===vSynchMode);var a=videoPulldown.frequency*(alternateSpeed||speedControl)|0;videoClockSocket.setFrequency(a,videoPulldown.divider),audioSocket.setFps(a/videoPulldown.divider)}function VideoClockSocket(){this.connectClock=function(b){a=b},this.getVSynchNativeFrequency=function(){return a.getVSynchNativeFrequency()},this.setVSynch=function(b){a.setVSynch(b)},this.setFrequency=function(b,c){a.setFrequency(b,c)};var a}function CartridgeSocket(){this.insert=function(a,b){b&&self.powerIsOn&&self.powerOff(),setCartridge(a),b&&!self.powerIsOn&&self.powerOn(),saveStateSocket.externalStateChange()},this.inserted=function(){return getCartridge()},this.cartridgeInserted=function(a,b){tia.getAudioOutput().cartridgeInserted(a,b),consoleControlsSocket.cartridgeInserted(a,b),saveStateSocket.cartridgeInserted(a,b),tia.getVideoOutput().monitor.cartridgeInserted(a,b)},this.loadCartridgeData=function(a,b,c){},this.saveCartridgeDataFile=function(a){}}function ConsoleControlsSocket(){this.connectControls=function(b){a=b},this.cartridgeInserted=function(b,c){a&&a.cartridgeInserted(b,c)},this.controlStateChanged=function(a,b){self.controlStateChanged(a,b),pia.controlStateChanged(a,b),tia.controlStateChanged(a,b),tia.getVideoOutput().monitor.controlStateChanged(a,b)},this.controlValueChanged=function(a,b){tia.controlValueChanged(a,b)},this.controlsStateReport=function(a){self.controlsStateReport(a),pia.controlsStateReport(a)},this.controlsStatesRedefined=function(){tia.getVideoOutput().monitor.controlsStatesRedefined()},this.firePowerAndUserPauseStateUpdate=function(){a.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused),tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused)},this.releaseControllers=function(){a.releaseControllers()},this.controlsClockPulse=function(){a.controlsClockPulse()},this.getControlReport=function(a){switch(a){case jt.ConsoleControls.VIDEO_STANDARD:return{label:videoStandardIsAuto?\"Auto\":videoStandard.name,active:!videoStandardIsAuto};case jt.ConsoleControls.VSYNCH:return{label:-1===vSynchMode?\"DISABL\":vSynchMode?\"ON\":\"OFF\",active:1===vSynchMode};case jt.ConsoleControls.NO_COLLISIONS:return{label:tia.getDebugNoCollisions()?\"ON\":\"OFF\",active:tia.getDebugNoCollisions()};default:return{label:\"Unknown\",active:!1\n}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){a.externalStateChange()},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD(\"State \"+c+\" saved\",!0):self.showOSD(\"State \"+c+\" save failed\",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD(\"State \"+c+\" load failed, wrong version\",!0):(self.powerIsOn||self.powerOn(!0),loadState(d),void self.showOSD(\"State \"+c+\" loaded\",!0)):void self.showOSD(\"State \"+c+\" not found\",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD(\"State Cartridge saved\",!0):self.showOSD(\"State file save failed\",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD(\"State file load failed, wrong version\",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD(\"State file loaded\",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.socketsConnected=function(){setDefaults()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),a||consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||(this.powerOn(),bus.getCartridge()||this.showOSD(\"NO CARTRIDGE INSERTED!\",!1,!0))},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns())},this.videoClockPulseApplyPulldowns=function(a){if(self.powerIsOn){for(;a-- >0;)videoFrame();userPaused||audioSocket.audioFinishFrame()}},this.videoClockPulseGetNextPulldowns=function(){return 1===videoPulldown.steps?1:(--videoPulldownStep<0&&(videoPulldownStep=videoPulldown.steps-1),videoPulldown.cadence[videoPulldownStep])},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.vSynchSetSupported=function(a){var b=Javatari.userPreferences.current.vSynch;vSynchMode=-1!==Javatari.SCREEN_VSYNCH_MODE&&a?Javatari.SCREEN_VSYNCH_MODE>=0?Javatari.SCREEN_VSYNCH_MODE:null!==b&&b>=0?b:1:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization())},setVideoStandardAuto=function(a){videoStandardIsAuto=a,a&&(self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC))},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries<VIDEO_STANDARD_AUTO_DETECTION_FRAMES||(a?a!==videoStandard&&(setVideoStandard(a),showVideoStandardMessage()):self.showOSD(\"AUTO: FAILED\",!0,!0),videoStandardAutoDetectionInProgress=!1)},setVideoStandardForced=function(a){videoStandardIsAuto=!1,setVideoStandard(a)},powerFry=function(){ram.powerFry(),saveStateSocket.externalStateChange()},cycleCartridgeFormat=function(){},saveState=function(a){var b={t:tia.saveState(a),p:pia.saveState(),r:ram.saveState(),b:bus.saveState(),c:cpu.saveState(),ca:getCartridge()&&getCartridge().saveState(),vsa:videoStandardIsAuto,vs:videoStandard.name};return a&&(b.pw=self.powerIsOn,b.up=userPaused,b.upf=userPauseMoreFrames),b};this.saveState=saveState;var loadState=function(a){void 0!==a.pw&&self.powerIsOn!==a.pw&&(a.pw?self.powerOn():self.powerOff()),void 0!==a.up&&self.userPause(a.up),void 0!==a.upf&&(userPauseMoreFrames=a.upf),videoClockUpdateSpeed(),tia.loadState(a.t),pia.loadState(a.p),ram.loadState(a.r),a.b&&bus.loadState(a.b),cpu.loadState(a.c),setCartridge(a.ca&&jt.CartridgeCreator.recreateCartridgeFromSaveState(a.ca,getCartridge())),void 0!==a.vsa&&setVideoStandardAuto(a.vsa),setVideoStandard(jt.VideoStandard[a.vs]),consoleControlsSocket.firePowerAndUserPauseStateUpdate(),consoleControlsSocket.controlsStatesRedefined(),saveStateSocket.externalStateChange()};this.loadState=loadState;var mainComponentsCreate=function(){cpu=new jt.M6502,pia=new jt.Pia,tia=new jt.Tia(cpu,pia),self.tia=tia,ram=new jt.Ram,bus=new jt.Bus(cpu,tia,pia,ram)},socketsCreate=function(){videoClockSocket=new VideoClockSocket,consoleControlsSocket=new ConsoleControlsSocket,cartridgeSocket=new CartridgeSocket,saveStateSocket=new SaveStateSocket,audioSocket=new AudioSocket,tia.getAudioOutput().connectAudioSocket(audioSocket)};this.powerIsOn=!1;var isLoading=!1,userPaused=!1,userPauseMoreFrames=0,systemPaused=!1,speedControl=1,alternateSpeed=!1,cpu,pia,tia,ram,bus,videoStandard,videoPulldown,videoPulldownStep,videoClockSocket,consoleControlsSocket,cartridgeSocket,saveStateSocket,audioSocket,videoStandardIsAuto=!1,videoStandardAutoDetectionInProgress=!1,videoStandardAutoDetectionTries=0,vSynchMode=-1,VIDEO_STANDARD_AUTO_DETECTION_FRAMES=90,SPEEDS=[.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.25,1.5,2,3,5,10],SPEED_FAST=10,SPEED_SLOW=.3,controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){if(a===controls.FAST_SPEED)return void(b&&alternateSpeed!==SPEED_FAST?(alternateSpeed=SPEED_FAST,videoClockUpdateSpeed(),self.showOSD(\"FAST FORWARD\",!0)):b||alternateSpeed!==SPEED_FAST||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)))\n;if(a===controls.SLOW_SPEED)return void(b&&alternateSpeed!==SPEED_SLOW?(alternateSpeed=SPEED_SLOW,videoClockUpdateSpeed(),self.showOSD(\"SLOW MOTION\",!0)):b||alternateSpeed!==SPEED_SLOW||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)));if(b)switch(a){case controls.POWER:self.powerIsOn?self.powerOff():self.userPowerOn();break;case controls.POWER_OFF:self.powerIsOn&&self.powerOff();break;case controls.POWER_FRY:powerFry();break;case controls.PAUSE:return self.userPause(!userPaused,!1),void self.getVideoOutput().showOSD(userPaused?\"PAUSE\":\"RESUME\",!0);case controls.PAUSE_AUDIO_ON:return self.userPause(!userPaused,!0),void self.getVideoOutput().showOSD(userPaused?\"PAUSE with AUDIO ON\":\"RESUME\",!0);case controls.FRAME:return void(userPaused&&(userPauseMoreFrames=1));case controls.INC_SPEED:case controls.DEC_SPEED:case controls.NORMAL_SPEED:case controls.MIN_SPEED:var c=SPEEDS.indexOf(speedControl);a===controls.INC_SPEED&&c<SPEEDS.length-1?++c:a===controls.DEC_SPEED&&c>0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD(\"Speed: \"+(100*speedControl|0)+\"%\",!0),videoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(255&a),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(255&a),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto(!0),showVideoStandardMessage();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat();break;case controls.DEFAULTS:setDefaults(),self.showOSD(\"Default Settings\",!0)}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:\"J_UP\",mask:1,n:\"UP\"},J_DOWN:{button:\"J_DOWN\",mask:2,n:\"DOWN\"},J_LEFT:{button:\"J_LEFT\",mask:4,n:\"LEFT\"},J_RIGHT:{button:\"J_RIGHT\",mask:8,n:\"RIGHT\"},J_A:{button:\"J_A\",mask:16,n:\"A\"},J_B:{button:\"J_B\",mask:32,n:\"B\"},J_AB:{button:\"J_AB\",mask:48,n:\"AB\"},J_X:{button:\"J_X\",n:\"X\"},J_Y:{button:\"J_Y\",n:\"Y\"},J_L:{button:\"J_L\",n:\"L\"},J_R:{button:\"J_R\",n:\"R\"},J_BACK:{button:\"J_BACK\",n:\"BACK\"},J_START:{button:\"J_START\",n:\"START\"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,PADDLE0_POSITION:16384,PADDLE1_POSITION:16896,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521,LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){\"use strict\";this.source=a,this.content=b,this.info=c||jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){\"use strict\";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))},\ndata:\"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\"\n},jt.Cartridge=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.getDataDesc=function(){return null},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes||[])},this.format=null,this.rom=null,this.bytes=null,this.saveState=function(){},this.loadState=function(a){}},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){\"use strict\";this.read=function(a){return c[a&d]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c};var c,d=4095;a&&function(d){d.rom=a,d.format=b,c=new Array(4096),d.bytes=c;for(var e=a.content.length,f=0;f<c.length;f+=e)jt.Util.arrayCopy(a.content,0,c,f,e)}(this)},jt.Cartridge4K.prototype=jt.Cartridge.base,jt.Cartridge4K.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge4K;return c.loadState(a),c},jt.Cartridge2K_CV=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b<1024?e[b]:d[b]},this.write=function(a,b){var d=c(a);d>=1024&&d<=2047&&(e[d-1024]=b)};var c=function(a){return a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),ra:jt.Util.compressInt8BitArrayToStringBase64(e)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,e)};var d,e=jt.Util.arrayFill(new Array(1024),0),f=4095;a&&function(c){c.rom=a,c.format=b,d=new Array(4096),c.bytes=d;for(var e=a.content.length,f=0;f<d.length;f+=e)jt.Util.arrayCopy(a.content,0,d,f,e)}(this)},jt.Cartridge2K_CV.prototype=jt.Cartridge.base,jt.Cartridge2K_CV.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge2K_CV;return c.loadState(a),c},jt.CartridgeBankedByMaskedRange=function(a,b,c,d,e){\"use strict\";this.read=function(a){var b=f(a);return n&&b>=k&&b<2*k?l[b-k]:g[m+b]},this.write=function(a,b){var c=f(a);c<k&&(n||j)&&(n||(n=!0),l[c]=b)};var f=function(a){var b=a&o;return b>=h&&b<=i&&(m=p*(b-h)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(g),bo:m,bb:h,es:k,tb:i,s:0|n,sa:0|j,e:l&&jt.Util.compressInt8BitArrayToStringBase64(l)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),g=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,g),this.bytes=g,m=a.bo,h=a.bb,k=a.es,i=a.tb,n=!!a.s,j=!!a.sa,l=a.e&&jt.Util.uncompressStringBase64ToInt8BitArray(a.e,l)};var g,h,i,j,k,l,m=0,n=!1,o=4095,p=4096;a&&function(f){f.rom=a,f.format=b,g=a.content,f.bytes=g;var m=g.length/p;h=c,i=h+m-1,k=e,null==d||void 0==d?(n=!1,j=!0):(n=!!d,j=!1),l=!1!==d?jt.Util.arrayFill(new Array(k),0):null}(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.recreateFromSaveState=function(a,b){var c=b||new jt.CartridgeBankedByMaskedRange;return c.loadState(a),c},jt.Cartridge8K_E0=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b<1024?d[e+b]:b<2048?d[f+b-1024]:b<3072?d[g+b-2048]:d[4096+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&h;return b>=4064&&b<=4087&&(b<=4071?e=1024*(b-4064):b<=4079?f=1024*(b-4072):b<=4087&&(g=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),s0:e,s1:f,s2:g}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.s0,f=a.s1,g=a.s2};var d,e=0,f=0,g=0,h=4095;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_E0;return c.loadState(a),c},jt.Cartridge64K_F0=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&f;return b==i&&(e+=h)>=g&&(e=0),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=65536,h=4096,i=4080;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_F0;return c.loadState(a),c},jt.Cartridge8K_FE=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){return 0!=(8192&a)?0!==e&&(e=0):e!=g&&(e=g),a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=4096;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_FE;return c.loadState(a),c},jt.Cartridge16K_E7=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b>=2304&&b<=2559?g[i+b-2304]:h&&b>=1024&&b<=2047?g[b-1024]:b<l?d[e+b]:d[m+b]},this.write=function(a,b){var d=c(a);d>=2048&&d<=2303?g[i+d-2048]=b:h&&d<=1023&&(g[d]=b)};var c=function(a){var b=a&j;return b>=4064&&b<=4075&&(b<=4070?e=k*(b-4064):4071==b?h=!0:b<=4075&&(i=f+n*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e,rs:h,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(g)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo,h=a.rs,i=a.ro,g=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,g)};var d,e=0,f=1024,g=jt.Util.arrayFill(new Array(2048),0),h=!1,i=f,j=4095,k=2048,l=2048,m=16384-k-l,n=256;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge16K_E7;return c.loadState(a),c},jt.Cartridge10K_DPCa=function(a,b){\"use strict\";this.powerOn=function(){x=o,y=0},this.connectBus=function(a){k=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=c(a);return b<=63||b>=2048&&b<=2111?e(255&b):l[q+b]},this.write=function(a,b){var d=c(a);(d>=64&&d<=127||d>=2112&&d<=2175)&&f(255&d,b)},this.audioClockPulse=function(){if((y+x|0)>(0|y))for(var a=5;a<=7;a++)w[a]&&(s[a]--,255==(255&s[a])&&g(a,65280&s[a]|t[a]),i(a),z||(z=!0));y+=x,z&&(d(),k.setVolume(A))};var c=function(a){var b=a&n;return 4088===b?q=0:4089===b&&(q=4096),b},d=function(){A=m[(w[5]?4&v[5]:0)|(w[6]?2&v[6]:0)|(w[7]?1&v[7]:0)],z=!1},e=function(a){var b;return a>=0&&a<=3?(j(),r):a>=4&&a<=7?(z&&d(),A):a>=8&&a<=15?(b=l[p-s[a-8]],h(a-8),b):a>=16&&a<=23?(b=l[p-s[a-16]]&v[a-16],h(a-16),b):a>=24&&a<=31?(b=l[p-s[a-24]]&v[a-24],h(a-24),\nb=240&b|15&b):a>=32&&a<=39?(b=l[p-s[a-32]]&v[a-32],h(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=l[p-s[a-40]]&v[a-40],h(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=l[p-s[a-48]]&v[a-48],h(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?v[a-56]:0},f=function(a,b){if(a>=64&&a<=71){var c=a-64;return t[c]=b,void((255&s[c])===t[c]&&(v[c]=255))}return a>=72&&a<=79?(u[a-72]=b,void(v[a-72]=0)):a>=80&&a<=87?void g(a-80,65280&s[a-80]|255&b):a>=88&&a<=91?void g(a-88,255&s[a-88]|(7&b)<<8):92==a?void g(4,255&s[4]|(7&b)<<8):a>=93&&a<=95?(g(a-88,(255&s[a-88])+((7&b)<<8)),void(w[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(r=0))},g=function(a,b){s[a]=b},h=function(a){var b=s[a]-1;b<0&&(b=2047),g(a,b),i(a)},i=function(a){var b=255&s[a];b==t[a]?v[a]=255:b==u[a]&&(v[a]=0)},j=function(){255===(r=255&(r<<1|1&~(r>>7^r>>5^r>>4^r>>3)))&&(r=0)};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(l),bo:q,rn:r,fp:jt.Util.compressInt8BitArrayToStringBase64(s),fs:jt.Util.compressInt8BitArrayToStringBase64(t),fe:jt.Util.compressInt8BitArrayToStringBase64(u),fm:jt.Util.compressInt8BitArrayToStringBase64(v),a:jt.Util.compressInt8BitArrayToStringBase64(w)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),l=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,l),this.bytes=l,q=a.bo,r=a.rn,s=jt.Util.uncompressStringBase64ToInt8BitArray(a.fp,s),t=jt.Util.uncompressStringBase64ToInt8BitArray(a.fs,t),u=jt.Util.uncompressStringBase64ToInt8BitArray(a.fe,u),v=jt.Util.uncompressStringBase64ToInt8BitArray(a.fm,v),w=jt.Util.uncompressStringBase64ToInt8BitArray(a.a,w)};var k,l,m=[0,5,5,10,5,10,10,15],n=4095,o=.62,p=10239,q=0,r=0,s=jt.Util.arrayFill(new Array(8),0),t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=o,y=0,z=!0,A=0;a&&function(c){c.rom=a,c.format=b,l=a.content,c.bytes=l}(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge10K_DPCa;return c.loadState(a),c},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){\"use strict\";var d=this;this.connectBus=function(a){k=a},this.connectSaveStateSocket=function(a){l=a},this.read=function(a){var b,c=e(a);if(b=c>=256&&c<512?r[c-256]:m[p+c],c!==x)return b;if(0===t){var d=r[y];if(1===d||2===d)return f(d),64|b}return 0===t?191&b:(i(),0!==t?64|b:191&b)},this.write=function(a,b){var c=e(a);c<256&&(r[c]=b)};var e=function(a){var b=a&v;return b>=q&&b<=n&&(p=o+w*(b-q)),b},f=function(a){t=a,s=0,1===a?g():2===a&&h()},g=function(){if(k.getTia().getVideoOutput().showOSD(\"Reading from Cartridge Flash Memory...\",!0),l){var a=l.getMedia().loadResource(j());a&&(u=jt.Util.uncompressStringBase64ToInt8BitArray(a,u))}jt.Util.arrayCopy(u,0,r)},h=function(){k.getTia().getVideoOutput().showOSD(\"Writing to Cartridge Flash Memory...\",!0),jt.Util.arrayCopy(r,0,u),l&&l.getMedia().saveResource(j(),jt.Util.compressInt8BitArrayToStringBase64(u))},i=function(){++s>140&&(s=0,t=0,r[y]=0,k.getTia().getVideoOutput().showOSD(\"Done.\",!0),l&&l.externalStateChange())},j=function(){return\"hfm\"+d.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(m),rs:o,bo:p,tb:n,e:jt.Util.compressInt8BitArrayToStringBase64(r),ho:t,ht:s}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,m),this.bytes=m,o=a.rs||0,p=a.bo,n=a.tb,r=jt.Util.uncompressStringBase64ToInt8BitArray(a.e,r),t=a.ho||0,s=a.ht||0};var k,l,m,n,o=0,p=0,q=4085,r=jt.Util.arrayFill(new Array(256),0),s=0,t=0,u=jt.Util.arrayFill(new Array(256),0),v=4095,w=4096,x=4084,y=255;a&&function(d){d.rom=a,d.format=b,m=a.content,d.bytes=m,o=c||0,p=o;var e=(m.length-o)/w;n=q+e-1}(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge24K_28K_32K_FA2;return c.loadState(a),c},jt.CartridgeBankedByBusMonitoring=function(a,b){\"use strict\";this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){\"use strict\";this.read=function(a){var b=a&g;return b>=i?c[e+b]:c[f+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=d&&(f=c*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:f,sm:d,fo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,f=a.bo,d=a.sm,e=a.fo};var c,d,e,f=0,g=4095,h=2048,i=2048;a&&function(f){f.rom=a,f.format=b,c=a.content,f.bytes=c,d=(c.length-h)/h-1,e=c.length-2*h}(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3F;return c.loadState(a),c},jt.Cartridge8K_512K_3E=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b>=m?d[f+b]:i>=0&&b<1024?j[i+b]||0:d[h+b]},this.write=function(a,b){if(!(i<0)){var d=c(a);d>=1024&&d<=2047&&(j[i+d-1024]=b)}};var c=function(a){return a&k};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=e&&(h=c*l,i=-1))}if(62===a){i=(255&b)*g}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:h,sm:e,fo:f,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(j)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,h=a.bo,e=a.sm,f=a.fo,i=a.ro,j=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,j)};var d,e,f,g=1024,h=0,i=-1,j=jt.Util.arrayFill(new Array(g),0),k=4095,l=2048,m=2048;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d,e=(d.length-l)/l-1,f=d.length-2*l}(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3E;return c.loadState(a),c},jt.Cartridge8K_256K_SB=function(a,b){\"use strict\";this.read=function(a){return c[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048==(6144&a)){var b=127&a;b>d||(e=b*g)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:e,m:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,e=a.bo,d=a.m};var c,d,e=0,f=4095,g=4096;a&&function(e){e.rom=a,e.format=b,c=a.content,e.bytes=c,d=c.length/g-1}(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_256K_SB;return c.loadState(a),c},jt.Cartridge8K_64K_AR=function(a,b){\"use strict\";this.powerOn=function(){g(0),D=0},this.connectBus=function(a){c=a},this.read=function(a){return f<M?d[o+f]:d[p+f-M]},this.write=function(a,b){p===N&&f>=K&&f<K+256&&h(f-K)},this.performBankSwitchOnMonitoredAccess=function(a){return f=a&Q,8184===(a&=8191)?void g(q):t>0?void(a!==s&&(s=a,0==--t&&(a&R)===S&&(f<M?d[o+f]=q:p<N&&(d[p+f-M]=q)))):void((a&R)===S&&f<=255&&(q=f,r&&(s=a,t=5)))};var c,d,e,f,g=function(a){switch(a>>2&7){case 0:o=2*M,p=N;break;case 1:\no=0*M,p=N;break;case 2:o=2*M,p=0*M;break;case 3:o=0*M,p=2*M;break;case 4:o=2*M,p=N;break;case 5:o=1*M,p=N;break;case 6:o=2*M,p=1*M;break;case 7:o=1*M,p=2*M;break;default:throw new Error(\"Invalid bank configuration\")}t=0,r=0!=(2&a),u=0==(1&a)},h=function(b){for(var d=!1;;){if(D>a.content.length-1){if(d)return 0===b?c.getTia().getVideoOutput().showOSD(\"Could not load Tape from Start. Not a Start Tape ROM!\",!0):c.getTia().getVideoOutput().showOSD(\"Could not find next Part to load in Tape!\",!0),void m(!1);D=0,d=!0}if(jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,D)===b)return 0===b?c.getTia().getVideoOutput().showOSD(\"Loaded Tape from Start\",!0):c.getTia().getVideoOutput().showOSD(\"Loaded next Part from Tape\",!0),void i();D+=O}},i=function(){j(),k(),l()},j=function(){jt.Util.arrayCopy(a.content,D+4*M,E,0,E.length),v=E[1]<<8|255&E[0],w=E[2],x=E[3],y=E[4],z=E[5],A=E[7]<<8|255&E[6],e=jt.Util.arrayFill(new Array(x),0),jt.Util.arrayCopy(E,16,e,0,x)},k=function(){jt.Util.arrayFillSegment(d,7*L,8*L-1,0);for(var b=D,c=0,f=e.length;c<f;c++){var g=e[c],h=(3&g)*M,i=(g>>2)*L;h+i+255<N&&jt.Util.arrayCopy(a.content,b,d,h+i,L),b+=L}D+=O},l=function(){d[N+G-63488]=w,d[N+F-63488]=z,d[N+I-63488]=B[C++],C>30&&(C=0),d[N+H-63488]=255&v,d[N+H+1-63488]=v>>8&255,m(!0)},m=function(a){d[N+J-63488]=a?1:0},n=function(){var a=jt.Util.uncompressStringBase64ToInt8BitArray(P);jt.Util.arrayCopy(a,0,d,N,M)},o=0,p=0,q=0,r=!1,s=-1,t=0,u=!1,v=0,w=0,x=0,y=0,z=0,A=0,B=new Array(31),C=0,D=0,E=jt.Util.arrayFill(new Array(256),0),F=64256,G=64257,H=64258,I=64260,J=64261,K=3072,L=256,M=8*L,N=3*M,O=4*M+256,P=\"7dSxCsIwEAbgv6niGkeddPVZ8kCOXc43yCIokkGIUN+gLxAoZHTxHRxjYq2xk7vSIPS75bb7uYNTuOJWu/bod3iU42BzUTiBe9sTzSjToBnNBVxfQz/nQ+2NhA2a05KYmhhjmxhoQZymxGil8gpeesOdyioW5DN25yxsiri3chQOUO1WeCSI/hPx9AJ/m/576KROMUhlfdE4dQ+AfJoPNBikgOZdLw==\",Q=4095,R=4096,S=4096;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(!0),b:jt.Util.compressInt8BitArrayToStringBase64(d),b0o:o,b1o:p,vw:q,we:r,la:s,ac:t,bp:u,rs:v,rc:w,rp:x,rk:y,rm:z,rb:A,ro:e,to:D,rnd:jt.Util.storeInt8BitArrayToStringBase64(B),rnc:C}},this.loadState=function(b){this.format=jt.CartridgeFormats[b.f],this.rom=a=jt.ROM.loadState(b.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(b.b,d),this.bytes=d,o=b.b0o,p=b.b1o,q=b.vw,r=b.we,s=b.la,t=b.ac,u=b.bp,v=b.rs,w=b.rc,x=b.rp,y=b.rk,z=b.rm,A=b.rb,e=b.ro,D=b.to,jt.Util.restoreStringBase64ToInt8BitArray(b.rnd,B),C=b.rnc},a&&function(c){c.rom=a,c.format=b,d=jt.Util.arrayFill(new Array(4*M)),c.bytes=d,n();for(var e=0;e<31;++e)B[e]=256*Math.random()|0}(this)},jt.Cartridge8K_64K_AR.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_64K_AR.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_64K_AR;return c.loadState(a),c},jt.Cartridge8K_64K_AR.HEADER_SIZE=256,jt.Cartridge8K_64K_AR.PAGE_SIZE=256,jt.Cartridge8K_64K_AR.BANK_SIZE=8*jt.Cartridge8K_64K_AR.PAGE_SIZE,jt.Cartridge8K_64K_AR.PART_SIZE=4*jt.Cartridge8K_64K_AR.BANK_SIZE+jt.Cartridge8K_64K_AR.HEADER_SIZE,jt.Cartridge8K_64K_AR.peekPartNoOnTape=function(a,b){return a[b+4*jt.Cartridge8K_64K_AR.BANK_SIZE+5]},jt.Cartridge8K_64K_AR.checkTape=function(a){return 0===jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,0)||(jt.Util.warning(\"Wrong Supercharger Tape Part ROM! Please load a Full Tape ROM file\"),!1)},jt.Cartridge64K_X07=function(a,b){\"use strict\";this.read=function(a){return c[d+(a&e)]},this.performBankSwitchOnMonitoredAccess=function(a){2061==(6159&a)?d=((240&a)>>4)*f:d>=g&&0==(6272&a)&&(d=(0==(64&a)?14:15)*f)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.bo};var c,d=0,e=4095,f=4096,g=14*f;a&&function(d){d.rom=a,d.format=b,c=a.content,d.bytes=c}(this)},jt.Cartridge64K_X07.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge64K_X07.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_X07;return c.loadState(a),c},jt.Cartridge8K_0840=function(a,b){\"use strict\";this.read=function(a){return c[d+(a&e)]},this.performBankSwitchOnMonitoredAccess=function(a){var b=6208&a;2048===b?0!==d&&(d=0):2112===b&&d!==f&&(d=f)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.bo};var c,d=0,e=4095,f=4096;a&&function(d){d.rom=a,d.format=b,c=a.content,d.bytes=c}(this)},jt.Cartridge8K_0840.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_0840.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_0840;return c.loadState(a),c},jt.Cartridge8K_UA=function(a,b){\"use strict\";this.read=function(a){return c[d+(a&e)]},this.performBankSwitchOnMonitoredAccess=function(a){544===a?0!==d&&(d=0):576===a&&d!==f&&(d=f)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.bo};var c,d=0,e=4095,f=4096;a&&function(d){d.rom=a,d.format=b,c=a.content,d.bytes=c}(this)},jt.Cartridge8K_UA.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_UA.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_UA;return c.loadState(a),c},jt.CartridgeFormats={\"4K\":{name:\"4K\",desc:\"4K Atari\",priority:101,tryFormat:function(a){if(a.content.length>=8&&a.content.length<=4096&&4096%a.content.length==0)return this},createCartridgeFromRom:function(a){return new jt.Cartridge4K(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge4K.recreateFromSaveState(a,b)}},CV:{name:\"CV\",desc:\"2K Commavid +RAM\",priority:102,tryFormat:function(a){if(2048===a.content.length||4096===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge2K_CV(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge2K_CV.recreateFromSaveState(a,b)}},E0:{name:\"E0\",desc:\"8K Parker Bros.\",priority:102,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_E0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_E0.recreateFromSaveState(a,b)}},F0:{name:\"F0\",desc:\"64K Dynacom Megaboy\",priority:101,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_F0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_F0.recreateFromSaveState(a,b)}},FE:{name:\"FE\",desc:\"8K Robotank/Decathlon\",priority:103,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_FE(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_FE.recreateFromSaveState(a,b)}},E7:{name:\"E7\",desc:\"16K M-Network\",priority:102,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge16K_E7(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge16K_E7.recreateFromSaveState(a,b)}},F8:{name:\"F8\",desc:\"8K Atari (+RAM)\",priority:101,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F6:{name:\"F6\",desc:\"16K Atari (+RAM)\",priority:101,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){\nreturn new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F4:{name:\"F4\",desc:\"32K Atari (+RAM)\",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},FA2cu:{name:\"FA2cu\",desc:\"32K CBS RAM+ CU Image\",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)},cuMagicWord:[30,171,173,16]},FA2:{name:\"FA2\",desc:\"24K/28K/32K CBS RAM+\",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)}},FA:{name:\"FA\",desc:\"12K CBS RAM Plus\",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},EF:{name:\"EF\",desc:\"8K-64K H. Runner (+RAM)\",priority:114,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},DPC:{name:\"DPC\",desc:\"10K DPC Pitfall 2 (Enhanced)\",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge10K_DPCa.recreateFromSaveState(a,b)}},\"3F\":{name:\"3F\",desc:\"8K-512K Tigervision\",priority:112,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3F.recreateFromSaveState(a,b)}},\"3E\":{name:\"3E\",desc:\"8K-512K Tigervision (+RAM)\",priority:111,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3E.recreateFromSaveState(a,b)}},X07:{name:\"X07\",desc:\"64K AtariAge\",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_X07.recreateFromSaveState(a,b)}},\"0840\":{name:\"0840\",desc:\"8K Econobanking\",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_0840.recreateFromSaveState(a,b)}},UA:{name:\"UA\",desc:\"8K UA Limited\",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_UA.recreateFromSaveState(a,b)}},SB:{name:\"SB\",desc:\"8K-256K Superbanking\",priority:113,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_256K_SB.recreateFromSaveState(a,b)}},AR:{name:\"AR\",desc:\"8K-64K Arcadia/Supercharger\",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE==0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8&&jt.Cartridge8K_64K_AR.checkTape(a))return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_64K_AR.recreateFromSaveState(a,b)}}},jt.CartridgeFormatsUserOptions=[\"4K\",\"CV\",\"E0\",\"F0\",\"FE\",\"E7\",\"F8\",\"F6\",\"F4\",\"FA2cu\",\"FA2\",\"FA\",\"EF\",\"DPC\",\"3F\",\"3E\",\"X07\",\"0840\",\"UA\",\"SB\",\"AR\"],jt.CartridgeCreatorImpl=function(){\"use strict\";this.createCartridgeFromRom=function(b){var c=a.getForROM(b);if(c){var d=jt.CartridgeFormats[c];if(d.tryFormat(b))return jt.Util.log(\"USER Format selected: \"+d.desc),d.createCartridgeFromRom(b)}var e=this.getBestFormatOption(b);if(e)return jt.Util.log(\"AUTO Format selected: \"+e.name+\": \"+e.desc+\", priority: \"+e.priority+(e.priorityBoosted?\" (\"+e.priorityBoosted+\")\":\"\")),e.createCartridgeFromRom(b)},this.recreateCartridgeFromSaveState=function(a,b){var c=jt.CartridgeFormats[a.f];if(!c)throw new Error(\"Unsupported ROM Format: \"+a.f);return b&&b.format!==c&&(b=null),c.recreateCartridgeFromSaveState(a,b)},this.changeCartridgeFormat=function(a,b){return b.createCartridgeFromRom(a.rom)},this.getBestFormatOption=function(a){var c=b(a);return 0===c.length?void 0:c[0]},this.getUserFormatOptionNames=function(a){for(var b=[],c=0,d=jt.CartridgeFormatsUserOptions.length;c<d;++c){var e=jt.CartridgeFormatsUserOptions[c];jt.CartridgeFormats[e].tryFormat(a)&&b.push(e)}return b},this.produceInfo=function(a,b){var e=a.content.length,f=jt.MD5(a.content);a.content.length>e&&a.content.splice(e);var g=jt.CartridgeDatabase[f];return g?jt.Util.log(g.n+\" (\"+f+\")\"):(g=c(a.source),jt.Util.log(\"Unknown ROM: \"+g.n+\" (\"+f+\")\")),d(g,a.source,f,b),g},this.setUserROMFormats=function(b){a=b};var a,b=function(a){var b,c,d=[];for(var f in jt.CartridgeFormats)try{if(!(b=jt.CartridgeFormats[f].tryFormat(a)))continue;e(b,a.info),d.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}return d.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),d},c=function(a){var b={n:\"Unknown\"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf(\"/\"),e=c.lastIndexOf(\"\\\\\"),f=c.lastIndexOf(\"?\"),g=Math.max(d,Math.max(e,f));g>=0&&g<c.length-1&&(c=c.substring(g+1));var h=c.lastIndexOf(\".\");return h>=0&&(c=c.substring(0,h)),b.n=c.trim()||\"Unknown\",b},d=function(a,b,c,d){a.h=c,a.l||(a.l=f(a.n));var e=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!e.match(l+\"JOYSTICK(S)?\"+m)))if(e.match(l+\"PADDLE(S)?\"+m))a.p=1;else for(var n=0;n<j.length;n++)if(e.match(j[n])){a.p=1;break a}a:if(!a.c)if(e.match(l+\"CRT(_|-)?MODE\"+m))a.c=1;else for(n=0;n<k.length;n++)if(e.match(k[n])){a.c=1;break a}if(d){d=d.trim().toUpperCase();for(var o in jt.CartridgeFormats)if(o.toUpperCase()===d){a.f=o;break}}a:if(!a.f){var p=b.toUpperCase();for(o in jt.CartridgeFormats)if(g(o,e)||g(o,p)){a.f=o;break a}for(o in i)if(h(o,e)){a.f=o;break a}}},e=function(a,b){b.f&&a.name===b.f?a.priorityBoosted=a.priority-n:a.priorityBoosted=void 0},f=function(a){return a.split(/(\\(|\\[)/)[0].trim()},g=function(a,b){return b.match(l+a+m)},h=function(a,b){var c=i[a];if(!c)return!1;for(var d=0;d<c.length;d++)if(b.match(c[d]))return!0;return!1},i={\nE0:[\"^.*MONTEZUMA.*$\",\"^.*MONTZREV.*$\",\"^.*GYRUS.*$\",\"^.*TOOTH.*PROTECTORS.*$\",\"^.*TOOTHPRO.*$\",\"^.*DEATH.*STAR.*BATTLE.*$\",\"^.*DETHSTAR.*$\",\"^.*JAMES.*BOND.*$\",\"^.*JAMEBOND.*$\",\"^.*SUPER.*COBRA.*$\",\"^.*SPRCOBRA.*$\",\"^.*TUTANKHAM.*$\",\"^.*TUTANK.*$\",\"^.*POPEYE.*$\",\"^.*(SW|STAR.?WARS).*ARCADE.*GAME.*$\",\"^.*SWARCADE.*$\",\"^.*Q.*BERT.*QUBES.*$\",\"^.*QBRTQUBE.*$\",\"^.*FROGGER.?(2|II).*$\",\"^.*DO.*CASTLE.*$\"],FE:[\"^.*ROBOT.*TANK.*$\",\"^.*ROBOTANK.*$\",\"^.*DECATHLON.*$\",\"^.*DECATHLN.*$\"],E7:[\"^.*BUMP.*JUMP.*$\",\"^.*BNJ.*$\",\"^.*BURGER.*TIME.*$\",\"^.*BURGTIME.*$\",\"^.*POWER.*HE.?MAN.*$\",\"^.*HE_MAN.*$\"],\"3F\":[\"^.*POLARIS.*$\",\"^.*RIVER.*PATROL.*$\",\"^.*RIVERP.*$\",\"^.*SPRINGER.*$\",\"^.*MINER.*2049.*$\",\"^.*MNR2049R.*$\",\"^.*MINER.*2049.*VOLUME.*$\",\"^.*MINRVOL2.*$\",\"^.*ESPIAL.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],\"3E\":[\"^.*BOULDER.*DASH.*$\",\"^.*BLDRDASH.*$\"],DPC:[\"^.*PITFALL.*II.*$\"]},j=[\"^.*PADDLES.*$\",\"^.*BREAKOUT.*$\",\"^.*SUPER.*BREAKOUT.*$\",\"^.*SUPERB.*$\",\"^.*WARLORDS.*$\",\"^.*STEEPLE.*CHASE.*$\",\"^.*STEPLCHS.*$\",\"^.*VIDEO.*OLYMPICS.*$\",\"^.*VID(|_)OLYM(|P).*$\",\"^.*CIRCUS.*ATARI.*$\",\"^.*CIRCATRI.*$\",\"^.*KABOOM.*$\",\"^.*BUGS((?!BUNNY).)*\",\"^.*BACHELOR.*PARTY.*$\",\"^.*BACHELOR.*$\",\"^.*BACHELORETTE.*PARTY.*$\",\"^.*BACHLRTT.*$\",\"^.*BEAT.*EM.*EAT.*EM.*$\",\"^.*BEATEM.*$\",\"^.*PHILLY.*FLASHER.*$\",\"^.*PHILLY.*$\",\"^.*JEDI.*ARENA.*$\",\"^.*JEDIAREN.*$\",\"^.*EGGOMANIA.*$\",\"^.*EGGOMANA.*$\",\"^.*PICNIC.*$\",\"^.*PIECE.*O.*CAKE.*$\",\"^.*PIECECKE.*$\",\"^.*BACKGAMMON.*$\",\"^.*BACKGAM.*$\",\"^.*BLACKJACK.*$\",\"^.*BLACK(|_)J.*$\",\"^.*CANYON.*BOMBER.*$\",\"^.*CANYONB.*$\",\"^.*CASINO.*$\",\"^.*DEMONS.*DIAMONDS.*$\",\"^.*DEMONDIM.*$\",\"^.*DUKES.*HAZZARD.*2.*$\",\"^.*STUNT.?2.*$\",\"^.*ENCOUNTER.*L.?5.*$\",\"^.*ENCONTL5.*$\",\"^.*G.*I.*JOE.*COBRA.*STRIKE.*$\",\"^.*GIJOE.*$\",\"^.*GUARDIAN.*$\",\"^.*MARBLE.*CRAZE.*$\",\"^.*MARBCRAZ.*$\",\"^.*MEDIEVAL.*MAYHEM.*$\",\"^.*MONDO.*PONG.*$\",\"^.*NIGHT.*DRIVER.*$\",\"^.*NIGHTDRV.*$\",\"^.*PARTY.*MIX.*$\",\"^.*POKER.*PLUS.*$\",\"^.*PONG.*SPORTS.*$\",\"^.*SCSICIDE.*$\",\"^.*SECRET.*AGENT.*$\",\"^.*SOLAR.*STORM.*$\",\"^.*SOLRSTRM.*$\",\"^.*SPEEDWAY.*$\",\"^.*STREET.*RACER.*$\",\"^.*STRTRACE.*$\",\"^.*STUNT.*CYCLE.*$\",\"^.*STUNT.?1.*$\",\"^.*TAC.?SCAN.*$\",\"^.*MUSIC.*MACHINE.*$\",\"^.*MUSCMACH.*$\",\"^.*VONG.*$\",\"^.*WARPLOCK.*$\"],k=[\"^.*STAR.*CASTLE.*$\",\"^.*SEAWEED.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],l=\"^(|.*?(\\\\W|_|%20))\",m=\"(|(\\\\W|_|%20).*)$\",n=50},jt.CartridgeCreator=new jt.CartridgeCreatorImpl,jt.Images={embedded:!1,count:5,urls:{logo:Javatari.IMAGES_PATH+\"logo.png\",loading:Javatari.IMAGES_PATH+\"loading.gif\",mouseCursor:Javatari.IMAGES_PATH+\"mouse-cursor.png\",panel:Javatari.IMAGES_PATH+\"panel.jpg\",panelSprites:Javatari.IMAGES_PATH+\"panel-sprites.jpg\",controllers:Javatari.IMAGES_PATH+\"controllers.jpg\",iconSprites:Javatari.IMAGES_PATH+\"icon-sprites.png\"}},jt.Clock=function(clockPulse){\"use strict\";this.connect=function(a){a.connectClock(this)},this.go=function(){running||(useRequestAnimationFrame=vSynch&&cyclesPerSecond===this.getVSynchNativeFrequency(),running=!0,useRequestAnimationFrame?animationFrame=requestAnimationFrame(pulse):interval=setInterval(pulse,cycleTimeMs))},this.pause=function(){running=!1,animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),interval&&(clearInterval(interval),interval=null)},this.setFrequency=function(a,b){running?(this.pause(),internalSetFrequency(a,b),this.go()):internalSetFrequency(a,b)},this.setVSynch=function(a){running?(this.pause(),vSynch=a,this.go()):vSynch=a},this.getVSynchNativeFrequency=function(){return vSynchAltNativeFrequency||vSynchNativeFrequency},this.setVSynchAltNativeFrequency=function(a){vSynchAltNativeFrequency=a};var internalSetFrequency=function(a,b){cyclesPerSecond=a,cycleTimeMs=1e3/a,divider=b>=1?b:1,dividerCounter>divider&&(dividerCounter=divider)},pulse=function(){animationFrame=null,divider>1?--dividerCounter<=0&&(dividerCounter=divider,clockPulse()):clockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.detectHostNativeFPSAndCallback=function(a){function b(){vSynchNativeFrequency=-1,jt.Util.error(\"Could not detect video native frequency. V-Synch DISABLED!\"),a&&a(vSynchNativeFrequency)}if(-1===Javatari.SCREEN_VSYNCH_MODE)return jt.Util.warning(\"Video native V-Synch disabled in configuration\"),void(a&&a(vSynchNativeFrequency));if(-1!==Javatari.SCREEN_FORCE_HOST_NATIVE_FPS)return jt.Util.warning(\"Host video frequency forced in configuration: \"+Javatari.SCREEN_FORCE_HOST_NATIVE_FPS),void(a&&a(vSynchNativeFrequency));if(!window.requestAnimationFrame)return b();var c=0,d=0,e=0,f=0,g=0,h=0,i=function(){if(e>=12||f>=18||g>=14||h>=18)return vSynchNativeFrequency=e>=12?60:f>=18?50:g>=14?120:100,jt.Util.log(\"Video native frequency detected: \"+vSynchNativeFrequency+\"Hz\"),void(a&&a(vSynchNativeFrequency));if(!(++c<=70))return b();var j=jt.Util.performanceNow(),k=1e3/(j-d);d=j,k>=47&&k<=53&&f++,k>=56.4&&k<=63.6&&e++,k>=112.8&&k<=127.2&&g++,k>=94&&k<=106&&h++,requestAnimationFrame(i)};i()},this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,divider=1,dividerCounter=1,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0,vSynchNativeFrequency=-1===Javatari.SCREEN_VSYNCH_MODE?-1:Javatari.SCREEN_FORCE_HOST_NATIVE_FPS,vSynchAltNativeFrequency=void 0},jt.RecentStoredROMs=function(){function a(){if(!e){try{e=JSON.parse(localStorage.javataristoredromsdata)}catch(a){}e||b()}return e}function b(){d=[],localStorage.javataristoredromsicatalog=JSON.stringify(d),e=[],localStorage.javataristoredromsdata=JSON.stringify(e)}this.getCatalog=function(){if(!d){try{d=JSON.parse(localStorage.javataristoredromsicatalog)}catch(a){}d||b()}return d},this.storeROM=function(b){this.getCatalog();var c=d.find(function(a){return a&&a.h===b.info.h});if(c&&c.n==b.info.l&&c.f==b.info.f)this.lastROMLoadedIndex=d.indexOf(c);else{if(a(),c){var g=d.indexOf(c);d.splice(g,1),e.splice(g,1)}else d.length>=f&&(d=d.slice(0,f-1),e=e.slice(0,f-1));d.unshift({n:b.info.l,h:b.info.h,f:b.info.f});for(var h=0;h<d.length;++h)d[h].i=h;localStorage.javataristoredromsicatalog=JSON.stringify(d),e.unshift(b.saveState(!0)),localStorage.javataristoredromsdata=JSON.stringify(e),this.lastROMLoadedIndex=0,jt.Util.log(\"New ROM stored: \"+b.info.n+\", \"+b.info.h)}localStorage.javataristoredromslastindex=this.lastROMLoadedIndex},this.getROM=function(b){this.lastROMLoadedIndex=b,localStorage.javataristoredromslastindex=b;var c=a()[b];return c?jt.ROM.loadState(c):null};var c=localStorage.javataristoredromslastindex;this.lastROMLoadedIndex=void 0!==c?Number.parseInt(c):-1;var d,e,f=10},jt.FileLoader=function(a,b,c){\"use strict\";function d(a,b,c,d,f,g,h){for(var i=0;i<a.length;i++)if(e(a[i],b,c,d,f,g,h))return!0;return!1}function e(a,b,c,d,g,h,i,j){try{i&&!a.content&&(a.content=a.asUint8Array());var k=a.content;if(!j){var l=jt.Util.checkContentIsZIP(k);if(l){for(var m=jt.Util.getZIPFilesSorted(l),n=0;n<m.length;n++)if(e(m[n],b,c,d,g,h,!0,!0))return!0;return!1}}var o=jt.Util.checkContentIsGZIP(k);if(o)return e({name:a.name,content:o},b,c,d,g,h,!1,!0)}catch(a){return jt.Util.error(a),!1}return f(a.name,k,b,c,d,g,h)}function f(a,b,c,d,e,f,g){if(((c=c||y.AUTO)===y.STATE||c===y.AUTO)&&o.loadStateFile(b))return!0;if((c===y.CART_DATA||c===y.AUTO)&&n.loadCartridgeData(d,a,b))return!0;if(c===y.ROM||c===y.AUTO){var h=new jt.ROM(a,b,null,g);return l.loadROM(h,d,e,f)}return!1}function g(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),this.files&&0!==this.files.length){var b=jt.Util.asNormalArray(this.files);try{p.value=\"\"}catch(a){}var c=m.systemPause(!0),d=function(a){c||m.systemPause(!1)};return b&&b.length>0&&(1===b.length?l.readFromFile(b[0],r,s,t,u,d):l.readFromFiles(b,r,s,t,u,d)),!1}}function h(a){a.returnValue=!1,a.preventDefault(),a.stopPropagation(),\na.dataTransfer&&(Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect=\"none\":a.ctrlKey?a.dataTransfer.dropEffect=\"copy\":a.altKey&&(a.dataTransfer.dropEffect=\"link\")),v=a.buttons>0?a.buttons:w}function i(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),a.dataTransfer&&!c.mediaChangeDisabledWarning()){var b=m.systemPause(!0),d=a.shiftKey?1:0,e=v&x,f=a.ctrlKey,g=y.AUTO,h=a.dataTransfer&&a.dataTransfer.files,i=function(a){b||m.systemPause(!1)};if(h&&h.length>0)1===h.length?l.readFromFile(h[0],g,d,e,f,i):l.readFromFiles(h,g,d,e,f,i);else{var j=a.dataTransfer.getData(\"text\");j&&j.length>0?l.readFromURL(j,g,d,e,f,i):i()}}}function j(a){jt.Util.message(\"Could not load file(s):\\n\\n\"+a+\"\\n\")}function k(){p=document.createElement(\"input\"),p.id=\"jt-file-loader-input\",p.type=\"file\",p.multiple=!0,p.accept=z.AUTO,p.style.display=\"none\",p.addEventListener(\"change\",g),q.appendChild(p)}var l=this;this.connect=function(a){m=a,n=m.getCartridgeSocket(),o=m.getSavestateSocket()},this.registerForDnD=function(a){a.addEventListener(\"dragover\",h,!1),a.addEventListener(\"drop\",i,!1)},this.registerForFileInputElement=function(a){q=a},this.openFileChooserDialog=function(a,b,c,d){p||k(),p.multiple=A[y[a]||y.AUTO],p.accept=z[y[a]||y.AUTO],r=a,s=c?1:0,t=b,u=d,p.click()},this.openURLChooserDialog=function(a,b,c,d){var e,f=c?1:0;try{e=localStorage&&localStorage[C]}catch(a){}var g=m.systemPause(!0);if(e=prompt(\"Load file from URL:\",e||\"\"),e=e&&e.toString().trim()){try{localStorage[C]=e}catch(a){}this.readFromURL(e,a,f,b,d,function(){g||m.systemPause(!1)})}else g||m.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){jt.Util.log(\"Reading file: \"+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};l.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){j(\"File reading error: \"+a.target.error.name+D),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new jt.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};l.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){j(\"URL reading error: \"+a[0].error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){new jt.MultiFileReader(a,function(a){l.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=D),j(\"File reading error: \"+b),f&&f(!1)}).start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,b,c,e,f,g){var h;if(h=jt.Util.checkContentIsZIP(a.content))try{if(d(jt.Util.getZIPFilesSorted(h),b,c,e,f,g,!0))return}catch(a){jt.Util.error(a)}else if(d([a],b,c,e,f,g,!1))return;j(\"No valid \"+B[b]+\" found.\")},this.loadFromFiles=function(a,b,c,e,f){a=jt.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0}),d(a,b,c,e,f,null,!1)||j(\"No valid \"+B[b]+\" found.\")},this.loadROM=function(a,c,d,e){var f=jt.CartridgeCreator.createCartridgeFromRom(a);return!!f&&(n.insert(f,!d),b.storeROM(a),!0)};var m,n,o,p,q,r,s=0,t=!1,u=!1,v=1,w=1,x=2,y=jt.FileLoader.OPEN_TYPE;this.OPEN_TYPE=y;var z={ROM:\".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\",STATE:\".jst,.JST\",CART_DATA:\".dat,.DAT,.sram,.SRAM\",AUTO:\".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\"},A={ROM:!1,STATE:!1,CART_DATA:!1,AUTO:!1},B={ROM:\"ROM\",STATE:\"Savestate\",CART_DATA:\"Cartridge Data\",AUTO:\"ROM\"},C=\"javatarilasturl\",D=\"\\n\\nIMPORTANT: Directories are not supported for loading!\";Javatari.fileLoader=this},jt.FileLoader.OPEN_TYPE={AUTO:\"AUTO\",ROM:\"ROM\",STATE:\"STATE\",CART_DATA:\"CART_DATA\"},jt.FileDownloader=function(){\"use strict\";function a(){if(\"NONE\"===c)return alert(\"Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage.\"),!0}function b(){\"NONE\"!==(c=jt.Util.isIOSDevice()?jt.Util.isBrowserStandaloneMode()?\"NONE\":\"DATA\":\"SAFARI\"===jt.Util.browserInfo().name?\"DATA\":\"BLOB\")&&(d=document.createElement(\"a\"),d.style.display=\"none\",d.target=\"_blank\",d.href=\"#\",e.appendChild(d))}this.connectPeripherals=function(a){f=a},this.registerForDownloadElement=function(a){e=a},this.startDownloadBinary=function(e,g,h){try{if(c||b(),a())return;var i;if(\"BLOB\"===c){d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href);var j=new Blob([g],{type:\"data:application/octet-stream\"});i=(window.URL||window.webkitURL).createObjectURL(j)}else i=\"data:application/octet-stream;base64,\"+btoa(\"string\"==typeof g?g:jt.Util.int8BitArrayToByteString(g));d.download=e&&e.trim(),d.href=i,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}},this.startDownloadURL=function(e,g,h){try{if(c||b(),a())return;\"BLOB\"===c&&d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href),d.download=e&&e.trim(),d.href=g,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}};var c,d,e,f},jt.DOMKeys={},jt.DOMKeys.MOD_SHIFT=16,jt.DOMKeys.LOC_SHIFT=24,jt.DOMKeys.SHIFT=65536,jt.DOMKeys.CONTROL=131072,jt.DOMKeys.ALT=262144,jt.DOMKeys.META=524288,jt.DOMKeys.LOCNONE=0,jt.DOMKeys.LOCLEFT=16777216,jt.DOMKeys.LOCRIGHT=33554432,jt.DOMKeys.LOCNUM=50331648,jt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK=~(jt.DOMKeys.SHIFT|jt.DOMKeys.CONTROL|jt.DOMKeys.ALT|jt.DOMKeys.META),function(a,b,c,d){a.VK_F1={c:112,n:\"F1\"},a.VK_F2={c:113,n:\"F2\"},a.VK_F3={c:114,n:\"F3\"},a.VK_F4={c:115,n:\"F4\"},a.VK_F5={c:116,n:\"F5\"},a.VK_F6={c:117,n:\"F6\"},a.VK_F7={c:118,n:\"F7\"},a.VK_F8={c:119,n:\"F8\"},a.VK_F9={c:120,n:\"F9\"},a.VK_F10={c:121,n:\"F10\"},a.VK_F11={c:122,n:\"F11\"},a.VK_F12={c:123,n:\"F12\"},a.VK_1={c:49,n:\"1\"},a.VK_2={c:50,n:\"2\"},a.VK_3={c:51,n:\"3\"},a.VK_4={c:52,n:\"4\"},a.VK_5={c:53,n:\"5\"},a.VK_6={c:54,n:\"6\"},a.VK_7={c:55,n:\"7\"},a.VK_8={c:56,n:\"8\"},a.VK_9={c:57,n:\"9\"},a.VK_0={c:48,n:\"0\"},a.VK_Q={c:81,n:\"Q\"},a.VK_W={c:87,n:\"W\"},a.VK_E={c:69,n:\"E\"},a.VK_R={c:82,n:\"R\"},a.VK_T={c:84,n:\"T\"},a.VK_Y={c:89,n:\"Y\"},a.VK_U={c:85,n:\"U\"},a.VK_I={c:73,n:\"I\"},a.VK_O={c:79,n:\"O\"},a.VK_P={c:80,n:\"P\"},a.VK_A={c:65,n:\"A\"},a.VK_S={c:83,n:\"S\"},a.VK_D={c:68,n:\"D\"},a.VK_F={c:70,n:\"F\"},a.VK_G={c:71,n:\"G\"},a.VK_H={c:72,n:\"H\"},a.VK_J={c:74,n:\"J\"},a.VK_K={c:75,n:\"K\"},a.VK_L={c:76,n:\"L\"},a.VK_Z={c:90,n:\"Z\"},a.VK_X={c:88,n:\"X\"},a.VK_C={c:67,n:\"C\"},a.VK_V={c:86,n:\"V\"},a.VK_B={c:66,n:\"B\"},a.VK_N={c:78,n:\"N\"},a.VK_M={c:77,n:\"M\"},a.VK_ESCAPE={c:27,n:\"Esc\"},a.VK_ENTER={c:13,n:\"Enter\"},a.VK_SPACE={c:32,n:\"Space\"},a.VK_TAB={c:9,n:\"Tab\"},a.VK_BACKSPACE={c:8,n:\"BackSpc\"},a.VK_CONTEXT={c:93,n:\"Context\"},a.VK_LSHIFT={c:16|b,n:\"L-Shift\"},a.VK_LCONTROL={c:17|b,n:\"L-Control\"},a.VK_LALT={c:18|b,n:\"L-Alt\"},a.VK_LMETA={c:91|b,n:\"L-Meta\"},a.VK_RSHIFT={c:16|c,n:\"R-Shift\"},a.VK_RCONTROL={c:17|c,n:\"R-Control\"},a.VK_RALT={c:18|c,n:\"R-Alt\"},a.VK_RMETA={c:91|c,n:\"R-Meta\"},a.VK_CAPS_LOCK={c:20,n:\"CapsLock\"},a.VK_PRINT_SCREEN={c:44,n:\"PrtScr\"},a.VK_SCROLL_LOCK={c:145,n:\"ScrLck\"},a.VK_PAUSE={c:19,n:\"Pause\"},a.VK_BREAK={c:3,n:\"Break\"},a.VK_INSERT={c:45,n:\"Ins\"},a.VK_DELETE={c:46,n:\"Del\"},a.VK_HOME={c:36,n:\"Home\"},a.VK_END={c:35,n:\"End\"},a.VK_PAGE_UP={c:33,n:\"PgUp\"},a.VK_PAGE_DOWN={c:34,n:\"PgDown\"},a.VK_NUM_INSERT={c:45|d,n:\"Num Ins\"},a.VK_NUM_DELETE={c:46|d,n:\"Num Del\"},a.VK_NUM_HOME={c:36|d,n:\"Num Home\"},a.VK_NUM_END={c:35|d,n:\"Num End\"},a.VK_NUM_PAGE_UP={c:33|d,n:\"Num PgUp\"},a.VK_NUM_PAGE_DOWN={c:34|d,n:\"Num PgDown\"},a.VK_UP={c:38,n:\"Up\"},a.VK_DOWN={c:40,n:\"Down\"},a.VK_LEFT={c:37,n:\"Left\"},a.VK_RIGHT={c:39,n:\"Right\"},a.VK_NUM_UP={c:38|d,n:\"Num Up\"},a.VK_NUM_DOWN={c:40|d,n:\"Num Down\"},a.VK_NUM_LEFT={c:37|d,n:\"Num Left\"},a.VK_NUM_RIGHT={c:39|d,n:\"Num Right\"},a.VK_NUMLOCK={c:144,n:\"NumLock\"},a.VK_NUM_COMMA={c:110|d,n:\"Num ,\"},a.VK_NUM_DIVIDE={c:111|d,n:\"Num /\"},a.VK_NUM_MULTIPLY={c:106|d,n:\"Num *\"},a.VK_NUM_MINUS={c:109|d,n:\"Num -\"},a.VK_NUM_PLUS={\nc:107|d,n:\"Num +\"},a.VK_NUM_PERIOD={c:194|d,n:\"Num .\"},a.VK_NUM_0={c:96|d,n:\"Num 0\"},a.VK_NUM_1={c:97|d,n:\"Num 1\"},a.VK_NUM_2={c:98|d,n:\"Num 2\"},a.VK_NUM_3={c:99|d,n:\"Num 3\"},a.VK_NUM_4={c:100|d,n:\"Num 4\"},a.VK_NUM_5={c:101|d,n:\"Num 5\"},a.VK_NUM_6={c:102|d,n:\"Num 6\"},a.VK_NUM_7={c:103|d,n:\"Num 7\"},a.VK_NUM_8={c:104|d,n:\"Num 8\"},a.VK_NUM_9={c:105|d,n:\"Num 9\"},a.VK_NUM_CLEAR={c:12|d,n:\"Num Clear\"},a.VK_NUM_ENTER={c:13|d,n:\"Num Enter\"},a.VK_QUOTE={c:222,n:\"'\"},a.VK_BACKQUOTE={c:192,n:\"`\"},a.VK_MINUS={c:189,n:\"-\"},a.VK_EQUALS={c:187,n:\"=\"},a.VK_OPEN_BRACKET={c:219,n:\"[\"},a.VK_CLOSE_BRACKET={c:221,n:\"]\"},a.VK_COMMA={c:188,n:\",\"},a.VK_PERIOD={c:190,n:\".\"},a.VK_SEMICOLON={c:186,n:\";\"},a.VK_SLASH={c:191,n:\"/\"},a.VK_BACKSLASH={c:220,n:\"\\\\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:[\"Alt\",\"F1\"]},a.VK_FF_MINUS={c:173,n:\"-\"},a.VK_FF_EQUALS={c:61,n:\"=\"},a.VK_FF_SEMICOLON={c:59,n:\";\"},a.VK_BR_QUOTE={c:192,n:\"'\"},a.VK_BR_OPEN_BRACKET={c:221,n:\"[\"},a.VK_BR_CLOSE_BRACKET={c:220,n:\"]\"},a.VK_BR_SEMICOLON={c:191,n:\";\"},a.VK_BR_SLASH={c:193,n:\"/\"},a.VK_BR_BACKSLASH={c:226,n:\"\\\\\"},a.VK_BR_CEDILLA={c:186,n:\"Ç\"},a.VK_BR_TILDE={c:222,n:\"~\"},a.VK_BR_ACUTE={c:219,n:\"´\"},a.VK_FF_BR_TILDE={c:176,n:\"~\"},a.VK_VOID={c:-1,n:\"\"}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:\"Esc\",13:\"Enter\",32:\"Space\",9:\"Tab\",8:\"BkSpc\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",91:\"Meta\",93:\"Context\",20:\"Caps\",44:\"PrtScr\",145:\"ScrLck\",19:\"Pause\",3:\"Break\",45:\"Ins\",46:\"Del\",36:\"Home\",35:\"End\",33:\"PgUp\",34:\"PgDown\",38:\"Up\",40:\"Down\",37:\"Left\",39:\"Right\"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<<this.LOC_SHIFT:b|a.location<<this.LOC_SHIFT|(a.shiftKey?this.SHIFT:0)|(a.ctrlKey?this.CONTROL:0)|(a.altKey?this.ALT:0)|(a.metaKey?this.META:0)},jt.DOMKeys.nameForKeyboardEvent=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift(\"Meta\"),a.altKey&&c.unshift(\"Alt\"),a.ctrlKey&&c.unshift(\"Ctrl\"),a.shiftKey&&c.unshift(\"Shift\")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return c},jt.GamepadButtons={GB_1:{b:0,n:\"1\"},GB_2:{b:1,n:\"2\"},GB_3:{b:2,n:\"3\"},GB_4:{b:3,n:\"4\"},GB_L1:{b:4,n:\"L1\"},GB_R1:{b:5,n:\"R1\"},GB_L2:{b:6,n:\"L2\"},GB_R2:{b:7,n:\"R2\"},GB_BACK:{b:8,n:\"BACK\"},GB_START:{b:9,n:\"START\"},GB_S1:{b:10,n:\"S1\"},GB_S2:{b:11,n:\"S2\"},GB_UP:{b:12,n:\"&#9650;\"},GB_DOWN:{b:13,n:\"&#9660;\"},GB_LEFT:{b:14,n:\"&#9668;\"},GB_RIGHT:{b:15,n:\"&#9658;\"},GB_LOGO:{b:16,n:\"LOGO\"},GB_VOID:{b:-1,n:\"Unbound\"}},jt.TouchControls={buttons:[\"T_B\",\"T_A\"]},jt.GamepadConsoleControls=function(a){\"use strict\";function b(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return\"object\"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)<l?a=0:a*=f,(b<0?-b:b)<l?b=0:b*=g,0===a&&0===b)return-1;var h=(1-Math.atan2(a,b)/Math.PI)/2;return h+=1/16,h>=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=-190*b.paddleSens,k=-190*b.paddleCenter+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){(r=!!navigator.getGamepads)&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){if(!r)return void i.showOSD(\"Joysticks unavailable (not supported by browser)\",!0,!0);++u,u>0&&(u=-2),-2===u?j=k=null:-1===u&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),i.showOSD(\"Gamepads \"+this.getModeDesc(),!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&-2!==u&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();j?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a))&&c(!0,!0),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a))&&c(!1,!0)}};var c=function(a,b){i.showOSD((a^x^w?\"P1\":\"P2\")+\" Gamepad \"+(b?\"connected\":\"disconnected\"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f<g;f++)if(d[f]&&d[f].buttons.length>0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,a.processControlValue(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(-1!==g||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var h=!1,i=!1,j=!1,k=!1;switch(g){case 0:h=!0;break;case 1:h=i=!0;break;case 2:i=!0;break;case 3:j=i=!0;break;case 4:j=!0;break;case 5:j=k=!0;break;case 6:k=!0;break;case 7:h=k=!0}a.processKey(e.up.c,h),a.processKey(e.right.c,i),a.processKey(e.down.c,j),a.processKey(e.left.c,k),c.direction=g}var l=b.getButtonDigital(d.button);l!==c.button&&(a.processKey(e.button.c,l),c.button=l),(l=b.getButtonDigital(d.buttonT))!==c.buttonT&&(a.processKey(e.buttonT.c,l),c.buttonT=l);var m=b.getButtonDigital(d.select);m!==c.select&&(a.processControlState(t.SELECT,m),c.select=m);var n=b.getButtonDigital(d.reset);n!==c.reset&&(a.processControlState(t.RESET,n),c.reset=n);var o=b.getButtonDigital(d.pause);o!==c.pause&&(a.processControlState(t.PAUSE,o),c.pause=o);var p=b.getButtonDigital(d.fastSpeed);p!==c.fastSpeed&&(a.processControlState(t.FAST_SPEED,p),c.fastSpeed=p);var q=b.getButtonDigital(d.slowSpeed);q!==c.slowSpeed&&(a.processControlState(t.SLOW_SPEED,q),c.slowSpeed=q)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return\"AUTO\";case 0:return\"AUTO (swapped)\";default:return r?\"DISABLED\":\"NOT SUPPORTED\"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){\"use strict\";function b(){w.classList.toggle(\"jt-poweroff\",!J),w.classList.toggle(\"jt-paused\",K)}function c(){var a=A>0;document.documentElement.classList.toggle(\"jt-touch-active\",a),document.documentElement.classList.toggle(\"jt-dir-big\",C),t.touchControlsActiveUpdate(a,C)}function d(a){if(jt.Util.blockEvent(a),null===E){void 0===u&&i();var b=a.changedTouches[0];E=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==E&&(E=null,h(-1))}function f(a){if(jt.Util.blockEvent(a),\nnull!==E)for(var b=a.changedTouches,c=0;c<b.length;++c)if(b[c].identifier===E)return void g(b[c].pageX,b[c].pageY)}function g(a,b){var c=-1,d=a-u,e=b-v;Math.sqrt(d*d+e*e)>G&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(F!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(x.up.c,c),a.processKey(x.right.c,d),a.processKey(x.down.c,e),a.processKey(x.left.c,f),F=b}}function i(){var a=D.getBoundingClientRect();G=.14*(a.right-a.left)|0,u=((a.left+a.right)/2|0)+window.pageXOffset,v=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(x[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!1)}function o(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function p(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1)}function q(){I.reset(),u=v=void 0,E=null,h(-1)}function r(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){s=a},this.connectScreen=function(a){t=a},this.powerOn=function(){this.applyPreferences(),q(),c()},this.powerOff=function(){},this.releaseControllers=function(){q()},this.updateConsolePanelSize=function(a,b,c,d,e){if(w&&d){var f=!e&&(a-b-10)/2<M;w.classList.toggle(\"jt-center\",f),f?w.style.bottom=jt.ScreenGUI.BAR_HEIGHT+c+3+\"px\":w.style.removeProperty(\"bottom\")}},this.toggleMode=function(){if(!y)return void t.showOSD(\"Touch Controls unavailable. Not a touch device!\",!0,!0);A++,A>2&&(A=0),q(),this.applyPreferences(),c(),t.showOSD(\"Touch Controls \"+this.getModeDesc(),!0)},this.setP1ControlsMode=function(a){B=a,this.applyPreferences()},this.getModeDesc=function(){switch(A){case-1:return\"AUTO\";case 0:return\"DISABLED\";case 1:return\"ENABLED\";case 2:return\"ENABLED (swapped)\"}},this.toggleTouchDirBig=function(){C=!C,L.touch.directionalBig=C,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return C},this.setupTouchControlsIfNeeded=function(a){function c(a,b){var c=document.createElement(\"div\");c.id=\"jt-touch-\"+b,c.classList.add(\"jt-touch-button\"),c.classList.add(\"jt-touch-button-joy\"),c.classList.add(\"jt-touch-button-joy-\"+b),c.jtControl=b,c.addEventListener(\"touchstart\",j),c.addEventListener(\"touchmove\",jt.Util.blockEvent),c.addEventListener(\"touchend\",k),c.addEventListener(\"touchcancel\",k),c.addEventListener(\"mousedown\",j),c.addEventListener(\"mouseup\",k),H[b]=c,a.appendChild(c)}if(!(D||A<=0)){w=document.createElement(\"div\"),w.id=\"jt-touch-speed\";var g=document.createElement(\"div\");g.id=\"jt-touch-pause\",g.addEventListener(\"touchstart\",m),g.addEventListener(\"touchend\",n),w.appendChild(g);var h=document.createElement(\"div\");h.id=\"jt-touch-fast\",h.addEventListener(\"touchstart\",o),h.addEventListener(\"touchend\",p),w.appendChild(h),a.appendChild(w);var i=document.createElement(\"div\");i.id=\"jt-touch-left\",D=function(){function a(a){var c=document.createElement(\"div\");c.classList.add(\"jt-touch-dir-\"+a),b.appendChild(c);var d=document.createElement(\"div\");d.classList.add(\"jt-arrow-\"+a),b.appendChild(d)}var b=document.createElement(\"div\");return b.classList.add(\"jt-touch-dir\"),b.classList.add(\"jt-touch-dir-joy\"),a(\"left\"),a(\"right\"),a(\"up\"),a(\"down\"),b}(),D.addEventListener(\"touchstart\",d),D.addEventListener(\"touchmove\",f),D.addEventListener(\"touchend\",e),D.addEventListener(\"touchcancel\",e),i.appendChild(D),a.appendChild(i),i=document.createElement(\"div\"),i.id=\"jt-touch-right\",c(i,\"buttonT\"),c(i,\"button\"),a.appendChild(i),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){J=a,K=c,w&&b()},this.applyPreferences=function(){C=!!L.touch.directionalBig;var a=2===A?1:0;x=L.joystickKeys[a]};var s,t,u,v,w,x,y=jt.Util.isTouchDevice(),z=jt.Util.isMobileDevice(),A=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:y&&z?1:0,B=!1,C=!1,D=null,E=null,F=-1,G=0,H={},I=new r,J=!1,K=!1,L=Javatari.userPreferences.current,M=84;this.saveState=function(){return{}},this.loadState=function(a){q()}},jt.DOMConsoleControls=function(a,b){\"use strict\";function c(a){E=a,F=E?60/I[E]|0:0,H=F/2|0,G=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return j.processKey(c,b),!1}function e(b,c){if(!B||(b=l(b),!m(b,c))){if(2===a.netPlayMode&&Ca.has(b))return a.showOSD(\"Function not available in NetPlay Client mode\",!0,!0);1===a.netPlayMode&&Ca.has(b)||R.push(b<<4|c),2!==a.netPlayMode&&f(b,c)}}function f(a,b){q.controlStateChanged(a,b)}function g(b,c){R.push(b+(c+10)),2!==a.netPlayMode&&h(b,c)}function h(a,b){q.controlValueChanged(a,b)}function i(){r.controlsModeStateUpdate()}var j=this;this.connect=function(a){q=a,q.connectControls(this),v.connect(a),w.connect(a)},this.connectPeripherals=function(a){r=a,v.connectScreen(a),w.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener(\"keydown\",this.keyDown),a.addEventListener(\"keyup\",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){w.setupTouchControlsIfNeeded(a)},this.powerOn=function(){k(),v.powerOn(),w.powerOn(),0===S?n(!1,!1):1===S&&n(!0,!1)},this.powerOff=function(){n(!1,!1),v.powerOff(),w.powerOff()},this.releaseControllers=function(){for(var a in t)t[a]&&(e(a,!1),t[a]=!1);L=M=P=Q=!1,y[x.JOY0_BUTTON]=y[x.JOY1_BUTTON]=!1,w.releaseControllers()},this.getTouchControls=function(){return w},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!A),o(),i()},this.setP1ControlsMode=function(a){A=a,v.setP1ControlsMode(a),w.setP1ControlsMode(a),this.releaseControllers(),p()},this.isP1ControlsMode=function(){return A},this.togglePaddleMode=function(){n(!B,!0),i()},this.isPaddleMode=function(){return B},this.setP1ControlsAndPaddleMode=function(a,b){this.setP1ControlsMode(a),n(b,!1),i()},this.toggleGamepadMode=function(){v.toggleMode(),i()},this.getGamepadModeDesc=function(){return v.getModeDesc()},this.toggleTouchControlsMode=function(){w.toggleMode(),i()},this.toggleTouchDirBig=function(){w.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((E+1)%11),r.showOSD(\"Turbo Fire\"+(E?\" speed: \"+this.getTurboFireSpeedDesc():\": OFF\"),!0),z.turboFireSpeed=E,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return E?E+\"x\":\"OFF\"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.P1_CONTROLS_TOGGLE:return{label:A?\"ON\":\"OFF\",active:A};case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:B?\"ON\":\"OFF\",active:B};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:w.isDirBig()?\"ON\":\"OFF\",active:w.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:D?\"ON\":\"OFF\",active:!!D};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!E}}return{label:\"Unknown\",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){w.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(F){if(--G===H||0===G){var a=G>0;y[x.JOY0_BUTTON]&&e(x.JOY0_BUTTON,a),y[x.JOY1_BUTTON]&&e(x.JOY1_BUTTON,a)}G<=0&&(G=F)}v.controlsClockPulse(),B&&(M?L||(J-=K,J<0&&(J=0),g(x.PADDLE0_POSITION,J)):L&&(J+=K,J>380&&(J=380),g(x.PADDLE0_POSITION,J)),Q?P||(N-=O,N<0&&(N=0),g(x.PADDLE1_POSITION,N)):P&&(N+=O,N>380&&(N=380),g(x.PADDLE1_POSITION,N)))},this.toggleHapticFeedback=function(){C?(D=!D,z.hapticFeedback=D,\nJavatari.userPreferences.setDirty()):r.showOSD(\"Haptic Feedback not available\",!0,!0)},this.hapticFeedback=function(){D&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!D||\"touchstart\"!==a.type&&\"touchend\"!==a.type&&\"touchmove\"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(S>=0)){var b=1===a.rom.info.p;B!==b&&n(b,!1)}},this.processKey=function(a,c){var d=u[a];if(d){if(c===y[d])return;c&&(G=H),y[d]=c}else{if(!(d=s[a]))return b.processKey(a,c);if(c===t[d])return;t[d]=c}e(d,c)},this.applyPreferences=function(){p(),c(z.turboFireSpeed),w.applyPreferences(),v.applyPreferences()},this.processControlState=e,this.processControlValue=g;var k=function(){window.onhelp=function(){return!1}},l=function(a){switch(a){case x.JOY0_BUTTON:return x.PADDLE0_BUTTON;case x.JOY1_BUTTON:return x.PADDLE1_BUTTON;default:return a}},m=function(a,b){if(b)switch(a){case x.JOY0_LEFT:return L=!0,!0;case x.JOY0_RIGHT:return M=!0,!0;case x.JOY0_UP:return K<10&&K++,r.showOSD(\"P1 Paddle speed: \"+K,!0),!0;case x.JOY0_DOWN:return K>1&&K--,r.showOSD(\"P1 Paddle speed: \"+K,!0),!0;case x.JOY1_LEFT:return P=!0,!0;case x.JOY1_RIGHT:return Q=!0,!0;case x.JOY1_UP:return O<10&&O++,r.showOSD(\"P2 Paddle speed: \"+O,!0),!0;case x.JOY1_DOWN:return O>1&&O--,r.showOSD(\"P2 Paddle speed: \"+O,!0),!0}else switch(a){case x.JOY0_LEFT:return L=!1,!0;case x.JOY0_RIGHT:return M=!1,!0;case x.JOY1_LEFT:return P=!1,!0;case x.JOY1_RIGHT:return Q=!1,!0}return!1},n=function(b,c){B!==b&&j.releaseControllers(),B=b,K=O=2,J=N=B?190:-1,2!==a.netPlayMode&&(g(x.PADDLE0_POSITION,J),g(x.PADDLE1_POSITION,N)),v.setPaddleMode(B),c&&o()},o=function(){r.showOSD(\"Controllers: \"+(B?\"Paddles\":\"Joysticks\")+(A?\", Swapped\":\"\"),!0)},p=function(){var a=jt.DOMKeys;s={},t={},u={},s[T]=x.POWER,s[T|a.ALT]=x.POWER,s[T|a.SHIFT]=x.POWER_FRY,s[T|a.SHIFT|a.ALT]=x.POWER_FRY,s[U]=x.BLACK_WHITE,s[U|a.ALT]=x.BLACK_WHITE,s[V]=x.SELECT,s[V|a.ALT]=x.SELECT,s[W]=x.RESET,s[W|a.ALT]=x.RESET,s[X]=x.DIFFICULTY0,s[X|a.ALT]=x.DIFFICULTY0,s[Y]=x.DIFFICULTY1,s[Y|a.ALT]=x.DIFFICULTY1,s[Z]=x.FAST_SPEED,s[Z|a.ALT]=x.FAST_SPEED,s[Z|a.SHIFT]=x.SLOW_SPEED,s[Z|a.SHIFT|a.ALT]=x.SLOW_SPEED,s[$|a.SHIFT|a.ALT]=x.INC_SPEED,s[_|a.SHIFT|a.ALT]=x.DEC_SPEED,s[aa|a.SHIFT|a.ALT]=x.NORMAL_SPEED,s[ba|a.SHIFT|a.ALT]=x.MIN_SPEED,s[ca|a.ALT]=x.PAUSE,s[ca|a.SHIFT|a.ALT]=x.PAUSE_AUDIO_ON,s[da|a.ALT]=x.FRAME,s[ea|a.ALT]=x.FRAME,s[ga|a.ALT]=x.TRACE,s[ha|a.ALT]=x.SHOW_INFO,s[fa|a.ALT]=x.DEBUG,s[ia|a.ALT]=x.NO_COLLISIONS,s[ja|a.ALT]=x.VIDEO_STANDARD,s[ka|a.ALT]=x.VIDEO_STANDARD,s[la|a.ALT]=x.VSYNCH,s[ma|a.CONTROL]=x.SAVE_STATE_0,s[na|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.CONTROL]=x.SAVE_STATE_8,s[va|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.CONTROL]=x.SAVE_STATE_11,s[za|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.ALT]=x.LOAD_STATE_0,s[na|a.ALT]=x.LOAD_STATE_0,s[oa|a.ALT]=x.LOAD_STATE_1,s[pa|a.ALT]=x.LOAD_STATE_2,s[qa|a.ALT]=x.LOAD_STATE_3,s[ra|a.ALT]=x.LOAD_STATE_4,s[sa|a.ALT]=x.LOAD_STATE_5,s[ta|a.ALT]=x.LOAD_STATE_6,s[ua|a.ALT]=x.LOAD_STATE_7,s[va|a.ALT]=x.LOAD_STATE_8,s[wa|a.ALT]=x.LOAD_STATE_9,s[xa|a.ALT]=x.LOAD_STATE_10,s[ya|a.ALT]=x.LOAD_STATE_11,s[za|a.ALT]=x.LOAD_STATE_11,s[Aa|a.ALT]=x.LOAD_STATE_12,s[Ba|a.ALT]=x.LOAD_STATE_12,s[ma|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.SHIFT|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.SHIFT|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.SHIFT|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.SHIFT|a.CONTROL]=x.SAVE_STATE_8,s[va|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[na|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[oa|a.SHIFT|a.ALT]=x.LOAD_STATE_1,s[pa|a.SHIFT|a.ALT]=x.LOAD_STATE_2,s[qa|a.SHIFT|a.ALT]=x.LOAD_STATE_3,s[ra|a.SHIFT|a.ALT]=x.LOAD_STATE_4,s[sa|a.SHIFT|a.ALT]=x.LOAD_STATE_5,s[ta|a.SHIFT|a.ALT]=x.LOAD_STATE_6,s[ua|a.SHIFT|a.ALT]=x.LOAD_STATE_7,s[va|a.SHIFT|a.ALT]=x.LOAD_STATE_8,s[wa|a.SHIFT|a.ALT]=x.LOAD_STATE_9,s[xa|a.SHIFT|a.ALT]=x.LOAD_STATE_10,s[ya|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[za|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[Aa|a.SHIFT|a.ALT]=x.LOAD_STATE_12,s[Ba|a.SHIFT|a.ALT]=x.LOAD_STATE_12;var b=A?1:0,c=A?0:1;s[z.joystickKeys[b].left.c]=x.JOY0_LEFT,s[z.joystickKeys[b].up.c]=x.JOY0_UP,s[z.joystickKeys[b].right.c]=x.JOY0_RIGHT,s[z.joystickKeys[b].down.c]=x.JOY0_DOWN,s[z.joystickKeys[b].button.c]=x.JOY0_BUTTON,s[z.joystickKeys[c].left.c]=x.JOY1_LEFT,s[z.joystickKeys[c].up.c]=x.JOY1_UP,s[z.joystickKeys[c].right.c]=x.JOY1_RIGHT,s[z.joystickKeys[c].down.c]=x.JOY1_DOWN,s[z.joystickKeys[c].button.c]=x.JOY1_BUTTON,u[z.joystickKeys[b].buttonT.c]=x.JOY0_BUTTON,u[z.joystickKeys[c].buttonT.c]=x.JOY1_BUTTON};this.netGetControlsToSend=function(){return R.length?R:void 0},this.netClearControlsToSend=function(){R.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b<c;++b){var d=a[b];d<16e3?(Ca.has(d>>4)||R.push(d),f(d>>4,1&d)):h(-16384&d,(16383&d)-10)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b<c;++b){var d=a[b];d<16e3?f(d>>4,1&d):h(-16384&d,(16383&d)-10)}};var q,r,s,t,u,v,w,x=jt.ConsoleControls,y={},z=Javatari.userPreferences.current,A=!1,B=!1,C=!!navigator.vibrate,D=C&&!!z.hapticFeedback,E=0,F=0,G=0,H=0,I=[0,1,2,2.4,3,4,5,6,7.5,10,12],J=0,K=3,L=!1,M=!1,N=0,O=3,P=!1,Q=!1,R=new Array(100);R.length=0\n;var S=Javatari.PADDLES_MODE,T=jt.DOMKeys.VK_F1.c,U=jt.DOMKeys.VK_F2.c,V=jt.DOMKeys.VK_F11.c,W=jt.DOMKeys.VK_F12.c,X=jt.DOMKeys.VK_F4.c,Y=jt.DOMKeys.VK_F9.c,Z=jt.DOMKeys.VK_TAB.c,$=jt.DOMKeys.VK_UP.c,_=jt.DOMKeys.VK_DOWN.c,aa=jt.DOMKeys.VK_RIGHT.c,ba=jt.DOMKeys.VK_LEFT.c,ca=jt.DOMKeys.VK_P.c,da=jt.DOMKeys.VK_O.c,ea=jt.DOMKeys.VK_F.c,fa=jt.DOMKeys.VK_D.c,ga=jt.DOMKeys.VK_VOID,ha=jt.DOMKeys.VK_I.c,ia=jt.DOMKeys.VK_C.c,ja=jt.DOMKeys.VK_V.c,ka=jt.DOMKeys.VK_Q.c,la=jt.DOMKeys.VK_W.c,ma=jt.DOMKeys.VK_QUOTE.c,na=jt.DOMKeys.VK_BACKQUOTE.c,oa=jt.DOMKeys.VK_1.c,pa=jt.DOMKeys.VK_2.c,qa=jt.DOMKeys.VK_3.c,ra=jt.DOMKeys.VK_4.c,sa=jt.DOMKeys.VK_5.c,ta=jt.DOMKeys.VK_6.c,ua=jt.DOMKeys.VK_7.c,va=jt.DOMKeys.VK_8.c,wa=jt.DOMKeys.VK_9.c,xa=jt.DOMKeys.VK_0.c,ya=jt.DOMKeys.VK_MINUS.c,za=jt.DOMKeys.VK_FF_MINUS.c,Aa=jt.DOMKeys.VK_EQUALS.c,Ba=jt.DOMKeys.VK_FF_EQUALS.c,Ca=new Set([x.SAVE_STATE_0,x.SAVE_STATE_1,x.SAVE_STATE_2,x.SAVE_STATE_3,x.SAVE_STATE_4,x.SAVE_STATE_5,x.SAVE_STATE_6,x.SAVE_STATE_7,x.SAVE_STATE_8,x.SAVE_STATE_9,x.SAVE_STATE_10,x.SAVE_STATE_11,x.SAVE_STATE_12,x.SAVE_STATE_FILE,x.LOAD_STATE_0,x.LOAD_STATE_1,x.LOAD_STATE_2,x.LOAD_STATE_3,x.LOAD_STATE_4,x.LOAD_STATE_5,x.LOAD_STATE_6,x.LOAD_STATE_7,x.LOAD_STATE_8,x.LOAD_STATE_9,x.LOAD_STATE_10,x.LOAD_STATE_11,x.LOAD_STATE_12,x.POWER_FRY,x.VSYNCH,x.TRACE,x.CARTRIDGE_FORMAT]);!function(){v=new jt.GamepadConsoleControls(j),w=new jt.DOMTouchControls(j),j.applyPreferences()}(),jt.DOMConsoleControls.hapticFeedback=this.hapticFeedback,jt.DOMConsoleControls.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},jt.ScreenGUI=jt.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},jt.ScreenGUI.html=function(){return'<div id=\"jt-screen-fs\" tabindex=\"0\"> <div id=\"jt-screen-fs-center\" tabindex=\"-1\"> <div id=\"jt-screen-canvas-outer\"> <canvas id=\"jt-screen-canvas\" tabindex=\"-1\"></canvas> <img id=\"jt-canvas-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <div id=\"jt-unmute-message\"></div> <div id=\"jt-logo\"> <div id=\"jt-logo-center\"> <img id=\"jt-logo-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <img id=\"jt-logo-image\" draggable=\"false\" src=\"'+jt.Images.urls.logo+'\"> <div id=\"jt-logo-message\"> <div id=\"jt-logo-message-text\"></div> <div id=\"jt-logo-message-ok\"> <div id=\"jt-logo-message-ok-text\"></div> </div> </div> </div> </div> <div id=\"jt-osd\"></div> </div> <div id=\"jt-bar\"> <div id=\"jt-bar-inner\"></div> </div> <div id=\"jt-console-panel\" class=\"jt-console-panel\" tabindex=\"-1\"> </div> </div> <div id=\"jt-screen-scroll-message\"> Swipe up/down on the Screen <br>to hide the browser bars! </div> </div>'},jt.ScreenGUI.htmlConsolePanel='<div id=\"jt-console-panel-p0-diff-label\" class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-p1-diff-label\" class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power-labels\" class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-reset-labels\" class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power\" class=\"jt-console-panel-power jt-console-panel-lever\"></div> <div id=\"jt-console-panel-color\" class=\"jt-console-panel-color jt-console-panel-lever\"></div> <div id=\"jt-console-panel-select\" class=\"jt-console-panel-select jt-console-panel-lever\"></div> <div id=\"jt-console-panel-reset\" class=\"jt-console-panel-reset jt-console-panel-lever\"></div> <div id=\"jt-console-panel-p0-diff\" class=\"jt-console-panel-p0-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-p1-diff\" class=\"jt-console-panel-p1-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-cart-image\" class=\"jt-console-panel-cart-image\"></div> <div id=\"jt-console-panel-cart-load\" class=\"jt-console-panel-cart-load\"></div> <div id=\"jt-console-panel-cart-file\" class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-url\" class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-label\" class=\"jt-console-panel-cart-label\"></div>',jt.ScreenGUI.css=function(){\nreturn\"html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: \"+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+\"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646;    /* one behind fsElement */ } html.jt-started #\"+Javatari.SCREEN_ELEMENT_ID+\" { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center {      /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: \"+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible;                    /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url(\"'+jt.Images.urls.iconSprites+'\"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { .jt-bar-button { image-rendering: optimizequality; } } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 3px 0 6px; } #jt-bar-netplay.jt-hidden { display: none; } #jt-bar-select { margin: 0 2px 0 9px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+\"px; font-size: \"+this.BAR_MENU_ITEM_FONT_SIZE+\"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: \"+this.BAR_MENU_WIDTH+\"px; height: \"+this.BAR_MENU_ITEM_HEIGHT+\"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: \"+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: \"\"; position: absolute; width: 6px; height: 19px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+\"px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -\"+(jt.ConsolePanel.DEFAULT_HEIGHT+2)+\"px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: \"+(jt.ScreenGUI.BAR_HEIGHT+2)+'px; border: none; transform-origin: center bottom; } .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } .jt-select-dialog.jt-show { display: block; } .jt-select-dialog > .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .jt-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .jt-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px;       /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .jt-select-dialog > ul li.jt-visible { display: block; } .jt-select-dialog > ul li.jt-selected { color: white; background: hsl(358, 67%, 46%); } .jt-select-dialog > ul li.jt-droptarget { color: white; border-color: lightgray; } .jt-select-dialog > ul li.jt-toggle::after { content: \"\"; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .jt-select-dialog > ul li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-cartridge-format.jt-select-dialog > ul { width: 100%; height: 226px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #jt-cartridge-format.jt-select-dialog > ul li { width: 280px; margin: 7px 0 2px 0; } #jt-cartridge-format.jt-select-dialog > ul li:first-child { margin-top: 0; } #jt-cartridge-format ::-webkit-scrollbar { width: 12px; } #jt-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #jt-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #jt-cartridge-format ul.jt-quick-options-list { width: 230px; margin: 18px 0 0 52px; } #jt-cartridge-format ul.jt-quick-options-list li div { height: 24px; line-height: 24px; } #jt-cartridge-format .jt-control { width: 60px; line-height: 24px; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #jt-cartridge-format.jt-select-dialog > ul { width: 304px; } } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-unmute-message::before { content: \"\"; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url(\"'+jt.Images.urls.muteIcon+'\"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #jt-unmute-message::after { content: \"Audio is muted. Click to unmute\"; } #jt-unmute-message.jt-show { display: inline-block; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up    { border-bottom-color: inherit; } .jt-arrow-down  { border-top-color: inherit; } .jt-arrow-left  { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 345px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: \"Quick Options\"; display: block; } #jt-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-netplay.jt-show { display: block; } #jt-netplay::before { content: \"Net Play!\"; display: block; } #jt-netplay-status-box { position: relative; margin-top: 17px; } #jt-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #jt-netplay-status-box.jt-active #jt-netplay-status { padding: 0 16px 0 12px; } #jt-netplay-status-box.jt-active #jt-netplay-status::after { content: \"\"; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(248, 33, 28); } #jt-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #jt-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #jt-netplay-status-box.jt-active #jt-netplay-link { display: block; } .jt-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #jt-netplay-session-box { margin-top: 18px; } #jt-netplay-session-label, #jt-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #jt-netplay-session-label::before { content: \"Session Name\"; } #jt-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #jt-netplay-nick-label { margin-top: 10px; } #jt-netplay-nick-label::before { content: \"User Nickname\"; } .jt-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #jt-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #jt-netplay-session-box.jt-disabled div { color: rgb(130, 130, 130); } input#jt-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: \"\"; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: \"\"; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: \"\"; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow:  inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: \"\"; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button  { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: \"\"; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused  #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:'+jt.ConsolePanel.DEFAULT_WIDTH+\"px; height:\"+jt.ConsolePanel.DEFAULT_HEIGHT+'px; background: black url(\"'+jt.Images.urls.panel+'\") no-repeat; background-size: 460px 134px; box-shadow: '+jt.ConsolePanel.sameBoxShadowAsScreen()+'; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url(\"'+jt.Images.urls.iconSprites+'\") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: \"\"; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: \"\"; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) {    /* Landscape */ #jt-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { left: calc(-6px - \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px; right: \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px; } } @media only screen and (orientation: portrait) {    /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: \"+(this.BAR_HEIGHT+12)+\"px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) {    /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) {    /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } \"\n},jt.Monitor=function(a){\"use strict\";function b(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(10*b)/10}function c(a){var b=a<.5?.5:a;return Math.round(10*b)/10}var d=this;this.connect=function(a){r=a,r.connectMonitor(this)},this.nextLine=function(a,b){var c=!1;return H<t?H>=A&&H<A+x&&q.set(a,(H-A)*s):c=f(),H++,E||K++,b&&(E||g(),c|=e()),c};var e=function(){return!(H<u)&&(M&&a.showOSD(G.name+\"  \"+H+\" lines\",!0),H=0,I++,!0)},f=function(){return H>v&&e()};this.setVideoStandard=function(a){G=a,s=a.totalWidth,t=a.totalHeight,u=t-Q,v=t+Q+R,J&&(y=G.defaultHeightPct,B=G.defaultOriginYPct),j(w,y),i(z,B)};var g=function(){var a=K;K=0,(a>=250&&a<=281||a>=300&&a<=325)&&++F>=5&&h(a)},h=function(a){E=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=L,c=a-E.totalHeight;(c=c>2?(c>6?6:c)-2:0)!=b&&(L=c,d.setVideoStandard(E))};this.videoSignalOff=function(){H=0,a.videoSignalOff()};var i=function(a,b){z=a,z<0?z=0:z>s-w&&(z=s-w),B=b,B<0?B=0:B/100*t>t-x&&(B=(t-x)/t*100),(A=B/100*t+L/2|0)+x>t&&(A=t-x)},j=function(a,b){w=a,w<10?w=10:w>s&&(w=s),y=b,y<10?y=10:y>100&&(y=100),x=y/100*(t+L)|0,x>t&&(x=t),n.width=w,n.height=x,i(z,B),k()},k=function(){a&&a.displayMetrics(w,x)},l=function(){J=!0,z=P,B=G.defaultOriginYPct,j(N,G.defaultHeightPct)},m=function(){n=document.createElement(\"canvas\"),n.width=N,n.height=O,o=n.getContext(\"2d\",{alpha:!1,antialias:!1}),o.globalCompositeOperation=\"copy\",o.globalAlpha=1,p=o.createImageData(jt.VideoStandard.PAL.totalWidth,jt.VideoStandard.PAL.totalHeight),q=new Uint32Array(p.data.buffer)};this.currentLine=function(){return H},this.refresh=function(){o.putImageData(p,-z,0,z,0,w,x),a.refresh(n,w,x)},this.videoStandardDetectionStart=function(){E=null,F=0,K=0},this.getVideoStandardDetected=function(){return E},this.toggleShowInfo=function(){(M=!M)||a.showOSD(null,!0)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDefaults=function(){l(),a.crtModeSetDefault(),a.crtFilterSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtModeToggle=function(){a.crtModeToggle()},this.crtFilterToggle=function(){a.crtFilterToggle()},this.fullscreenToggle=function(){a.displayToggleFullscreen()},this.displayAspectDecrease=function(){this.displayScale(b(C-S),D),this.showOSD(\"Display Aspect: \"+C.toFixed(2)+\"x\",!0)},this.displayAspectIncrease=function(){this.displayScale(b(C+S),D),this.showOSD(\"Display Aspect: \"+C.toFixed(2)+\"x\",!0)},this.displayScaleDecrease=function(){this.displayScale(C,c(D-S)),this.showOSD(\"Display Size: \"+D.toFixed(2)+\"x\",!0)},this.displayScaleIncrease=function(){this.displayScale(C,c(D+S)),this.showOSD(\"Display Size: \"+D.toFixed(2)+\"x\",!0)},this.viewportOriginDecrease=function(){J=!1,i(z,B+T),this.showOSD(\"Viewport Origin: \"+A,!0)},this.viewportOriginIncrease=function(){J=!1,i(z,B-T),this.showOSD(\"Viewport Origin: \"+A,!0)},this.viewportSizeDecrease=function(){l(),this.showOSD(\"Viewport Size: Standard\",!0)},this.viewportSizeIncrease=function(){J=!1,j(s,100),this.showOSD(\"Viewport Size: Full Signal\",!0)},this.displayScale=function(b,c){C=b,D=c,a.displayScale(C,D)},this.controlStateChanged=function(b,c){a.controlStateChanged(b,c)},this.controlsStatesRedefined=function(){a.controlsStatesRedefined()},this.consolePowerAndUserPauseStateUpdate=function(b,c){a.consolePowerAndUserPauseStateUpdate(b,c)},this.cartridgeInserted=function(b){a.cartridgeInserted(b)};var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=jt.VideoStandard.NTSC,H=0,I=0,J=!0,K=0,L=0,M=!1,N=160,O=213,P=68,Q=16,R=5,S=.1,T=.4;!function(){m(),l(),d.setVideoStandard(G)}()},jt.ConsolePanel=function(a,b){\"use strict\";function c(){k(),l(),q()}function d(b){jt.Util.blockEvent(b),J||(s.hapticFeedbackOnTouch(b),a.closeAllOverlays(),b.target.jtPressed=!0,s.processControlState(b.target.jtControl,!0))}function e(a){jt.Util.blockEvent(a),a.target.jtPressed=!1,J||(s.hapticFeedbackOnTouch(a),s.processControlState(a.target.jtControl,!1))}function f(a){a.target.jtPressed&&e(a)}function g(b,c,d){d||s.hapticFeedbackOnTouch(b),c||(a.closeAllOverlays(),t.controlActivated(b.target.jtControl))}this.connectPeripherals=function(a,c,d){s=c,t=d,a.registerForDnD(b)},this.connect=function(a){u=a},this.setActive=function(a){H=a,H&&(w||c(),i(),j()),document.documentElement.classList.toggle(\"jt-console-panel-active\",H)},this.setLogoMessageActive=function(a){J=a},this.updateScale=function(a,c,d){var e=0,f=0;if(H){a=c?d?.85*a:a-36:.85*a;var g=Math.min(1,a/jt.ConsolePanel.DEFAULT_WIDTH);b.style.transform=g<1?\"translateX(-50%) scale(\"+g.toFixed(8)+\")\":\"translateX(-50%)\",e=Math.ceil(g*jt.ConsolePanel.DEFAULT_HEIGHT),f=Math.ceil(g*jt.ConsolePanel.DEFAULT_WIDTH)}return s&&s.getTouchControls().updateConsolePanelSize(a,f,e,c,d),e};var h=function(){o(w,!I[r.POWER]),o(x,I[r.BLACK_WHITE]),o(y,I[r.SELECT]),o(z,I[r.RESET]),o(A,I[r.DIFFICULTY0]),o(B,I[r.DIFFICULTY1]),i()},i=function(){if(o(C,v),o(G,v),G.innerHTML=v&&v.rom.info.l||L,v&&v.rom.info.lc){var a=v.rom.info.lc.trim().split(/\\s+/);G.style.color=a[0]||M,G.style.background=a[1]||N,G.style.borderColor=a[2]||O}else G.style.color=M,G.style.background=N,G.style.borderColor=O},j=function(){u.controlsStateReport(I),h()},k=function(){b.innerHTML=jt.ScreenGUI.htmlConsolePanel,delete jt.ScreenGUI.htmlConsolePanel,jt.Util.isMobileDevice()&&b.classList.add(\"jt-hide-labels\")},l=function(){w=document.getElementById(\"jt-console-panel-power\"),m(w,r.POWER,!0),x=document.getElementById(\"jt-console-panel-color\"),m(x,r.BLACK_WHITE,!0),y=document.getElementById(\"jt-console-panel-select\"),m(y,r.SELECT,!0),z=document.getElementById(\"jt-console-panel-reset\"),m(z,r.RESET,!0),A=document.getElementById(\"jt-console-panel-p0-diff\"),m(A,r.DIFFICULTY0,!0),B=document.getElementById(\"jt-console-panel-p1-diff\"),m(B,r.DIFFICULTY1,!0),C=document.getElementById(\"jt-console-panel-cart-image\"),D=document.getElementById(\"jt-console-panel-cart-load\"),n(D,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),E=document.getElementById(\"jt-console-panel-cart-file\"),F=document.getElementById(\"jt-console-panel-cart-url\"),Javatari.CARTRIDGE_CHANGE_DISABLED?(p(E),p(F)):(n(E,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),n(F,jt.PeripheralControls.AUTO_LOAD_URL))},m=function(a,b,c){a.jtControl=b,c?(a.jtPressed=!1,jt.Util.addEventsListener(a,\"mousedown touchstart\",d),jt.Util.addEventsListener(a,\"mouseup touchend touchcancel\",e),jt.Util.addEventsListener(a,\"mouseleave\",f)):jt.Util.onTapOrMouseDown(a,d)},n=function(a,b){a.jtControl=b,a.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(a,g)},o=function(a,b){a.style.opacity=b?1:0},p=function(a,b){a.style.display=\"none\"},q=function(){var a=(Javatari.CARTRIDGE_LABEL_COLORS||\"\").trim().split(/\\s+/);a[0]&&(M=a[0]),a[1]&&(N=a[1]),a[2]&&(O=a[2]),G=document.getElementById(\"jt-console-panel-cart-label\"),n(G,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT)},r=jt.ConsoleControls;this.controlStateChanged=function(a,b){H&&K[a]&&j()},this.controlsStatesRedefined=function(){H&&j()},this.cartridgeInserted=function(a){v=a,H&&i()};var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=!1,I={},J=!1,K={};K[r.POWER]=1,K[r.BLACK_WHITE]=1,K[r.SELECT]=1,K[r.RESET]=1,K[r.DIFFICULTY0]=1,K[r.DIFFICULTY1]=1;var L=\"JAVATARI\",M=\"#fa2525\",N=\"#101010\",O=\"transparent\"},jt.ConsolePanel.DEFAULT_WIDTH=460,jt.ConsolePanel.DEFAULT_HEIGHT=134,jt.ConsolePanel.shouldStartActive=function(){return!Javatari.SCREEN_CONSOLE_PANEL_DISABLED&&(-1===Javatari.CONSOLE_PANEL_ELEMENT_ID||document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID))},jt.ConsolePanel.sameBoxShadowAsScreen=function(){var a=document.getElementById(Javatari.SCREEN_ELEMENT_ID);return a?window.getComputedStyle(a,null).getPropertyValue(\"box-shadow\"):\"none\"},jt.CanvasDisplay=function(room,mainElement){\"use strict\";function init(){jt.Util.insertCSS(jt.ScreenGUI.css()),delete jt.ScreenGUI.css,setupMain(),setupBar(),setupFullscreen(),consolePanel=new jt.ConsolePanel(self,consolePanelElement),\nmonitor=new jt.Monitor(self)}function consolePanelUpdateForOrientation(){setConsolePanelActive(isFullscreen&&isLandscape?consolePanelActiveLandscape:consolePanelActivePortrait)}function setConsolePanelActive(a){consolePanelActive!==a&&(consolePanelActive=a,consolePanel.setActive(consolePanelActive),updateScale(),consolePanelActive?showBar():cursorHideFrameCountdown=CURSOR_HIDE_FRAMES)}function hideOSD(){osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,osdShowing=!1}function releaseControllersOnLostFocus(){consoleControlsSocket.releaseControllers()}function hideCursorAndBar(){hideCursor(),hideBar(),cursorHideFrameCountdown=-1}function showCursorAndBar(a){showCursor(),!a&&mousePointerLocked||showBar(),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES}function showCursor(){cursorShowing||(fsElement.style.cursor=cursorType,cursorShowing=!0)}function hideCursor(){cursorShowing&&(fsElement.style.cursor=\"none\",cursorShowing=!1)}function fullscreenByAPIChanged(){var a=isFullscreen,b=isFullScreenByAPI();b||fullScreenAPIExitUserRequested||!isBrowserStandalone?setFullscreenState(b):self.requestReadjust(),a&&!b&&!fullScreenAPIExitUserRequested&&isMobileDevice&&(isBrowserStandalone?setEnterFullscreenByAPIOnFirstTouch():(atariConsole.systemPause(!0),showLogoMessage(\"<br>Emulation suspended\",\"RESUME\",!0,function(){self.setFullscreen(!0),atariConsole.systemPause(!1)}))),fullScreenAPIExitUserRequested=!1}function isFullScreenByAPI(){return!!document[fullScreenAPIQueryProp]}function enterFullScreenByAPI(){if(fullscreenAPIEnterMethod)try{fullscreenAPIEnterMethod.call(fsElement)}catch(a){}}function exitFullScreenByAPI(){if(fullScreenAPIExitMethod)try{fullScreenAPIExitUserRequested=!0,fullScreenAPIExitMethod.call(document)}catch(a){}}function updateScale(){var a=Math.round(targetWidth*scaleY*aspectX*2),b=Math.round(targetHeight*scaleY);canvas.style.width=a+\"px\",canvas.style.height=b+\"px\",updateBarWidth(a),signalIsOn||updateLogoScale(),settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),updateConsolePanelScale(a)}function updateBarWidth(a){var b=buttonsBarDesiredWidth>0?buttonsBarDesiredWidth:a;buttonsBar.style.width=-1===buttonsBarDesiredWidth?\"100%\":b+\"px\",buttonsBar.classList.toggle(\"jt-narrow\",b<NARROW_WIDTH)}function updateConsolePanelScale(a){var b=consolePanel.updateScale(a,isFullscreen,isLandscape);mainElement.style.marginBottom=!isFullscreen&&b>0?Math.ceil(b+3)+\"px\":\"initial\"}function updateCanvasContentSize(){var a=crtFilterEffective>0?CANVAS_SIZE_FACTOR:1;canvas.width=targetWidth*a,canvas.height=targetHeight*a,canvasContext=null}function setCRTFilter(a){crtFilter=a,crtFilterEffective=-2===crtFilter?null:-1===crtFilter?crtFilterAutoValue():a,updateCanvasContentSize()}function crtFilterAutoValue(){return isMobileDevice&&!isIOSDevice&&\"FIREFOX\"===browserName?0:1}function setCRTMode(a){crtMode=a,crtModeEffective=-1===crtMode?crtModeAutoValue():crtMode,canvasContext=null}function crtModeAutoValue(){return isMobileDevice?0:1}function updateLogo(){signalIsOn||(updateLogoScale(),showCursorAndBar(!0),canvasContext&&canvasContext.clearRect(0,0,canvas.width,canvas.height)),logo.classList.toggle(\"jt-show\",!signalIsOn)}function updateLoading(){var a=isLoading?\"block\":\"none\";logoLoadingIcon.style.display=a,canvasLoadingIcon.style.display=a}function createCanvasContext(){canvasContext=canvas.getContext(\"2d\",{alpha:!1,antialias:!1}),setImageComposition(),setImageSmoothing()}function setImageComposition(){crtModeEffective>0&&!debugMode?(canvasContext.globalCompositeOperation=\"source-over\",canvasContext.globalAlpha=.8):(canvasContext.globalCompositeOperation=\"copy\",canvasContext.globalAlpha=1)}function setImageSmoothing(){if(canvas.style.imageRendering=0===crtFilterEffective||2===crtFilterEffective?canvasImageRenderingValue:\"initial\",null!==crtFilterEffective){var a=crtFilterEffective>=2;void 0!==canvasContext.imageSmoothingEnabled?canvasContext.imageSmoothingEnabled=a:(canvasContext.webkitImageSmoothingEnabled=a,canvasContext.mozImageSmoothingEnabled=a,canvasContext.msImageSmoothingEnabled=a)}}function suppressContextMenu(a){a.addEventListener(\"contextmenu\",jt.Util.blockEvent)}function preventDrag(a){a.ondragstart=jt.Util.blockEvent}function setupMain(){switch(mainElement.innerHTML=jt.ScreenGUI.html(),mainElement.tabIndex=-1,delete jt.ScreenGUI.html,fsElement=document.getElementById(\"jt-screen-fs\"),fsElementCenter=document.getElementById(\"jt-screen-fs-center\"),canvasOuter=document.getElementById(\"jt-screen-canvas-outer\"),canvas=document.getElementById(\"jt-screen-canvas\"),canvasLoadingIcon=document.getElementById(\"jt-canvas-loading-icon\"),osd=document.getElementById(\"jt-osd\"),logo=document.getElementById(\"jt-logo\"),logoCenter=document.getElementById(\"jt-logo-center\"),logoImage=document.getElementById(\"jt-logo-image\"),logoLoadingIcon=document.getElementById(\"jt-logo-loading-icon\"),logoMessage=document.getElementById(\"jt-logo-message\"),logoMessageText=document.getElementById(\"jt-logo-message-text\"),logoMessageOK=document.getElementById(\"jt-logo-message-ok\"),logoMessageOKText=document.getElementById(\"jt-logo-message-ok-text\"),scrollMessage=document.getElementById(\"jt-screen-scroll-message\"),unmuteMessage=document.getElementById(\"jt-unmute-message\"),consolePanelElement=document.getElementById(\"jt-console-panel\"),suppressContextMenu(mainElement),preventDrag(logoImage),preventDrag(logoLoadingIcon),preventDrag(canvasLoadingIcon),updateCanvasContentSize(),browserName){case\"CHROME\":case\"EDGE\":case\"OPERA\":canvasImageRenderingValue=\"pixelated\";break;case\"FIREFOX\":canvasImageRenderingValue=\"-moz-crisp-edges\";break;case\"SAFARI\":canvasImageRenderingValue=\"-webkit-optimize-contrast\";break;default:canvasImageRenderingValue=\"pixelated\"}setupMainEvents()}function setupMainEvents(){(isMobileDevice?canvasOuter:fsElement).addEventListener(\"mousemove\",function(){showCursorAndBar()}),\"onblur\"in document?fsElement.addEventListener(\"blur\",releaseControllersOnLostFocus,!0):fsElement.addEventListener(\"focusout\",releaseControllersOnLostFocus,!0),window.addEventListener(\"orientationchange\",function(){closeAllOverlays(),signalIsOn?hideCursorAndBar():showCursorAndBar(),self.requestReadjust()}),mainElement.addEventListener(\"drop\",closeAllOverlays,!0),logoMessageOK.jtNeedsUIG=logoMessageOKText.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(logoMessageOK,self.closeLogoMessage),jt.Util.addEventsListener(fsElementCenter,\"touchstart touchend mousedown\",function(a){\"touchend\"!==a.type?(closeAllOverlays(),showCursorAndBar()):a.cancelable&&a.preventDefault()})}function setupBar(){buttonsBar=document.getElementById(\"jt-bar\"),buttonsBarInner=document.getElementById(\"jt-bar-inner\"),BAR_AUTO_HIDE&&(document.documentElement.classList.add(\"jt-bar-auto-hide\"),fsElement.addEventListener(\"mouseleave\",hideBar),hideBar());var a=[{label:\"Power\",clickModif:0,control:jt.PeripheralControls.CONSOLE_POWER_TOGGLE},{label:\"Fry Console\",control:jt.PeripheralControls.CONSOLE_POWER_FRY},{label:\"\",divider:!0},{label:\"Net Play!\",control:jt.PeripheralControls.SCREEN_OPEN_NETPLAY},{label:\"\",divider:!0},{label:\"Select Cartridge\",control:jt.PeripheralControls.CARTRIDGE_LOAD_RECENT},{label:\"Set ROM Format\",clickModif:KEY_SHIFT_MASK,control:jt.PeripheralControls.CARTRIDGE_CHOOSE_FORMAT},{label:\"\",divider:!0},{label:\"Open File\",clickModif:KEY_CTRL_MASK,control:jt.PeripheralControls.AUTO_LOAD_FILE,needsUIG:!0},{label:\"Open URL\",clickModif:KEY_CTRL_MASK|KEY_ALT_MASK,control:jt.PeripheralControls.AUTO_LOAD_URL,needsUIG:!0},{label:\"\",divider:!0},{label:\"Load State\",control:jt.PeripheralControls.CONSOLE_LOAD_STATE_MENU},{label:\"Save State\",control:jt.PeripheralControls.CONSOLE_SAVE_STATE_MENU}];powerButton=addBarButton(\"jt-bar-power\",-5,-26,\"System Power\",null,!1,a,\"System\"),barMenuSystem=a,self.consolePowerAndUserPauseStateUpdate(!1,!1),\nnetplayButton=addBarButton(\"jt-bar-netplay\",-192,-1,\"NetPlay!\",jt.PeripheralControls.SCREEN_OPEN_NETPLAY),netplayButton.classList.add(\"jt-hidden\"),isMobileDevice?settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Quick Options\",jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS,!1):(a=[{label:\"Help & Settings\",clickModif:0,control:jt.PeripheralControls.SCREEN_OPEN_SETTINGS},{label:\"Quick Options\",control:jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS},{label:\"Defaults\",control:jt.PeripheralControls.SCREEN_DEFAULTS}],settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Settings\",null,!1,a,\"Settings\")),gameSelectButton=addBarButton(\"jt-bar-select\",-78,-51,\"Game Select\",jt.ConsoleControls.SELECT,!0),gameResetButton=addBarButton(\"jt-bar-reset\",-33,-51,\"Game Reset\",jt.ConsoleControls.RESET,!0),-2!==FULLSCREEN_MODE&&(fullscreenButton=addBarButton(\"jt-bar-full-screen\",-103,-1,\"Full Screen\",jt.PeripheralControls.SCREEN_FULLSCREEN,!1),fullscreenButton.jtNeedsUIG=!0,isMobileDevice&&fullscreenButton.classList.add(\"jt-mobile\")),Javatari.SCREEN_RESIZE_DISABLED||isMobileDevice||(scaleUpButton=addBarButton(\"jt-bar-scale-plus\",-80,-1,\"Increase Screen\",jt.PeripheralControls.SCREEN_SCALE_PLUS,!1),scaleUpButton.classList.add(\"jt-full-screen-hidden\"),scaleDownButton=addBarButton(\"jt-bar-scale-minus\",-58,-1,\"Decrease Screen\",jt.PeripheralControls.SCREEN_SCALE_MINUS,!1),scaleDownButton.classList.add(\"jt-full-screen-hidden\")),addBarButton(\"jt-bar-console-panel\",-61,-25,\"Toggle Console Panel\",jt.PeripheralControls.SCREEN_CONSOLE_PANEL_TOGGLE,!1).classList.add(\"jt-full-screen-only\"),logoButton=addBarButton(\"jt-bar-logo\",-99,-26,\"About Javatari\",jt.PeripheralControls.SCREEN_OPEN_ABOUT,!1),logoButton.classList.add(\"jt-full-screen-hidden\"),jt.Util.onTapOrMouseDownWithBlockUIG(buttonsBar,barElementTapOrMouseDown),jt.Util.addEventsListener(buttonsBar,\"touchmove\",barElementTouchMove),jt.Util.addEventsListener(buttonsBar,\"mouseup touchend\",barElementTouchEndOrMouseUp)}function addBarButton(a,b,c,d,e,f,g,h){var i=document.createElement(\"div\");return i.id=a,i.classList.add(\"jt-bar-button\"),i.jtBarElementType=1,i.jtControl=e,i.jtIsConsoleControl=f,i.style.backgroundPosition=b+\"px \"+c+\"px\",i.jtBX=b,g&&(i.jtMenu=g,g.jtTitle=h,g.jtRefElement=i,g.jtMenuIndex=barMenus.length,barMenus.push(g)),d&&(i.title=d),i.addEventListener(\"mouseenter\",function(a){barButtonHoverOver(a.target,a)}),f&&i.addEventListener(\"mouseleave\",barButtonMouseLeft),buttonsBarInner.appendChild(i),i}function barButtonTapOrMousedown(a,b,c,d){if(d||consoleControls.hapticFeedbackOnTouch(b),!logoMessageActive&&!c){var e=barMenuActive;if(closeAllOverlays(),a.jtControl)return void(b.button||(a.jtIsConsoleControl?(barConsoleControlPressed=a.jtControl,consoleControls.processControlState(barConsoleControlPressed,!0)):peripheralControls.controlActivated(a.jtControl)));var f=a.jtMenu;if(f){var g=0|(b.altKey&&KEY_ALT_MASK)|(b.ctrlKey&&KEY_CTRL_MASK)|(b.shiftKey&&KEY_SHIFT_MASK);if(0===g&&!b.button)return void(e!==f&&(showBarMenu(f),\"touchstart\"===b.type&&barButtonLongTouchStart(b)));for(var h=0;h<f.length;++h)if(f[h].clickModif===g)return void peripheralControls.controlActivated(f[h].control,1===b.button,f[h].secSlot);if(g&KEY_SHIFT_MASK)for(g&=~KEY_SHIFT_MASK,h=0;h<f.length;++h)if(f[h].clickModif===g)return void peripheralControls.controlActivated(f[h].control,1===b.button,!0)}}}function barButtonLongTouchStart(a){barButtonLongTouchTarget=a.target,barButtonLongTouchSelectTimeout=window.setTimeout(function(){if(barMenuActive)for(var a=barMenu.jtItems,b=0;b<a.length;++b){var c=a[b].jtMenuOption;if(c&&0===c.clickModif)return void barMenuItemSetActive(a[b],!0)}},450)}function barButtonLongTouchCancel(){barButtonLongTouchSelectTimeout&&(clearTimeout(barButtonLongTouchSelectTimeout),barButtonLongTouchSelectTimeout=null)}function barButtonHoverOver(a,b){barMenuActive&&a.jtMenu&&barMenuActive!==a.jtMenu&&(consoleControls.hapticFeedbackOnTouch(b),showBarMenu(a.jtMenu))}function barButtonMouseLeft(){barConsoleControlPressed&&(cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,consoleControls.processControlState(barConsoleControlPressed,!1),barConsoleControlPressed=null)}function barButtonTouchEndOrMouseUp(a){if(!logoMessageActive)return barConsoleControlPressed?(consoleControls.hapticFeedbackOnTouch(a),consoleControls.processControlState(barConsoleControlPressed,!1),void(barConsoleControlPressed=null)):void(!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey))}function barMenuItemTapOrMouseDown(a,b,c){c||barMenuItemSetActive(a,\"touchstart\"===b.type)}function barMenuItemHoverOver(a,b){barMenuItemSetActive(a,\"touchmove\"===b.type)}function barMenuItemHoverOut(){barMenuItemSetActive(null)}function barMenuItemTouchEndOrMouseUp(a){logoMessageActive||!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey)}function barMenuItemFireActive(a,b){var c=barMenuItemActive.jtMenuOption;barMenuItemSetActive(null),c&&!c.disabled&&(c.extension?extensionsSocket.toggleExtension(c.extension,b,a):c.control&&(a|=c.secSlot,closeAllOverlays(),peripheralControls.controlActivated(c.control,b,a)))}function barMenuItemSetActive(a,b){a!==barMenuItemActive&&(barMenuItemActive&&barMenuItemActive.classList.remove(\"jt-hover\"),a&&a.jtMenuOption?(barMenuItemActive=a,b&&consoleControls.hapticFeedback(),barMenuItemActive.classList.add(\"jt-hover\")):barMenuItemActive=null)}function barElementTapOrMouseDown(a,b,c){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES;var d=a.target;1===d.jtBarElementType?barButtonTapOrMousedown(d,a,b,c):2===d.jtBarElementType?barMenuItemTapOrMouseDown(d,a,c):hideBarMenu()}function barElementTouchMove(a){jt.Util.blockEvent(a);var b=a.changedTouches[0],c=b&&document.elementFromPoint(b.clientX,b.clientY);barButtonLongTouchTarget&&c!==barButtonLongTouchTarget&&barButtonLongTouchCancel(),2!==c.jtBarElementType&&c!==barButtonLongTouchTarget&&barMenuItemSetActive(null),1===c.jtBarElementType?barButtonHoverOver(c,a):2===c.jtBarElementType&&barMenuItemHoverOver(c,a)}function barElementTouchEndOrMouseUp(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,jt.Util.blockEvent(a),barButtonLongTouchCancel();var b=a.target;1===b.jtBarElementType?barButtonTouchEndOrMouseUp(a):2===b.jtBarElementType&&barMenuItemTouchEndOrMouseUp(a)}function setupFullscreen(){fullscreenAPIEnterMethod=fsElement.requestFullscreen||fsElement.webkitRequestFullscreen||fsElement.webkitRequestFullScreen||fsElement.mozRequestFullScreen,fullScreenAPIExitMethod=document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen,\"fullscreenElement\"in document?fullScreenAPIQueryProp=\"fullscreenElement\":\"webkitFullscreenElement\"in document?fullScreenAPIQueryProp=\"webkitFullscreenElement\":\"mozFullScreenElement\"in document&&(fullScreenAPIQueryProp=\"mozFullScreenElement\"),fullscreenAPIEnterMethod||!isMobileDevice||isBrowserStandalone||(fullScreenScrollHack=!0),\"onfullscreenchange\"in document?document.addEventListener(\"fullscreenchange\",fullscreenByAPIChanged):\"onwebkitfullscreenchange\"in document?document.addEventListener(\"webkitfullscreenchange\",fullscreenByAPIChanged):\"onmozfullscreenchange\"in document&&document.addEventListener(\"mozfullscreenchange\",fullscreenByAPIChanged),fullscreenAPIEnterMethod||(scrollMessage.jtScroll=canvas.jtScroll=logo.jtScroll=logoCenter.jtScroll=logoImage.jtScroll=logoMessage.jtScroll=logoMessageText.jtScroll=logoMessageOK.jtScroll=logoMessageOKText.jtScroll=!0,fsElement.addEventListener(\"touchmove\",function(a){if(isFullscreen){if(!fullScreenScrollHack||!a.target.jtScroll)return jt.Util.blockEvent(a);scrollMessageActive&&setScrollMessage(!1)}}))}function setEnterFullscreenByAPIOnFirstTouch(){if(fullscreenAPIEnterMethod){var a=!1,b=function(){a||(a=!0,jt.Util.removeEventsListener(fsElement,\"touchend mousedown\",b,!0),enterFullScreenByAPI())};jt.Util.addEventsListener(fsElement,\"touchend mousedown\",b,!0)}\n}function setFullscreenState(a){isFullscreen=a,a?(setViewport(),document.documentElement.classList.add(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.add(\"jt-full-screen-scroll-hack\"),consoleControls.setupTouchControlsIfNeeded(fsElementCenter),fullScreenScrollHack&&setScrollMessage(!0),fullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()):(restoreViewport(),document.documentElement.classList.remove(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.remove(\"jt-full-screen-scroll-hack\"),fullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()),closeAllOverlays(),self.requestReadjust()}function tryToFixSafariBugOnFullScreenChange(){var a=document.getElementById(\"jt-dummy-element\");a?mainElement.removeChild(a):(a=document.createElement(\"div\"),a.id=\"jt-dummy-element\",mainElement.appendChild(a))}function showBar(){buttonsBar.classList.remove(\"jt-hidden\")}function hideBar(){!BAR_AUTO_HIDE&&!isFullscreen||barMenuActive||consolePanelActive||barConsoleControlPressed||(hideBarMenu(),buttonsBar.classList.add(\"jt-hidden\"))}function showBarMenu(a,b){if(a&&barMenuActive!==a){if(!barMenu)return setupBarMenu(),void setTimeout(function(){showBarMenu(a,b)},1);refreshBarMenu(a),barMenuItemSetActive(b?barMenu.jtDefaultItem:null);var c=a.jtRefElement,d=c&&c.offsetLeft-15||0;d+jt.ScreenGUI.BAR_MENU_WIDTH>c.parentElement.clientWidth?(barMenu.style.right=0,barMenu.style.left=\"auto\",barMenu.style.transformOrigin=\"bottom right\"):(d<0&&(d=0),barMenu.style.left=d+\"px\",barMenu.style.right=\"auto\",barMenu.style.transformOrigin=\"bottom left\"),showCursorAndBar(!0),barMenuActive=a,barMenu.style.display=\"inline-block\",barMenu.jtTitle.focus()}}function refreshBarMenu(a){barMenu.jtTitle.innerHTML=a.jtTitle,barMenu.jtDefaultItem=null;for(var b,c=0,d=Math.min(a.length,BAR_MENU_MAX_ITEMS),e=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT+3,f=0;f<d;++f){var g=a[f];void 0!==g.label&&(b=barMenu.jtItems[c],b.firstChild.textContent=g.label,b.jtMenuOption=null,g.hidden||isFullscreen&&g.fullScreenHidden||!isFullscreen&&g.fullScreenOnly?b.style.display=\"none\":(b.style.display=\"block\",g.divider?b.classList.add(\"jt-bar-menu-item-divider\"):(b.classList.remove(\"jt-bar-menu-item-divider\"),e+=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT,b.classList.toggle(\"jt-bar-menu-item-toggle\",void 0!==g.toggle),g.disabled?b.classList.add(\"jt-bar-menu-item-disabled\"):(b.classList.remove(\"jt-bar-menu-item-disabled\"),b.jtMenuOption=g,0===g.clickModif&&(barMenu.jtDefaultItem=b),b.jtNeedsUIG=g.needsUIG,void 0!==g.toggle&&b.classList.toggle(\"jt-bar-menu-item-toggle-checked\",!!g.checked)))),++c)}for(var h=c;h<BAR_MENU_MAX_ITEMS;++h)b=barMenu.jtItems[h],b.firstChild.textContent=\"\",b.style.display=\"none\",b.jtMenuOption=null;var i=fsElementCenter.clientHeight-jt.ScreenGUI.BAR_HEIGHT-12,j=e<i?1:i/e;barMenu&&(barMenu.style.transform=\"scale(\"+j.toFixed(4)+\")\")}function hideBarMenu(){barMenuActive&&(barMenuActive=null,barMenu.style.display=\"none\",barMenuItemSetActive(null),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,self.focus())}function setupBarMenu(){barMenu=document.createElement(\"div\"),barMenu.id=\"jt-bar-menu\";var a=document.createElement(\"div\");a.id=\"jt-bar-menu-inner\",barMenu.appendChild(a);var b=document.createElement(\"div\");b.id=\"jt-bar-menu-title\",b.tabIndex=-1,b.innerHTML=\"Menu Title\",a.appendChild(b),barMenu.jtTitle=b,barMenu.jtItems=new Array(BAR_MENU_MAX_ITEMS);for(var c=0;c<BAR_MENU_MAX_ITEMS;++c){var d=document.createElement(\"div\");d.classList.add(\"jt-bar-menu-item\"),d.style.display=\"none\",d.innerHTML=\"Menu Item \"+c,d.jtBarElementType=2,d.jtItemIndex=c,d.addEventListener(\"mouseenter\",function(a){barMenuItemHoverOver(a.target,a)}),d.addEventListener(\"mouseleave\",barMenuItemHoverOut),a.appendChild(d),barMenu.jtItems[c]=d}barMenu.addEventListener(\"keydown\",function(a){if(MENU_CLOSE_KEYS[a.keyCode])hideBarMenu();else if(barMenuItemActive&&MENU_EXEC_KEYS[a.keyCode&~KEY_SHIFT_MASK&~KEY_CTRL_MASK])barMenuItemFireActive(a.shiftKey,a.ctrlKey);else if(MENU_SELECT_KEYS[a.keyCode]){if(!barMenuActive)return;var b=(barMenus.length+barMenuActive.jtMenuIndex+MENU_SELECT_KEYS[a.keyCode])%barMenus.length;showBarMenu(barMenus[b],!0)}else if(MENU_ITEM_SELECT_KEYS[a.keyCode]){var c=barMenu.jtItems,d=barMenuItemActive?barMenuItemActive.jtItemIndex:-1,e=BAR_MENU_MAX_ITEMS+1;do{d=(d+c.length+MENU_ITEM_SELECT_KEYS[a.keyCode])%c.length}while(--e>=0&&!c[d].jtMenuOption);e>=0&&barMenuItemSetActive(c[d])}return jt.Util.blockEvent(a)}),buttonsBar.appendChild(barMenu)}function closeAllOverlays(){hideBarMenu(),saveStateDialog&&saveStateDialog.hide(),quickOtionsDialog&&quickOtionsDialog.hide(),netPlayDialog&&netPlayDialog.hide(),cartFormatDialog&&cartFormatDialog.hide(),settingsDialog&&settingsDialog.hide(),recentROMsDialog&&recentROMsDialog.hide()}function showLogoMessage(a,b,c,d){consolePanel.setLogoMessageActive(!0),logoMessageActive||(closeAllOverlays(),d&&(afterMessageAction=d),logoMessageText.innerHTML=a,logoMessageOK.classList.toggle(\"jt-higher\",!!c),logoMessageOKText.innerHTML=b||\"OK\",fsElement.classList.add(\"jt-logo-message-active\"),logoMessageActive=!0,signalIsOn=!1,updateLogo())}function updateLogoScale(){var a=canvasOuter.clientWidth,b=Math.min(a/jt.ScreenGUI.LOGO_SCREEN_WIDTH,1);logoCenter.style.transform=b<1?\"translate(-50%, -50%) scale(\"+b.toFixed(4)+\")\":\"translate(-50%, -50%)\"}function setScrollMessage(a){console.error(\"Scroll Message: \"+a),fsElement.classList.toggle(\"jt-scroll-message\",a),scrollMessageActive=a,a&&setTimeout(function(){setScrollMessage(!1)},5e3)}function readjustAll(a){if(isReadjustScreeSizeChanged(a)){if(isFullscreen){buttonsBarDesiredWidth=isLandscape?0:-1;var b=readjustScreenSize.h;isLandscape||(b-=jt.ScreenGUI.BAR_HEIGHT+2),monitor.displayScale(aspectX,displayOptimalScaleY(readjustScreenSize.w,b))}else buttonsBarDesiredWidth=-1,monitor.displayScale(Javatari.SCREEN_DEFAULT_ASPECT,self.displayDefaultScale());self.focus(),consolePanelUpdateForOrientation(),consoleControlsSocket.releaseControllers()}readjustInterval&&jt.Util.performanceNow()-readjustRequestTime>=1e3&&(clearInterval(readjustInterval),readjustInterval=null)}function isReadjustScreeSizeChanged(a){var b=mainElement.parentElement.clientWidth,c=fsElementCenter.clientWidth,d=fsElementCenter.clientHeight;return!(!a&&readjustScreenSize.pw===b&&readjustScreenSize.w===c&&readjustScreenSize.h===d)&&(readjustScreenSize.pw=b,readjustScreenSize.w=c,readjustScreenSize.h=d,isLandscape=c>d,!0)}function displayOptimalScaleY(a,b){var c=2*aspectX,d=b/targetHeight;return targetWidth*c*d>a&&(d=a/(targetWidth*c)),d}function setViewport(){if(isMobileDevice){if(void 0===viewPortOriginalContent&&(viewPortOriginalTag=document.querySelector(\"meta[name=viewport]\"),viewPortOriginalContent=viewPortOriginalTag&&viewPortOriginalTag.content||null),viewportTag||(viewportTag=document.createElement(\"meta\"),viewportTag.name=\"viewport\",viewportTag.content=\"width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes\",document.head.appendChild(viewportTag)),viewPortOriginalTag)try{document.head.removeChild(viewPortOriginalTag)}catch(a){}viewPortOriginalTag=null}}function restoreViewport(){if(isMobileDevice){if(!viewPortOriginalTag&&viewPortOriginalContent&&(viewPortOriginalTag=document.createElement(\"meta\"),viewPortOriginalTag.name=\"viewport\",viewPortOriginalTag.content=viewPortOriginalContent,document.head.appendChild(viewPortOriginalTag)),viewportTag)try{document.head.removeChild(viewportTag)}catch(a){}viewportTag=null}}function setPageVisibilityHandling(){function a(){logoMessageActive||(document.hidden?b=!atariConsole.systemPause(!0):b&&atariConsole.systemPause(!1))}var b;document.addEventListener(\"visibilitychange\",a)}var self=this;this.connect=function(a){atariConsole=a,monitor.connect(atariConsole.getVideoOutput()),\nconsoleControlsSocket=atariConsole.getConsoleControlsSocket(),cartridgeSocket=atariConsole.getCartridgeSocket(),consolePanel.connect(consoleControlsSocket)},this.connectPeripherals=function(a,b,c,d,e,f){recentROMs=a,fileLoader=b,b.registerForDnD(fsElement),b.registerForFileInputElement(fsElement),fileDownloader=c,fileDownloader.registerForDownloadElement(fsElement),peripheralControls=e,consoleControls=d,consoleControls.addKeyInputElement(fsElement),stateMedia=f,consolePanel.connectPeripherals(b,consoleControls,peripheralControls)},this.powerOn=function(){monitor.setDefaults(),updateLogo(),document.documentElement.classList.add(\"jt-started\"),setPageVisibilityHandling(),this.focus(),JavatariFullScreenSetup.shouldStartInFullScreen()&&(setFullscreenState(!0),setEnterFullscreenByAPIOnFirstTouch())},this.powerOff=function(){document.documentElement.classList.remove(\"jt-started\")},this.start=function(a){function b(){self.setFullscreen(!0),a()}!isMobileDevice||isBrowserStandalone||isFullscreen?a():jt.Util.isOfficialHomepage()?showLogoMessage(\"For \"+(fullscreenAPIEnterMethod?\"the best\":\"a full-screen\")+' experience, use<br>the \"Add to Home Screen\" function<br>then launch from the Installed App',\"NICE!\",!1,b):showLogoMessage(\"For the best experience,<br>Javatari will go full-screen\",\"GO!\",!0,b)},this.refresh=function(a,b,c){cursorHideFrameCountdown>0&&--cursorHideFrameCountdown<=0&&hideCursorAndBar(),signalIsOn||(signalIsOn=!0,updateLogo()),canvasContext||createCanvasContext(),canvasContext.drawImage(a,0,0,canvas.width,canvas.height)},this.videoSignalOff=function(){signalIsOn=!1,showCursorAndBar(),updateLogo()},this.mousePointerLocked=function(a){mousePointerLocked=a,mousePointerLocked?hideCursorAndBar():showCursorAndBar()},this.openHelp=function(){return self.openSettings(\"GENERAL\"),!1},this.openAbout=function(){return self.openSettings(\"ABOUT\"),!1},this.openSettings=function(a){closeAllOverlays(),settingsDialog||(settingsDialog=new jt.SettingsDialog(fsElementCenter,consoleControls)),settingsDialog.show(a)},this.openSaveStateDialog=function(a){closeAllOverlays(),saveStateDialog||(saveStateDialog=new jt.SaveStateDialog(fsElementCenter,consoleControls,peripheralControls,stateMedia)),saveStateDialog.show(a)},this.openQuickOptionsDialog=function(){closeAllOverlays(),quickOtionsDialog||(quickOtionsDialog=new jt.QuickOptionsDialog(fsElementCenter,consoleControls,consoleControlsSocket,peripheralControls)),quickOtionsDialog.show()},this.openNetPlayDialog=function(){closeAllOverlays(),netPlayDialog||(netPlayDialog=new jt.NetPlayDialog(room,fsElementCenter)),netPlayDialog.show()},this.openCartridgeFormatDialog=function(a){closeAllOverlays(),cartFormatDialog||(cartFormatDialog=new jt.CartridgeFormatDialog(this,fsElementCenter,atariConsole,cartridgeSocket)),cartFormatDialog.show(a)},this.openLoadFileDialog=function(a,b){fileLoader.openFileChooserDialog(jt.FileLoader.OPEN_TYPE.AUTO,a,b,!1)},this.openRecentROMsDialog=function(){closeAllOverlays(),recentROMsDialog||(recentROMsDialog=new jt.RecentROMsDialog(fsElementCenter,this,recentROMs,fileLoader)),recentROMsDialog.show()},this.openCartridgeChooserDialog=function(a,b,c){logoMessageActive&&self.closeLogoMessage(),a||0!==recentROMs.getCatalog().length?this.openRecentROMsDialog():this.openLoadFileDialog(b,c)},this.toggleConsolePanel=function(){isFullscreen&&isLandscape?consolePanelActiveLandscape=!consolePanelActiveLandscape:consolePanelActivePortrait=!consolePanelActivePortrait,consolePanelUpdateForOrientation()},this.getControlReport=function(a){return{label:-2===crtFilter?\"Browser\":-1===crtFilter?\"Auto\":0===crtFilter?\"OFF\":\"Level \"+crtFilter,active:crtFilter>=0}},this.toggleMenuByKey=function(){barMenuActive?hideBarMenu():(closeAllOverlays(),showBarMenu(barMenuSystem,!0))},this.getScreenCapture=function(){if(signalIsOn)return canvas.toDataURL(\"image/png\")},this.saveScreenCapture=function(){var a=this.getScreenCapture();a&&fileDownloader.startDownloadURL(\"Javatari Screen\",a,\"Screen Capture\")},this.displayMetrics=function(a,b){targetWidth===a&&targetHeight===b||(targetWidth=a,targetHeight=b,updateCanvasContentSize(),isFullscreen?this.requestReadjust(!0):updateScale())},this.displayScale=function(a,b){aspectX=a,scaleY=b,updateScale()},this.getMonitor=function(){return monitor},this.showOSD=function(a,b,c){if(osdTimeout&&clearTimeout(osdTimeout),!a)return osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,void(osdShowing=!1);!b&&osdShowing||(osd.innerHTML=a,osd.style.color=c?\"rgb(255, 60, 40)\":\"rgb(0, 255, 0)\"),osd.style.transition=\"none\",osd.style.top=\"15px\",osd.style.opacity=1,osdShowing=!0;var d=canvasOuter.clientWidth-30,e=osd.clientWidth,f=e<d?1:d/e;osd.style.transform=\"scale(\"+f.toFixed(4)+\")\",osdTimeout=setTimeout(hideOSD,OSD_TIME)},this.displayDefaultScale=function(){if(Javatari.SCREEN_DEFAULT_SCALE>0)return Javatari.SCREEN_DEFAULT_SCALE;var a=Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);return a>=640?2:a>=540?1.65:a>=420?1.25:a>=355?1.05:a>=340?1:a>=300?.9:.8},this.setDebugMode=function(a){debugMode=!!a,canvasContext=null},this.crtFilterToggle=function(){var a=crtFilter+1;a>3&&(a=-2),setCRTFilter(a);var b=null===crtFilterEffective?\"browser default\":crtFilterEffective<1?\"OFF\":\"level \"+crtFilterEffective;this.showOSD(\"CRT filter: \"+(-1===crtFilter?\"AUTO (\"+b+\")\":b),!0),Javatari.userPreferences.current.crtFilter!==crtFilter&&(Javatari.userPreferences.current.crtFilter=crtFilter,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save())},this.crtFilterSetDefault=function(){var a=Javatari.userPreferences.current.crtFilter;setCRTFilter(-3!==Javatari.SCREEN_FILTER_MODE?Javatari.SCREEN_FILTER_MODE:null!==a&&a>-3?a:-1)},this.crtModeToggle=function(){var a=crtMode+1;a>1&&(a=-1),setCRTMode(a);var b=1===crtModeEffective?\"Phosphor\":\"OFF\";this.showOSD(\"CRT mode: \"+(-1===crtMode?\"AUTO (\"+b+\")\":b),!0)},this.crtModeSetDefault=function(){setCRTMode(Javatari.SCREEN_CRT_MODE)},this.displayToggleFullscreen=function(){if(-2!==FULLSCREEN_MODE)return fullscreenAPIEnterMethod&&!isFullScreenByAPI()?void enterFullScreenByAPI():void this.setFullscreen(!isFullscreen)},this.setFullscreen=function(a){fullscreenAPIEnterMethod?a?enterFullScreenByAPI():exitFullScreenByAPI():setFullscreenState(a)},this.focus=function(){canvas.focus()},this.consolePowerAndUserPauseStateUpdate=function(a,b){isLoading&&(a=!1),powerButton.style.backgroundPosition=powerButton.jtBX+\"px \"+mediaButtonBackYOffsets[a?2:1]+\"px\",powerButton.jtMenu[0].label=\"Power \"+(a?\"OFF\":\"ON\");var c=2===room.netPlayMode;powerButton.jtMenu[1].disabled=powerButton.jtMenu[12].disabled=c||!a,powerButton.jtMenu[6].disabled=c||!(cartridgeSocket&&cartridgeSocket.inserted()),powerButton.jtMenu[5].disabled=powerButton.jtMenu[8].disabled=powerButton.jtMenu[9].disabled=powerButton.jtMenu[11].disabled=c},this.cartridgeInserted=function(a){consolePanel.cartridgeInserted(a),powerButton.jtMenu[6].disabled=!a||2===room.netPlayMode},this.controlsModeStateUpdate=function(){settingsDialog&&settingsDialog.controlsModeStateUpdate(),quickOtionsDialog&&quickOtionsDialog.controlsModeStateUpdate()},this.touchControlsActiveUpdate=function(a,b){touchControlsActive===a&&touchControlsDirBig===b||(touchControlsActive=a,touchControlsDirBig=b,isFullscreen&&(touchControlsActive&&consoleControls.setupTouchControlsIfNeeded(fsElementCenter),this.requestReadjust(!0)))},this.roomNetPlayStatusChangeUpdate=function(a){netPlayDialog&&netPlayDialog.isVisible()||closeAllOverlays(),netPlayDialog&&netPlayDialog.roomNetPlayStatusChangeUpdate(a),netplayButton.classList.toggle(\"jt-hidden\",room.netPlayMode<1)},this.controlStateChanged=function(a,b){consolePanel.controlStateChanged(a,b),quickOtionsDialog&&quickOtionsDialog.controlStateChanged(a,b)},this.controlsStatesRedefined=function(){consolePanel.controlsStatesRedefined()},this.speakerUnlockStateUpdate=function(a){\nif(unmuteMessage.classList.toggle(\"jt-show\",!a),!a){var b=canvasOuter.clientWidth-30,c=unmuteMessage.clientWidth,d=c<b?1:b/c;unmuteMessage.style.transform=\"translate(-50%, 0) scale(\"+d.toFixed(4)+\")\"}},this.setLoading=function(a){isLoading=a,updateLoading()},this.requestReadjust=function(a){settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),a?readjustAll(!0):(readjustRequestTime=jt.Util.performanceNow(),readjustInterval||(readjustInterval=setInterval(readjustAll,50)))},this.closeAllOverlays=closeAllOverlays,this.closeLogoMessage=function(a,b,c){if(c||consoleControls.hapticFeedbackOnTouch(a),!b&&(consolePanel.setLogoMessageActive(!1),fsElement.classList.remove(\"jt-logo-message-active\"),logoMessageActive=!1,afterMessageAction)){var d=afterMessageAction;afterMessageAction=null,d()}};var afterMessageAction,atariConsole,consoleControlsSocket,monitor,peripheralControls,fileLoader,fileDownloader,consoleControls,cartridgeSocket,stateMedia,recentROMs,readjustInterval=0,readjustRequestTime=0,readjustScreenSize={w:0,wk:0,h:0,pw:0,l:!1},isFullscreen=!1,isLandscape=!1,isTouchDevice=jt.Util.isTouchDevice(),isMobileDevice=jt.Util.isMobileDevice(),isIOSDevice=jt.Util.isIOSDevice(),isBrowserStandalone=jt.Util.isBrowserStandaloneMode(),browserName=jt.Util.browserInfo().name,fullscreenAPIEnterMethod,fullScreenAPIExitMethod,fullScreenAPIQueryProp,fullScreenAPIExitUserRequested=!1,fullScreenScrollHack=!1,viewportTag,viewPortOriginalTag,viewPortOriginalContent,consolePanel,consolePanelElement,settingsDialog,saveStateDialog,recentROMsDialog,quickOtionsDialog,netPlayDialog,cartFormatDialog,fsElement,fsElementCenter,canvas,canvasOuter,canvasLoadingIcon,canvasContext,canvasImageRenderingValue,touchControlsActive=!1,touchControlsDirBig=!1,consolePanelActive=!1,consolePanelActiveLandscape=!1,consolePanelActivePortrait=jt.ConsolePanel.shouldStartActive(),buttonsBar,buttonsBarInner,buttonsBarDesiredWidth=-1,barButtonLongTouchTarget,barButtonLongTouchSelectTimeout,barMenu,barMenus=[],barMenuActive,barMenuItemActive,barMenuSystem,barConsoleControlPressed,osd,osdTimeout,osdShowing=!1,cursorType=\"auto\",cursorShowing=!0,cursorHideFrameCountdown=-1,signalIsOn=!1,crtFilter=-2,crtFilterEffective=null,crtMode=-1,crtModeEffective=0,debugMode=!1,isLoading=!1,aspectX=Javatari.SCREEN_DEFAULT_ASPECT,scaleY=1,mousePointerLocked=!1,targetWidth=160,targetHeight=213,logo,logoCenter,logoImage,logoMessage,logoMessageText,logoMessageOK,logoMessageOKText,logoMessageActive=!1,logoLoadingIcon,scrollMessage,scrollMessageActive=!1,unmuteMessage,powerButton,netplayButton,logoButton,scaleDownButton,scaleUpButton,fullscreenButton,settingsButton,gameSelectButton,gameResetButton,mediaButtonBackYOffsets=[-51,-26,-1],CANVAS_SIZE_FACTOR=Javatari.SCREEN_CANVAS_SIZE,OSD_TIME=3e3,CURSOR_HIDE_FRAMES=180,FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE,BAR_AUTO_HIDE=0===Javatari.SCREEN_CONTROL_BAR,BAR_MENU_MAX_ITEMS=13,NARROW_WIDTH=336,k=jt.DOMKeys,KEY_CTRL_MASK=k.CONTROL,KEY_ALT_MASK=k.ALT,KEY_SHIFT_MASK=k.SHIFT,MENU_CLOSE_KEYS={};MENU_CLOSE_KEYS[k.VK_ESCAPE.c]=1,MENU_CLOSE_KEYS[k.VK_CONTEXT.c]=1;var MENU_EXEC_KEYS={};MENU_EXEC_KEYS[k.VK_ENTER.c]=1,MENU_EXEC_KEYS[k.VK_SPACE.c]=1;var MENU_SELECT_KEYS={};MENU_SELECT_KEYS[k.VK_LEFT.c]=-1,MENU_SELECT_KEYS[k.VK_RIGHT.c]=1;var MENU_ITEM_SELECT_KEYS={};MENU_ITEM_SELECT_KEYS[k.VK_UP.c]=-1,MENU_ITEM_SELECT_KEYS[k.VK_DOWN.c]=1,init(),this.eval=function(str){return eval(str)}},jt.RecentROMsDialog=function(a,b,c,d){\"use strict\";function e(){j.style.height=42+33*(l.length+1)+\"px\";for(var a=0;a<11;++a){var b=n[a],c=l[a];b.classList.toggle(\"jt-visible\",a<=l.length),b.classList.toggle(\"jt-toggle\",a<l.length),b.classList.toggle(\"jt-toggle-checked\",a<l.length),b.jtNeedsUIG=a===l.length,b.innerHTML=c?c.n:\"&nbsp;&nbsp;Open ROM File...\"}f()}function f(){for(var a=0;a<n.length;++a)n[a].classList.toggle(\"jt-selected\",a===m)}function g(){j=document.createElement(\"div\"),j.id=\"jt-recent-roms\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"350px\",j.tabIndex=-1,j.appendChild(document.createTextNode(\"Select Cartridge\")),k=document.createElement(\"ul\"),k.style.width=\"85%\";for(var b=0;b<11;++b){var c=document.createElement(\"li\");c.style.textAlign=\"center\",c.innerHTML=\"\",c.jtItem=b,n.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a,c){a.target.jtItem>=0&&(c&&jt.DOMConsoleControls.hapticFeedbackOnTouch(a),m=a.target.jtItem,f(),c||setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===q?a():r.indexOf(c.keyCode)>=0?b():s[c.keyCode]&&(m+=s[c.keyCode],m<0?m=0:m>l.length&&(m=l.length),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);l=c.getCatalog().slice(0),l.sort(function(a,b){return a.n>b.n});var d=c.lastROMLoadedIndex;d=l.indexOf(l.find(function(a){return a.i===d})),m=d<0||d>=l.length?l.length:d,o=!0,e(),j.classList.add(\"jt-show\"),j.focus(),jt.Util.scaleToFitParentHeight(j,a,jt.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(o&&(j.classList.remove(\"jt-show\"),o=!1,Javatari.room.screen.focus(),a))if(m===l.length)b.openLoadFileDialog();else{var e=c.getROM(l[m].i);d.loadROM(e)}};var j,k,l=[],m=0,n=[],o=!1,p=jt.DOMKeys,q=p.VK_ESCAPE.c,r=[p.VK_ENTER.c,p.VK_SPACE.c],s={};s[p.VK_UP.c]=-1,s[p.VK_DOWN.c]=1},jt.SaveStateDialog=function(a,b,c,d){\"use strict\";function e(){l.textContent=\"Select Slot to \"+(m?\"Save\":\"Load\");for(var a=m?\"Save to \":\"Load from \",b=0;b<o.length;++b){var c=o[b];c.innerHTML=a+s[b].d,c.classList.toggle(\"jt-toggle-checked\",d.isSlotUsed(b+1))}f()}function f(){for(var a=0;a<o.length;++a)o[a].classList.toggle(\"jt-selected\",a===n)}function g(){j=document.createElement(\"div\"),j.id=\"jt-savestate\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"280px\",j.style.height=\"404px\",j.tabIndex=-1,l=document.createTextNode(\"Select Slot\"),j.appendChild(l),k=document.createElement(\"ul\"),k.style.width=\"80%\";for(var b=0;b<s.length;++b){var c=document.createElement(\"li\");c.classList.add(\"jt-visible\"),b<s.length-1&&c.classList.add(\"jt-toggle\"),c.style.textAlign=\"center\",c.innerHTML=s[b].d,c.jtSlot=b,c.jtNeedsUIG=!0,o.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a,c){a.target.jtSlot>=0&&(c&&jt.DOMConsoleControls.hapticFeedbackOnTouch(a),n=a.target.jtSlot,f(),c||setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===u?a():v.indexOf(c.keyCode)>=0?b():w[c.keyCode]&&(n+=w[c.keyCode],n<0?n=0:n>10&&(n=10),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);m=b,p=!0,e(),j.classList.add(\"jt-show\"),j.focus(),jt.Util.scaleToFitParentHeight(j,a,jt.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(p&&(j.classList.remove(\"jt-show\"),p=!1,Javatari.room.screen.focus(),a)){var d=s[n],e=m?d.save:d.load;d.peripheral?c.controlActivated(e):b.processControlState(e,!0)}};var j,k,l,m=!1,n=0,o=[],p=!1,q=jt.ConsoleControls,r=jt.PeripheralControls,s=[{d:\"Slot 1\",load:q.LOAD_STATE_1,save:q.SAVE_STATE_1},{d:\"Slot 2\",load:q.LOAD_STATE_2,save:q.SAVE_STATE_2},{d:\"Slot 3\",load:q.LOAD_STATE_3,save:q.SAVE_STATE_3},{d:\"Slot 4\",load:q.LOAD_STATE_4,save:q.SAVE_STATE_4},{d:\"Slot 5\",load:q.LOAD_STATE_5,save:q.SAVE_STATE_5},{d:\"Slot 6\",load:q.LOAD_STATE_6,save:q.SAVE_STATE_6},{d:\"Slot 7\",load:q.LOAD_STATE_7,save:q.SAVE_STATE_7},{d:\"Slot 8\",load:q.LOAD_STATE_8,save:q.SAVE_STATE_8},{d:\"Slot 9\",load:q.LOAD_STATE_9,save:q.SAVE_STATE_9},{d:\"Slot 10\",load:q.LOAD_STATE_10,save:q.SAVE_STATE_10},{d:\"File...\",load:r.CONSOLE_LOAD_STATE_FILE,save:r.CONSOLE_SAVE_STATE_FILE,peripheral:!0\n}],t=jt.DOMKeys,u=t.VK_ESCAPE.c,v=[t.VK_ENTER.c,t.VK_SPACE.c],w={};w[t.VK_UP.c]=-1,w[t.VK_DOWN.c]=1},jt.QuickOptionsDialog=function(a,b,c,d){\"use strict\";function e(){for(var a=0;a<j.length;++a){var b=j[a],e=b.peripheral?d.getControlReport(b.control):c.getControlReport(b.control);b.value=e.label,b.selected=e.active,l[a].innerHTML=b.value,l[a].classList.toggle(\"jt-selected\",!!b.selected)}}function f(){i=document.createElement(\"div\"),i.id=\"jt-quick-options\",i.tabIndex=-1;var b=jt.PeripheralControls;j=[{label:\"Paddles\",control:b.PADDLES_TOGGLE_MODE,peripheral:!0},{label:\"Swap Controllers\",control:b.P1_CONTROLS_TOGGLE,peripheral:!0},{label:\"No Collisions\",control:m.NO_COLLISIONS},{label:\"&#128190;&nbsp; V-Synch\",control:m.VSYNCH},{label:\"&#128190;&nbsp; CRT Filter\",control:b.SCREEN_CRT_FILTER,peripheral:!0},{label:\"&#128190;&nbsp; Audio Buffer\",control:b.SPEAKER_BUFFER_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Big Directionals\",control:b.TOUCH_TOGGLE_DIR_BIG,peripheral:!0},{label:\"&#128190;&nbsp; TurboFire Speed\",control:b.TURBO_FIRE_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Haptic Feedback\",control:b.HAPTIC_FEEDBACK_TOGGLE_MODE,peripheral:!0}];var c=document.createElement(\"ul\");c.classList.add(\"jt-quick-options-list\");for(var d=0;d<j.length;++d){var e=document.createElement(\"li\"),f=document.createElement(\"div\");f.innerHTML=j[d].label,e.appendChild(f);var h=document.createElement(\"div\");h.classList.add(\"jt-control\"),h.jtControlItem=j[d],e.appendChild(h),c.appendChild(e),l.push(h)}i.appendChild(c),g(),a.appendChild(i)}function g(){jt.Util.onTapOrMouseDownWithBlock(i,function(a){if(a.target.jtControlItem){jt.DOMConsoleControls.hapticFeedbackOnTouch(a);var c=a.target.jtControlItem;c.peripheral?(d.controlActivated(c.control,!1,!1),e()):b.processControlState(c.control,!0)}else i.focus()}),i.addEventListener(\"keydown\",function(a){return o.indexOf(a.keyCode)>=0&&h.hide(),jt.Util.blockEvent(a)})}var h=this;this.show=function(){if(!i)return f(),setTimeout(h.show,0);e(),k=!0,i.classList.add(\"jt-show\"),i.focus(),jt.Util.scaleToFitParentHeight(i,a,jt.ScreenGUI.BAR_HEIGHT)},this.hide=function(){k&&(Javatari.userPreferences.save(),i.classList.remove(\"jt-show\"),k=!1,Javatari.room.screen.focus())},this.controlsModeStateUpdate=function(){k&&e()},this.controlStateChanged=function(a,b){!k||a!==m.NO_COLLISIONS&&a!==m.VSYNCH||e()};var i,j,k=!1,l=[],m=jt.ConsoleControls,n=jt.DOMKeys,o=[n.VK_ESCAPE.c,n.VK_ENTER.c,n.VK_SPACE.c]},jt.NetPlayDialog=function(a,b){\"use strict\";function c(){switch(a.netPlayMode){case 0:o.textContent=\"STANDALONE\",m.textContent=\"HOST\",n.textContent=\"JOIN\",m.disabled=!1,n.disabled=!1,r.disabled=!1,s.disabled=!1,k.classList.remove(\"jt-active\"),l.classList.remove(\"jt-disabled\"),r.setAttribute(\"placeholder\",\"Enter a name\");break;case 1:var b=a.getNetServer();o.textContent=\"HOSTING Session: \"+b.getSessionID(),m.textContent=\"STOP\",n.textContent=\"JOIN\",m.disabled=!1,n.disabled=!0,r.disabled=!0,s.disabled=!0,k.classList.add(\"jt-active\"),l.classList.add(\"jt-disabled\"),r.setAttribute(\"placeholder\",\"Automatic\"),p.href=e();break;case 2:var c=a.getNetClient();o.textContent=\"JOINED Session: \"+c.getSessionID(),m.textContent=\"HOST\",n.textContent=\"LEAVE\",m.disabled=!0,n.disabled=!1,r.disabled=!0,s.disabled=!0,k.classList.add(\"jt-active\"),l.classList.remove(\"jt-disabled\"),l.classList.add(\"jt-disabled\"),r.setAttribute(\"placeholder\",\"Enter a name\"),p.href=e();break;case-1:case-2:o.textContent=\"Establishing connection...\",r.disabled=!0,s.disabled=!0,k.classList.remove(\"jt-active\"),l.classList.add(\"jt-disabled\"),-1===a.netPlayMode?(m.textContent=\"CANCEL\",n.textContent=\"JOIN\",m.disabled=!1,n.disabled=!0,r.setAttribute(\"placeholder\",\"Automatic\")):(m.textContent=\"HOST\",n.textContent=\"CANCEL\",m.disabled=!0,n.disabled=!1,r.setAttribute(\"placeholder\",\"Enter a name\"))}}function d(){r.value=u.netPlaySessionName,s.value=u.netPlayNick}function e(){return jt.Util.browserCurrentURL()+\"?JOIN=\"+a.netController.getSessionID()}function f(b){var c=b.target;if(!c.disabled){jt.DOMConsoleControls.hapticFeedbackOnTouch(b);var d=!1,e=a.netPlayMode;if(c!==m||0!==e&&1!==e&&-1!==e?c!==n||0!==e&&2!==e&&-2!==e||(0===e?(a.getNetClient().joinSession(r.value,s.value),d=!0):a.getNetClient().leaveSession(!1,-2===e?\"NetPlay connection aborted\":void 0)):0===e?(a.getNetServer().startSession(r.value),d=!0):a.getNetServer().stopSession(!1,-1===e?\"NetPlay connection aborted\":void 0),d){var f=r.value.trim(),g=s.value.trim();u.netPlaySessionName===f&&u.netPlayNick===g||(u.netPlaySessionName=f,u.netPlayNick=g,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save())}}}function g(){j=document.createElement(\"div\"),j.id=\"jt-netplay\",j.tabIndex=-1,k=document.createElement(\"div\"),k.id=\"jt-netplay-status-box\",j.appendChild(k),q=document.createElement(\"input\"),q.id=\"jt-netplay-link-text\",k.appendChild(q),o=document.createElement(\"div\"),o.id=\"jt-netplay-status\",o.textContent=\"STANDALONE\",k.appendChild(o),p=document.createElement(\"a\"),p.id=\"jt-netplay-link\",p.textContent=\"🔗\",p.setAttribute(\"title\",\"Copy Join Session link to clipboard\"),k.appendChild(p),l=document.createElement(\"div\"),l.id=\"jt-netplay-session-box\",j.appendChild(l);var a=document.createElement(\"div\");a.id=\"jt-netplay-session-label\",l.appendChild(a),m=document.createElement(\"button\"),m.id=\"jt-netplay-start\",m.jtCommand=!0,m.classList.add(\"jt-netplay-button\"),m.textContent=\"HOST\",l.appendChild(m),r=document.createElement(\"input\"),r.id=\"jt-netplay-session-name\",r.setAttribute(\"placeholder\",\"Enter a name\"),r.setAttribute(\"maxlength\",12),r.spellcheck=!1,r.autocorrect=!1,r.autocapitalize=!1,l.appendChild(r),n=document.createElement(\"button\"),n.id=\"jt-netplay-join\",n.jtCommand=!0,n.classList.add(\"jt-netplay-button\"),n.textContent=\"JOIN\",l.appendChild(n);var c=document.createElement(\"div\");c.id=\"jt-netplay-nick-label\",l.appendChild(c),s=document.createElement(\"input\"),s.id=\"jt-netplay-nick\",s.setAttribute(\"placeholder\",\"Automatic\"),s.setAttribute(\"maxlength\",12),s.spellcheck=!1,s.autocorrect=!1,s.autocapitalize=!1,l.appendChild(s),h(),b.appendChild(j)}function h(){function b(a){var b=a.target,c=b.value;return!c||c.match(/^[A-Za-z0-9]+[A-Za-z0-9_\\-]*@?$/)?b.jtLastValidValue=c:b.value=b.jtLastValidValue||\"\"}jt.Util.onTapOrMouseDownWithBlock(j,function(a){a.target.jtCommand?f(a):j.focus()}),j.addEventListener(\"keydown\",function(a){return w.indexOf(a.keyCode)>=0&&i.hide(),jt.Util.blockEvent(a)}),r.addEventListener(\"input\",b),s.addEventListener(\"input\",b),jt.Util.addEventsListener(o,\"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(r,\"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(s,\"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\",function(a){a.stopPropagation()}),j.ondragstart=jt.Util.blockEvent,k.addEventListener(\"contextmenu\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(p,\"click\",function(b){if(jt.Util.blockEvent(b),!document.queryCommandSupported||!document.queryCommandSupported(\"copy\"))return a.showOSD(\"Copy to Clipboard not supported by the browser!\",!0,!0);q.value=e(),q.focus(),q.select(),document.execCommand(\"copy\"),j.focus()})}var i=this;this.show=function(){if(!j)return g(),setTimeout(i.show,0);c(),d(),t=!0,j.classList.add(\"jt-show\"),j.focus(),jt.Util.scaleToFitParentWidth(j,b,12)},this.hide=function(){t&&(j.classList.remove(\"jt-show\"),t=!1,a.screen.focus())},this.roomNetPlayStatusChangeUpdate=function(b){if(t&&c(),2===a.netPlayMode&&b<0&&t)return setTimeout(function(){i.hide()},2e3);0===a.netPlayMode&&b>0&&!t&&i.show()},this.isVisible=function(){return t};var j,k,l,m,n,o,p,q,r,s,t=!1,u=Javatari.userPreferences.current,v=jt.DOMKeys,w=[v.VK_ESCAPE.c]},jt.CartridgeFormatDialog=function(a,b,c,d){\"use strict\";function e(){q=0,\nk.reinsertROMContent(),r=jt.CartridgeCreator.getUserFormatOptionNames(k.rom);var a=jt.CartridgeCreator.getBestFormatOption(k.rom);a||(a=jt.CartridgeFormats[\"4K\"]),r.unshift(a.name);for(var b=0;b<s.length;++b)b<r.length?(r[b]===p&&(q=b),s[b].innerHTML=0===b?\"AUTO: \"+a.name+\": \"+a.desc:r[b]+\": \"+jt.CartridgeFormats[r[b]].desc,s[b].classList.add(\"jt-visible\")):s[b].classList.remove(\"jt-visible\");k.format===a&&(q=0),f(),g()}function f(){for(var a,b=0;b<r.length;++b)b===q?(a=s[b],a.classList.add(\"jt-selected\")):s[b].classList.remove(\"jt-selected\");m.scrollTop>a.offsetTop?m.scrollTop=a.offsetTop:m.scrollTop+m.offsetHeight<a.offsetTop+26+2&&(m.scrollTop=a.offsetTop-(m.offsetHeight-26-2))}function g(){n.textContent=v?u?\"YES\":\"NO\":\"- -\",n.classList.toggle(\"jt-selected\",u)}function h(){l=document.createElement(\"div\"),l.id=\"jt-cartridge-format\",l.classList.add(\"jt-select-dialog\"),l.style.width=\"340px\",l.style.height=\"310px\",l.tabIndex=-1;var a=document.createTextNode(\"Select ROM Format\");l.appendChild(a),m=document.createElement(\"ul\");for(var c=0,d=jt.CartridgeFormatsUserOptions.length+1;c<d;++c){var e=document.createElement(\"li\");e.jtIndex=c,e.classList.add(\"jt-visible\"),e.style.textAlign=\"center\",s.push(e),m.appendChild(e)}l.appendChild(m);var f=document.createElement(\"div\"),g=document.createElement(\"ul\");g.classList.add(\"jt-quick-options-list\"),e=document.createElement(\"li\");var h=document.createElement(\"div\");h.innerHTML=\"&#128190;&nbsp; Remember Choice\",e.appendChild(h),n=document.createElement(\"div\"),n.innerHTML=\"NO\",n.classList.add(\"jt-control\"),e.appendChild(n),g.appendChild(e),f.appendChild(g),l.appendChild(f),i(),b.appendChild(l)}function i(){function a(){j.hide(!1)}function b(){j.hide(!0)}function c(a){q=a,f()}jt.Util.onTapOrMouseDownWithBlock(l,function(){m.focus()}),jt.Util.addEventsListener(m,\"touchstart touchmove touchend\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(m,\"mousedown\",function(a){a.stopPropagation(),jt.DOMConsoleControls.hapticFeedbackOnTouch(a),a.target.jtIndex>=0&&c(a.target.jtIndex)}),jt.Util.addEventsListener(m,\"click\",function(a){if(jt.Util.blockEvent(a),a.target.jtIndex>=0){var d=a.target.jtIndex===q;c(a.target.jtIndex),setTimeout(b,d?0:120)}}),jt.Util.onTapOrMouseDownWithBlock(n,function(a){v&&(jt.DOMConsoleControls.hapticFeedbackOnTouch(a),u=!u,g())}),l.addEventListener(\"keydown\",function(c){var d=x.codeForKeyboardEvent(c);return d===y?a():z.indexOf(d)>=0?b():A[d]&&(q+=A[d],q<0?q=0:q>=r.length&&(q=r.length-1),f()),jt.Util.blockEvent(c)})}var j=this;this.show=function(a){if(!l)return h(),setTimeout(function(){j.show(a)},0);o=a,(k=d.inserted())&&(p=k.format.name,u=!!w.getForROM(k.rom),v=!!k.rom.info.h,t=!0,l.classList.add(\"jt-show\"),e(),l.focus(),jt.Util.scaleToFitParentHeight(l,b,jt.ScreenGUI.BAR_HEIGHT))},this.hide=function(b){if(t){if(l.classList.remove(\"jt-show\"),t=!1,Javatari.room.screen.focus(),b){var e=r[q],f=e===r[0],g=jt.CartridgeCreator.changeCartridgeFormat(k,jt.CartridgeFormats[e]);u&&w.setForROM(k.rom,e,f),d.insert(g,!o&&c.powerIsOn,!0),a.showOSD(\"ROM Format: \"+e+(f?\" (Auto)\":\"\"),!0)}k=void 0}};var k,l,m,n,o=!1,p=\"\",q=0,r=[],s=[],t=!1,u=!1,v=!1,w=Javatari.userROMFormats,x=jt.DOMKeys,y=x.VK_ESCAPE.c,z=[x.VK_ENTER.c,x.VK_SPACE.c],A={};A[x.VK_UP.c]=-1,A[x.VK_DOWN.c]=1},jt.SettingsGUI={WIDTH:600,HEIGHT:450},jt.SettingsGUI.html=function(){\nreturn'<div id=\"jt-modal\" tabindex=\"-1\"> <div id=\"jt-menu\"> <div id=\"jt-back\" jt-var=\"true\"> <div class=\"jt-back-arrow\"> </div> </div> <div class=\"jt-caption\"> Help & Settings </div> <div class=\"jt-items\"> <div id=\"jt-menu-console\" class=\"jt-item\" jt-var=\"true\"> CONSOLE </div> <div id=\"jt-menu-ports\" class=\"jt-item\" jt-var=\"true\"> CONTROLLERS </div> <div id=\"jt-menu-general\" class=\"jt-item jt-selected\" jt-var=\"true\"> EMULATION </div> <div id=\"jt-menu-about\" class=\"jt-item\" jt-var=\"true\"> ABOUT </div> <div id=\"jt-menu-selection\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-content\" jt-var=\"true\"> <div id=\"jt-console\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\"> POWER </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F2 </div> </div> <div class=\"jt-desc\"> TV TYPE </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F4 </div> </div> <div class=\"jt-desc\"> P1 Difficulty </div> </div> </div> <div class=\"jt-middle\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F5 </div> </div> <div class=\"jt-desc\"> Load Cartridge File </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F6 </div> </div> <div class=\"jt-desc\"> Load Cartridge URL </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F7 </div> </div> <div class=\"jt-desc\"> Remove Cartridge </div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\"> RESET </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F11 </div> </div> <div class=\"jt-desc\"> SELECT </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F9 </div> </div> <div class=\"jt-desc\"> P2 Difficulty </div> </div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-console-panel\"> <div class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> </div> <div class=\"jt-footer\"> Drag & Drop Files or URLs to load Cartridge ROMs and State Files </div> </div> <div id=\"jt-ports\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> L </div> </div> <div class=\"jt-desc\">Toggle Paddles</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> K </div> </div> <div class=\"jt-desc\">Toggle Swap Sides</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> J </div> </div> <div class=\"jt-desc\">Toggle Gamepads</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> H </div> </div> <div class=\"jt-desc\">Adjust Turbo Fire speed</div> </div> </div> <div class=\"jt-right\"> <div id=\"jt-ports-paddles-mode\" class=\"jt-hotkey jt-link jt-joystick-device\" jt-var=\"true\">Controllers: JOYSTICKS</div> <div id=\"jt-ports-p1-mode\" class=\"jt-hotkey jt-link jt-mouse-device\" jt-var=\"true\">Swap Mode: NORMAL</div> <div id=\"jt-ports-gamepads-mode\" class=\"jt-hotkey jt-link jt-joykeys-device\" jt-var=\"true\">Gamepads: AUTO (swapped)</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-player jt-p1\"> <div id=\"jt-control-p1-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 1 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p1-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p1-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p1-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p1-buttonT\" class=\"jt-key\" jt-var=\"true\" > </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p1-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p1-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p1-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p1-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p1-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div class=\"jt-player jt-p2\"> <div id=\"jt-control-p2-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 2 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p2-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p2-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p2-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p2-buttonT\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p2-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p2-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p2-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p2-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p2-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-ports-revert\" class=\"jt-link\" jt-var=\"true\"> REVERT </div> <div id=\"jt-ports-defaults\" class=\"jt-link\" jt-var=\"true\"> DEFAULTS </div> </div> <div id=\"jt-general\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> C </div> </div> <div class=\"jt-desc\">Collisions</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\">Fry Console</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Q </div> </div> <div class=\"jt-desc\">NTSC/PAL</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> W </div> </div> <div class=\"jt-desc\">V-Synch Modes</div> </div> <div class=\"jt-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> R </div> </div> <div class=\"jt-desc\">CRT Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> T </div> </div> <div class=\"jt-desc\">CRT Filters</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> D </div> </div> <div class=\"jt-desc\">Debug Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> I </div> </div> <div class=\"jt-desc\">Show Info</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> G </div> </div> <div class=\"jt-desc\">Capture Screen</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-desc\">Right-Click Bar Icons: Default Action</div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Load State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Save State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F8 </div> </div> <div class=\"jt-desc\">Save State File</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div>&nbsp;&nbsp;/&nbsp;&nbsp;<div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\">Fast / Slow Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Adjust Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> P </div> </div> <div class=\"jt-desc\">Toggle Pause</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> O </div>&nbsp;/&nbsp;<div class=\"jt-key\"> F </div> </div> <div class=\"jt-desc\">Next Frame</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Enter </div> </div> <div class=\"jt-desc\">Full Screen</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Screen Size / Width</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Viewport Size / Origin</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Backspace </div> </div> <div class=\"jt-desc\">Defaults</div> </div> </div> </div> <div id=\"jt-about\"> <div id=\"jt-logo-version\">version&nbsp'+Javatari.VERSION+'</div> <div class=\"jt-info\">'+atob(\"Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==\")+\"<br>\"+atob(\"PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9qYXZhdGFyaS5vcmciPmh0dHA6Ly9qYXZhdGFyaS5vcmc8L2E+\")+' </div> <div id=\"jt-browserinfo\" jt-var=\"true\"> </div> </div> </div> </div>'\n},jt.SettingsGUI.css=function(){return\"#jt-modal * { outline: none; box-sizing: border-box; } #jt-modal { position: absolute; overflow: hidden; width: \"+jt.SettingsGUI.WIDTH+\"px; height: 0; opacity: 0; visibility: hidden; top: 50%; left: 50%; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; z-index: 50; } #jt-modal.jt-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: \"+jt.SettingsGUI.HEIGHT+'px; visibility: visible; opacity: 1; } #jt-modal .jt-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #jt-modal .jt-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #jt-modal .jt-link:hover { outline: 1px solid; } .jt-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 48%); } .jt-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .jt-hotkey .jt-desc { display: inline-block; line-height: 21px; } .jt-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .jt-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .jt-footer { margin-top: 16px; text-align: center; } #jt-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #jt-menu #jt-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #jt-menu #jt-back:hover { background: rgba(0, 0, 0, .12); } .jt-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .jt-back-arrow:before { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .jt-back-arrow:after { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #jt-menu .jt-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-menu .jt-items { position: relative; width: 84%; height: 39px; margin: 0 auto; font-weight: 600; } #jt-menu .jt-item { float: left; width: 25%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #jt-menu .jt-selected { color: hsl(358, 67%, 46%); } #jt-menu #jt-menu-selection { position: absolute; left: 0; bottom: 0; width: 25%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #jt-content { position: relative; left: 0; width: 3000px; height: 371px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #jt-console, #jt-ports, #jt-general, #jt-about { position: absolute; width: '+jt.SettingsGUI.WIDTH+\"px; height: 100%; box-sizing: border-box; } #jt-console { padding-top: 35px; } #jt-console .jt-hotkey { height: 29px; } #jt-console .jt-command { width: 42px; } #jt-console .jt-left, #jt-console .jt-middle, #jt-console .jt-right { float: left; } #jt-console .jt-left { width: 160px; margin-left: 58px; } #jt-console .jt-middle { width: 204px; } #jt-console .jt-right .jt-command { width: 46px; } #jt-console .jt-console-panel { position: relative; margin: 18px auto 0; box-shadow: rgba(0, 0, 0, 0.6) 2px 2px 4px; } #jt-console .jt-console-panel * { cursor: auto; } #jt-console .jt-footer { margin: 20px auto; } #jt-ports { left: \"+jt.SettingsGUI.WIDTH+'px; padding: 18px 0 0 27px; } #jt-ports > .jt-left { float: left; width: 335px; padding-left: 26px; } #jt-ports > .jt-right { float: left; } #jt-ports .jt-command { width: 91px; } #jt-ports .jt-bottom { width: 546px; text-align: center; } #jt-ports .jt-player { position: absolute; top: 146px; width: 217px; color: rgba(0, 0, 0, .8); } #jt-ports .jt-p1 { left: 47px; } #jt-ports .jt-p2 { right: 47px; } #jt-ports .jt-title { margin-bottom: 09px; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #jt-ports .jt-player .jt-command { display: block; position: relative; float: left; width: 33%; height: 45px; font-size: 13px; text-align: center; } #jt-ports .jt-command.jt-fire1, #jt-ports .jt-command.jt-fire2 { top: 14px; } #jt-ports .jt-command.jt-left, #jt-ports .jt-command.jt-right { top: 27px; } #jt-ports .jt-command.jt-down { float: none; clear: both; margin: 0 auto; } #jt-ports .jt-command.jt-controller { height: 90px; } #jt-ports #jt-control-p1-controller, #jt-ports #jt-control-p2-controller { width: 70px; height: 89px; margin-left: 1px; background: url(\"'+jt.Images.urls.controllers+'\") no-repeat -1px 0; background-size: 73px 179px; } #jt-ports .jt-player .jt-key { min-width: 33px; height: 23px; padding: 5px 6px 4px; margin-top: 2px; cursor: pointer; } #jt-ports .jt-player .jt-key:hover { box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170); } #jt-ports .jt-player .jt-key.jt-redefining { color: white; background-color: rgb(87, 128, 255); border-color: rgb(71, 117, 255); } #jt-ports .jt-player .jt-key.jt-undefined { background-color: rgb(255, 150, 130); border-color: rgb(255, 130, 90); } #jt-ports-defaults, #jt-ports-revert { position: absolute; left: 260px; width: 82px; text-align: center; padding: 3px 0 1px; font-size: 12px; } #jt-ports-defaults { bottom: 47px; } #jt-ports-revert { bottom: 21px; } #jt-general { left: '+2*jt.SettingsGUI.WIDTH+\"px; padding-top: 18px; padding-left: 34px; } #jt-general .jt-left { float: left; width: 245px; } #jt-general .jt-left .jt-command { width: 99px; } #jt-general .jt-right { float: left; } #jt-general .jt-right .jt-command { width: 160px; } #jt-about { left: \"+3*jt.SettingsGUI.WIDTH+'px; font-size: 18px; } #jt-about #jt-logo-version { width: 300px; height: 238px; margin: 26px auto 19px; color: hsl(0, 0%, 98%); padding-top: 200px; box-sizing: border-box; text-align: center; background: black url(\"'+jt.Images.urls.logo+'\") center 18px no-repeat; background-size: 233px 173px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-about .jt-info { line-height: 30px; text-align: center; } #jt-about a { color: rgb(0, 40, 200); text-decoration: none; } #jt-about a:hover { text-decoration: underline; } #jt-about #jt-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } .jt-clear { clear: both; } .jt-divider { clear: both; height: 27px; } .jt-full-divider { clear: both; height: 21px; } #jt-general .jt-full-divider { clear: both; height: 18px; }'},jt.SettingsDialog=function(a,b){\"use strict\";function c(){jt.Util.insertCSS(jt.SettingsGUI.css()),a.insertAdjacentHTML(\"beforeend\",jt.SettingsGUI.html()),j=document.getElementById(\"jt-modal\"),delete jt.SettingsGUI.html,delete jt.SettingsGUI.css,d(),e()}function d(){function a(b,c){c(b);for(var d=b.childNodes,e=0;e<d.length;e++)a(d[e],c)}a(j,function(a){a.id&&a.getAttribute&&a.getAttribute(\"jt-var\")&&(i[a.id]=a)})}function e(){jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),\njt.Util.onTapOrMouseDownWithBlock(i[\"jt-back\"],i.hide),j.addEventListener(\"keydown\",function(a){h(a,!0)}),j.addEventListener(\"keyup\",function(a){h(a,!1)}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-console\"],function(){i.setPage(\"CONSOLE\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-ports\"],function(){i.setPage(\"PORTS\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-general\"],function(){i.setPage(\"GENERAL\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-about\"],function(){i.setPage(\"ABOUT\")});for(var a in r)!function(a){jt.Util.onTapOrMouseDownWithBlock(i[a],function(){k(a)})}(a);jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-paddles-mode\"],function(){b.togglePaddleMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-p1-mode\"],function(){b.toggleP1ControlsMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-gamepads-mode\"],function(){b.toggleGamepadMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-defaults\"],o),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-revert\"],p)}function f(){i[\"jt-browserinfo\"].innerHTML=navigator.userAgent}function g(){var a=b.isPaddleMode(),c=b.isP1ControlsMode();i[\"jt-ports-paddles-mode\"].innerHTML=\"Controllers: \"+(a?\"PADDLES\":\"JOYSTICKS\"),i[\"jt-ports-p1-mode\"].innerHTML=\"Swap Mode: \"+(c?\"SWAPPED\":\"NORMAL\"),i[\"jt-ports-gamepads-mode\"].innerHTML=\"Gamepads: \"+b.getGamepadModeDesc(),a?(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"+ Speed\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"- Speed\"):(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"Up\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"Down\"),i[\"jt-control-p1-label\"].innerHTML=\"PLAYER \"+(c?\"2\":\"1\"),i[\"jt-control-p2-label\"].innerHTML=\"PLAYER \"+(c?\"1\":\"2\");var d=v.joystickKeys;for(var e in r){var f=i[e];if(e===s)f.classList.add(\"jt-redefining\"),f.classList.remove(\"jt-undefined\"),f.innerHTML=\"?\";else{f.classList.remove(\"jt-redefining\");var g=r[e],h=d[g.player][g.control];h.c===jt.DOMKeys.VK_VOID.c?(f.classList.add(\"jt-undefined\"),f.innerHTML=\"\"):(f.classList.remove(\"jt-undefined\"),f.innerHTML=h.n)}}}function h(a,b){var c=jt.DOMKeys.codeForKeyboardEvent(a);if(b&&c===w)return n(),jt.Util.blockEvent(a);s&&m(a)}var i=this;this.show=function(a){if(!j)return c(),void setTimeout(function(){i.show(a)},0);this.position()&&(s=null,this.setPage(a||t),j.classList.add(\"jt-show\"),j.classList.add(\"jt-show\"),u=!0,setTimeout(function(){j.focus()},50))},this.hide=function(){u&&(i.hideLesser(),Javatari.room.screen.focus())},this.hideLesser=function(){Javatari.userPreferences.isDirty&&q(),j.classList.remove(\"jt-show\"),j.classList.remove(\"jt-show\"),u=!1},this.setPage=function(a){t=a;var b={CONSOLE:\"0\",PORTS:\"-600px\",GENERAL:\"-1200px\",ABOUT:\"-1800px\"}[t],c={CONSOLE:\"0\",PORTS:\"25%\",GENERAL:\"50%\",ABOUT:\"75%\"}[t];switch(b&&(i[\"jt-content\"].style.left=b),c&&(i[\"jt-menu-selection\"].style.left=c),i[\"jt-menu-console\"].classList.toggle(\"jt-selected\",\"CONSOLE\"===t),i[\"jt-menu-ports\"].classList.toggle(\"jt-selected\",\"PORTS\"===t),i[\"jt-menu-general\"].classList.toggle(\"jt-selected\",\"GENERAL\"===t),i[\"jt-menu-about\"].classList.toggle(\"jt-selected\",\"ABOUT\"===t),t){case\"ABOUT\":f();break;case\"PORTS\":g()}},this.isVisible=function(){return u},this.position=function(){var b=a.clientWidth,c=a.clientHeight;return b<575||c<400?(this.hide(),!1):(j.style.top=((c-jt.SettingsGUI.HEIGHT)/2|0)+\"px\",j.style.left=((b-jt.SettingsGUI.WIDTH)/2|0)+\"px\",!0)},this.controlsModeStateUpdate=function(){u&&\"PORTS\"===t&&g()};var j,k=function(a){s=a,g()},l=function(){s=null,g()},m=function(a){if(s){var b=jt.DOMKeys.codeForKeyboardEvent(a),c=jt.DOMKeys.nameForKeyboardEventSingle(a);if(b!==jt.DOMKeys.VK_VOID.c&&c){var d={c:b,n:c},e=r[s],f=v.joystickKeys;for(var g in r){var h=r[g];g!==s&&f[h.player][h.control].c===d.c&&(f[h.player][h.control]=jt.DOMKeys.VK_VOID)}f[e.player][e.control]=d,Javatari.userPreferences.setDirty(),l()}}},n=function(){s?l():i.hide()},o=function(){Javatari.userPreferences.setDefaultJoystickKeys(),l()},p=function(){Javatari.userPreferences.load(),l()},q=function(){Javatari.userPreferences.save(),b.applyPreferences()},r={\"jt-control-p1-button\":{player:0,control:\"button\"},\"jt-control-p1-buttonT\":{player:0,control:\"buttonT\"},\"jt-control-p1-up\":{player:0,control:\"up\"},\"jt-control-p1-left\":{player:0,control:\"left\"},\"jt-control-p1-right\":{player:0,control:\"right\"},\"jt-control-p1-down\":{player:0,control:\"down\"},\"jt-control-p2-button\":{player:1,control:\"button\"},\"jt-control-p2-buttonT\":{player:1,control:\"buttonT\"},\"jt-control-p2-up\":{player:1,control:\"up\"},\"jt-control-p2-left\":{player:1,control:\"left\"},\"jt-control-p2-right\":{player:1,control:\"right\"},\"jt-control-p2-down\":{player:1,control:\"down\"}},s=null,t=\"CONSOLE\",u=!1,v=Javatari.userPreferences.current,w=jt.DOMKeys.VK_ESCAPE.c},jt.WebAudioSpeaker=function(a){\"use strict\";function b(){return jt.Util.isMobileDevice()?\"CHROME\"!==jt.Util.browserInfo().name||jt.Util.isIOSDevice()?3:4:2}function c(){return\"SAFARI\"===jt.Util.browserInfo().name||jt.Util.isIOSDevice()?b():0}function d(){function b(){a.removeEventListener(\"touchend\",b,!0),a.removeEventListener(\"mousedown\",b,!0),a.removeEventListener(\"keydown\",b,!0);var c;try{k.resume().then(function(){jt.Util.log(\"Speaker Audio Context resumed!\")})}catch(a){c=a}var d=k.createBufferSource();d.buffer=k.createBuffer(1,1,22050),d.connect(k.destination),d.start(0),c&&jt.Util.log(\"Audio Context unlocked!\"),g.speakerUnlockStateUpdate(!0)}!m||k.state&&\"suspended\"!==k.state||(a.addEventListener(\"touchend\",b,!0),a.addEventListener(\"mousedown\",b,!0),a.addEventListener(\"keydown\",b,!0),jt.Util.log(\"Speaker Audio Context resume event registered\"),g.speakerUnlockStateUpdate(!1))}function e(){if(m){n.length=j.length,o.length=j.length;for(var a=0;a<j.length;a++)n[a]=j[a].getSampleRate()/k.sampleRate,o[a]=0,j[a].setAudioMonitorBufferSize(n[a]*l|0)}}function f(a){for(var b=a.outputBuffer.getChannelData(0),c=b.length,d=c-1;d>=0;d-=1)b[d]=0;if(0!==j.length)for(var e=j.length-1;e>=0;e-=1){for(var f=n[e],g=j[e].retrieveSamples(c*f+o[e]|0,r),h=g.buffer,i=g.bufferSize,k=g.start+o[e],l=0;l<c;)b[l]+=h[0|k],l+=1,(k+=f)>=i&&(k-=i);o[e]=k-(0|k)}}this.connect=function(a){a.connectMonitor(this)},this.connectPeripherals=function(a){g=a},this.connectAudioSignal=function(a){j.indexOf(a)>=0||(jt.Util.arrayAdd(j,a),e())},this.disconnectAudioSignal=function(a){j.indexOf(a)<0||(jt.Util.arrayRemoveAllElement(j,a),e())},this.powerOn=function(){h(),m&&(d(),this.unpause())},this.powerOff=function(){this.pause(),k&&k.close(),k=m=void 0},this.mute=function(){r=!0},this.unMute=function(){r=!1},this.pause=function(){m&&m.disconnect()},this.unpause=function(){m&&m.connect(k.destination)},this.toggleBufferBaseSize=function(){if(!k)return g.showOSD(\"Audio is DISABLED\",!0,!0);q=(q+2)%8-1,this.pause(),i(),this.unpause(),g.showOSD(\"Audio Buffer size: \"+(-1===q?\"Auto (\"+l+\")\":0===q?\"Browser (\"+l+\")\":l),!0),p.audioBufferBase=q,Javatari.userPreferences.setDirty()},this.getControlReport=function(a){return{label:-2===q?\"OFF\":-1===q?\"Auto\":0===q?\"Browser\":l,active:q>0}};var g,h=function(){if(-2===q||0===Javatari.AUDIO_MONITOR_BUFFER_SIZE)return void jt.Util.warning(\"Audio disabled in configuration\");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error(\"WebAudio API not supported by the browser\");k=new a,jt.Util.log(\"Speaker AudioContext created. Sample rate: \"+k.sampleRate+(k.state?\", \"+k.state:\"\")),i()}catch(a){jt.Util.error(\"Could not create AudioContext. Audio DISABLED!\\n\"+a)}},i=function(){try{\nvar a=-1===q?b():0===q?c():q,d=Javatari.AUDIO_MONITOR_BUFFER_SIZE>0?Javatari.AUDIO_MONITOR_BUFFER_SIZE:a>0?jt.Util.exp2(0|jt.Util.log2((k.sampleRate+14e3)/22050))*jt.Util.exp2(a-1)*256:0;m=k.createScriptProcessor(d,1,1),m.onaudioprocess=f,l=m.bufferSize,e(),jt.Util.log(\"Audio Processor buffer size: \"+m.bufferSize)}catch(a){jt.Util.error(\"Could not create ScriptProcessorNode. Audio DISABLED!\\n\"+a)}},j=[];this.signals=j;var k,l,m,n=[],o=[],p=Javatari.userPreferences.current,q=-3===Javatari.AUDIO_MONITOR_BUFFER_BASE?p.audioBufferBase:Javatari.AUDIO_MONITOR_BUFFER_BASE,r=!1},jt.LocalStorageSaveStateMedia=function(a){\"use strict\";function b(){return 2===a.netPlayMode}this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(a){c=a},this.isSlotUsed=function(a){return void 0!==localStorage[\"javatarisave\"+a]},this.saveState=function(a,b){var c=f(b);return c&&d(\"save\"+a,c)},this.loadState=function(a){var b=e(\"save\"+a);return g(b)},this.saveStateFile=function(a,d){if(!b()){var e=f(d);e&&c.startDownloadBinary((a||\"Javatari SaveState\")+j,e,\"System State file\")}},this.loadStateFile=function(a){if(!b())return g(a)},this.saveResource=function(a,b){try{var c=b&&JSON.stringify(b);return d(\"res\"+a,c)}catch(a){}},this.loadResource=function(a){try{var b=e(\"res\"+a);return b&&JSON.parse(b)}catch(a){}},this.externalStateChange=function(){1===a.netPlayMode&&a.netController.processExternalStateChange()};var c,d=function(a,c){if(b())return!0;try{return localStorage[\"javatari\"+a]=c,!0}catch(a){return jt.Util.error(a),!1}},e=function(a){if(!b())try{return localStorage[\"javatari\"+a]}catch(a){jt.Util.warning(a)}},f=function(a){try{return h+JSON.stringify(a)}catch(a){jt.Util.error(a)}},g=function(a){try{var b;if((b=\"string\"==typeof a?a.substr(0,h.length):jt.Util.int8BitArrayToByteString(a,0,h.length))!==h&&b!==i)return;var c;return(c=\"string\"==typeof a?a.slice(h.length):jt.Util.int8BitArrayToByteString(a,h.length))&&JSON.parse(c)}catch(a){jt.Util.error(a)}},h=String.fromCharCode(0,0)+\"javataristate!\",i=\"javatarijsstate!\",j=\".jst\"},jt.PeripheralControls={SCREEN_ASPECT_PLUS:1,SCREEN_ASPECT_MINUS:2,SCREEN_SCALE_PLUS:3,SCREEN_SCALE_MINUS:4,VIEWPORT_ORIGIN_PLUS:5,VIEWPORT_ORIGIN_MINUS:6,VIEWPORT_SIZE_PLUS:7,VIEWPORT_SIZE_MINUS:8,SCREEN_FULLSCREEN:10,SCREEN_CRT_FILTER:11,SCREEN_CRT_MODE:12,SCREEN_TOGGLE_MENU:13,SCREEN_OPEN_HELP:14,SCREEN_OPEN_ABOUT:15,SCREEN_OPEN_SETTINGS:16,SCREEN_OPEN_QUICK_OPTIONS:17,SCREEN_DEFAULTS:18,SCREEN_CONSOLE_PANEL_TOGGLE:19,SPEAKER_BUFFER_TOGGLE:20,CONSOLE_POWER_TOGGLE:102,CONSOLE_POWER_FRY:103,CONSOLE_LOAD_STATE_FILE:104,CONSOLE_SAVE_STATE_FILE:105,CONSOLE_LOAD_STATE_MENU:106,CONSOLE_SAVE_STATE_MENU:107,P1_CONTROLS_TOGGLE:201,JOYSTICKS_TOGGLE_MODE:202,PADDLES_TOGGLE_MODE:203,TOUCH_TOGGLE_MODE:204,TOUCH_TOGGLE_DIR_BIG:205,TURBO_FIRE_TOGGLE:206,HAPTIC_FEEDBACK_TOGGLE_MODE:207,CAPTURE_SCREEN:304,CARTRIDGE_LOAD_RECENT:40,CARTRIDGE_LOAD_FILE:41,CARTRIDGE_LOAD_URL:42,CARTRIDGE_REMOVE:43,CARTRIDGE_LOAD_DATA_FILE:44,CARTRIDGE_SAVE_DATA_FILE:45,CARTRIDGE_CHOOSE_FORMAT:46,AUTO_LOAD_FILE:47,AUTO_LOAD_URL:48,SCREEN_OPEN_NETPLAY:500},jt.DOMPeripheralControls=function(a){\"use strict\";var b=this;this.connect=function(a){i=a},this.connectPeripherals=function(a,b,c,i){d=a,f=b,e=a.getMonitor(),g=c,h=i},this.getControlReport=function(a){switch(a){case k.PADDLES_TOGGLE_MODE:case k.P1_CONTROLS_TOGGLE:case k.TURBO_FIRE_TOGGLE:case k.TOUCH_TOGGLE_DIR_BIG:case k.HAPTIC_FEEDBACK_TOGGLE_MODE:return g.getControlReport(a);case k.SCREEN_CRT_FILTER:return d.getControlReport(a);case k.SPEAKER_BUFFER_TOGGLE:return f.getControlReport(a)}return{label:\"Unknown\",active:!1}},this.processKey=function(a,c){if(!c)return!1;var d=l[a]||l[a&m];return!!d&&(b.controlActivated(d,!!(a&n),!1),!0)},this.controlActivated=function(b,j,l){if(2===a.netPlayMode&&N.has(b))return a.showOSD(\"Function not available in NetPlay Client mode\",!0,!0);switch(b){case k.CONSOLE_POWER_TOGGLE:g.processControlState(jt.ConsoleControls.POWER,!0);break;case k.CONSOLE_POWER_FRY:g.processControlState(jt.ConsoleControls.POWER_FRY,!0);break;case k.CONSOLE_LOAD_STATE_FILE:h.openFileChooserDialog(o.STATE,!1,!1,!1);break;case k.CONSOLE_SAVE_STATE_FILE:g.processControlState(jt.ConsoleControls.SAVE_STATE_FILE,!0);break;case k.CONSOLE_LOAD_STATE_MENU:d.openSaveStateDialog(!1);break;case k.CONSOLE_SAVE_STATE_MENU:d.openSaveStateDialog(!0);break;case k.CARTRIDGE_LOAD_RECENT:c()||d.openCartridgeChooserDialog(!1,j,l);break;case k.CARTRIDGE_LOAD_FILE:c()||h.openFileChooserDialog(o.ROM,j,l,!1);break;case k.CARTRIDGE_LOAD_URL:c()||h.openURLChooserDialog(o.ROM,j,l);break;case k.CARTRIDGE_REMOVE:c()||i.insert(null,!1);break;case k.CARTRIDGE_LOAD_DATA_FILE:case k.CARTRIDGE_SAVE_DATA_FILE:break;case k.CARTRIDGE_CHOOSE_FORMAT:c()||d.openCartridgeFormatDialog(j);break;case k.AUTO_LOAD_FILE:c()||h.openFileChooserDialog(o.AUTO,j,l,!1);break;case k.AUTO_LOAD_URL:c()||h.openURLChooserDialog(o.AUTO,j,l,!1);break;case k.SCREEN_CRT_MODE:e.crtModeToggle();break;case k.SCREEN_CRT_FILTER:e.crtFilterToggle();break;case k.SCREEN_FULLSCREEN:e.fullscreenToggle();break;case k.SCREEN_DEFAULTS:g.processControlState(jt.ConsoleControls.DEFAULTS,!0),e.setDefaults();break;case k.SCREEN_TOGGLE_MENU:d.toggleMenuByKey();break;case k.SCREEN_OPEN_HELP:d.openHelp();break;case k.SCREEN_OPEN_ABOUT:d.openAbout();break;case k.SCREEN_OPEN_SETTINGS:if(j)return this.controlActivated(k.SCREEN_DEFAULTS);d.openSettings();break;case k.SCREEN_OPEN_QUICK_OPTIONS:d.openQuickOptionsDialog();break;case k.SCREEN_CONSOLE_PANEL_TOGGLE:d.toggleConsolePanel();break;case k.SCREEN_OPEN_NETPLAY:d.openNetPlayDialog();break;case k.P1_CONTROLS_TOGGLE:g.toggleP1ControlsMode();break;case k.JOYSTICKS_TOGGLE_MODE:g.toggleGamepadMode();break;case k.PADDLES_TOGGLE_MODE:g.togglePaddleMode();break;case k.TOUCH_TOGGLE_MODE:g.toggleTouchControlsMode();break;case k.TOUCH_TOGGLE_DIR_BIG:g.toggleTouchDirBig();break;case k.TURBO_FIRE_TOGGLE:g.toggleTurboFireSpeed();break;case k.HAPTIC_FEEDBACK_TOGGLE_MODE:g.toggleHapticFeedback();break;case k.CAPTURE_SCREEN:d.saveScreenCapture();break;case k.SPEAKER_BUFFER_TOGGLE:f.toggleBufferBaseSize();break;case k.VIEWPORT_ORIGIN_MINUS:e.viewportOriginDecrease();break;case k.VIEWPORT_ORIGIN_PLUS:e.viewportOriginIncrease()}if(!M)switch(b){case k.SCREEN_ASPECT_MINUS:e.displayAspectDecrease();break;case k.SCREEN_ASPECT_PLUS:e.displayAspectIncrease();break;case k.SCREEN_SCALE_MINUS:e.displayScaleDecrease();break;case k.SCREEN_SCALE_PLUS:e.displayScaleIncrease();break;case k.VIEWPORT_SIZE_MINUS:e.viewportSizeDecrease();break;case k.VIEWPORT_SIZE_PLUS:e.viewportSizeIncrease()}};var c=function(){return Javatari.CARTRIDGE_CHANGE_DISABLED?(e.showOSD(\"Cartridge change is disabled!\",!0,!0),!0):2===a.netPlayMode&&(e.showOSD(\"Cartridge change is disabled in NetPlay Client mode!\",!0,!0),!0)};this.mediaChangeDisabledWarning=c;var d,e,f,g,h,i,j=function(){var a=jt.DOMKeys;l[x]=k.CARTRIDGE_LOAD_RECENT,l[x|a.ALT]=k.CARTRIDGE_LOAD_RECENT,l[y]=k.AUTO_LOAD_URL,l[y|a.ALT]=k.AUTO_LOAD_URL,l[z]=k.CARTRIDGE_REMOVE,l[z|a.ALT]=k.CARTRIDGE_REMOVE,l[L]=k.CONSOLE_SAVE_STATE_FILE,l[L|a.ALT]=k.CONSOLE_SAVE_STATE_FILE,l[A|a.ALT]=k.P1_CONTROLS_TOGGLE,l[C|a.ALT]=k.PADDLES_TOGGLE_MODE,l[B|a.ALT]=k.JOYSTICKS_TOGGLE_MODE,l[D|a.ALT]=k.TOUCH_TOGGLE_MODE,l[E|a.ALT]=k.TURBO_FIRE_TOGGLE,l[G|a.ALT]=k.SCREEN_CRT_FILTER,l[F|a.ALT]=k.SCREEN_CRT_MODE,l[H|a.ALT]=k.SCREEN_OPEN_SETTINGS,l[I|a.ALT]=k.SCREEN_OPEN_QUICK_OPTIONS,l[J|a.ALT]=k.SCREEN_CONSOLE_PANEL_TOGGLE,l[K|a.ALT]=k.SCREEN_FULLSCREEN,l[q|a.CONTROL|a.ALT]=k.SCREEN_SCALE_MINUS,l[s|a.CONTROL|a.ALT]=k.SCREEN_SCALE_PLUS,l[p|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_MINUS,l[r|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_PLUS,l[q|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_MINUS,l[s|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_PLUS,l[p|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_MINUS,l[r|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_PLUS,l[t]=k.SCREEN_TOGGLE_MENU,l[u]=k.SCREEN_DEFAULTS,\nl[u|a.ALT]=k.SCREEN_DEFAULTS,l[v|a.ALT]=k.CAPTURE_SCREEN,l[w|a.ALT]=k.SPEAKER_BUFFER_TOGGLE},k=jt.PeripheralControls,l={},m=~jt.DOMKeys.SHIFT,n=jt.DOMKeys.SHIFT,o=jt.FileLoader.OPEN_TYPE,p=jt.DOMKeys.VK_LEFT.c,q=jt.DOMKeys.VK_UP.c,r=jt.DOMKeys.VK_RIGHT.c,s=jt.DOMKeys.VK_DOWN.c,t=jt.DOMKeys.VK_CONTEXT.c,u=jt.DOMKeys.VK_BACKSPACE.c,v=jt.DOMKeys.VK_G.c,w=jt.DOMKeys.VK_A.c,x=jt.DOMKeys.VK_F5.c,y=jt.DOMKeys.VK_F6.c,z=jt.DOMKeys.VK_F7.c,A=jt.DOMKeys.VK_K.c,B=jt.DOMKeys.VK_J.c,C=jt.DOMKeys.VK_L.c,D=jt.DOMKeys.VK_N.c,E=jt.DOMKeys.VK_H.c,F=jt.DOMKeys.VK_R.c,G=jt.DOMKeys.VK_T.c,H=jt.DOMKeys.VK_Y.c,I=jt.DOMKeys.VK_U.c,J=jt.DOMKeys.VK_S.c,K=jt.DOMKeys.VK_ENTER.c,L=(jt.DOMKeys.VK_F1.c,jt.DOMKeys.VK_F8.c),M=Javatari.SCREEN_RESIZE_DISABLED,N=new Set([k.CONSOLE_POWER_FRY,k.CONSOLE_LOAD_STATE_FILE,k.CONSOLE_SAVE_STATE_FILE,k.CONSOLE_LOAD_STATE_MENU,k.CONSOLE_SAVE_STATE_MENU,k.CARTRIDGE_LOAD_RECENT,k.CARTRIDGE_LOAD_FILE,k.CARTRIDGE_LOAD_URL,k.CARTRIDGE_REMOVE,k.CARTRIDGE_LOAD_DATA_FILE,k.CARTRIDGE_SAVE_DATA_FILE,k.AUTO_LOAD_FILE,k.AUTO_LOAD_URL]);!function(){j()}()},jt.NetServer=function(a){\"use strict\";function b(){void 0===v&&(v=setInterval(p,3e4));var a={sessionControl:\"createSession\",sessionType:\"javatari\",wsOnly:D,queryVariables:[\"RTC_CONFIG\",\"RTC_DATA_CHANNEL_CONFIG\"]};u&&(a.sessionID=u),s.send(JSON.stringify(a))}function c(){r.stopSession(!0,v?\"NetPlay Session stopped: Connection lost\":\"NetPlay: Connection error\")}function d(a){var b=JSON.parse(a.data);if(b.javatariUpdate)return o(b.javatariUpdate);if(b.sessionControl)switch(b.sessionControl){case\"sessionCreated\":return void e(b);case\"clientJoined\":return void f(b);case\"clientLeft\":return void g(b);case\"createError\":return void r.stopSession(!0,\"NetPlay: \"+b.errorMessage)}else b.clientSDP&&h(b)}function e(b){try{w=JSON.parse(b.queriedVariables.RTC_CONFIG||\"{}\")}catch(a){}try{x=JSON.parse(b.queriedVariables.RTC_DATA_CHANNEL_CONFIG||\"{}\")}catch(a){}t=b.sessionID,z.netClearControlsToSend(),a.enterNetServerMode(r),a.showOSD('NetPlay session \"'+b.sessionID+'\" started',!0),jt.Util.log('NetPlay session \"'+b.sessionID+'\" started')}function f(b){var c={nick:b.clientNick,justJoined:!0,wsOnly:D||!!b.wsOnly};if(C[c.nick]=c,a.showOSD('NetPlay client \"'+c.nick+'\" joined',!0),jt.Util.log('NetPlay client \"'+c.nick+'\" joined'),!c.wsOnly){var d=new RTCPeerConnection(w);c.rtcConnection=d,d.onicecandidate=function(a){a.candidate||(jt.Util.log(\"Server SDP for client \"+c.nick+\":\",d.localDescription),s.send(JSON.stringify({toClientNick:c.nick,serverSDP:d.localDescription})))};var e=d.createDataChannel(\"dataChannel\",x);c.dataChannel=e,e.onopen=function(a){i(c,a)},e.onclose=function(a){j(c,a)},e.onmessage=function(a){k(c,a)},d.createOffer().then(function(a){return d.setLocalDescription(a)}).catch(function(a){l(c,a)})}}function g(a){var b=C[a.clientNick];b&&n(b,!0,!1,'NetPlay client \"'+b.nick+'\" left')}function h(a){var b=C[a.fromClientNick];b&&(jt.Util.log(\"Client SDP from client \"+b.nick+\":\",a.clientSDP),b.rtcConnection.setRemoteDescription(new RTCSessionDescription(a.clientSDP)).catch(l))}function i(a,b){jt.Util.log(\"Client \"+a.nick+\" dataChannel open\"),a.dataChannelActive=!0}function j(a,b){jt.Util.error(\"NetPlay Client \"+a.nick+\" dataChannel closed\"),n(a,!0,!0,'NetPlay client \"'+a.nick+'\" dropped: P2P connection lost')}function k(a,b){o(JSON.parse(b.data))}function l(a,b){jt.Util.error(\"NetPlay Client \"+a.nick+\" RTC error:\",b),n(a,!0,!0,'NetPlay client \"'+a.nick+'\" dropped: P2P connection error')}function m(){for(var a in C)n(C[a],!1)}function n(b,c,d,e){c&&(a.showOSD(e||'NetPlay client \"'+b.nick+'\" left',!0,d),(d?jt.Util.error:jt.Util.log)(e||'NetPlay client \"'+b.nick+'\" left')),b.dataChannel&&(b.dataChannel.onopen=b.dataChannel.onclose=b.dataChannel.onmessage=void 0,b.dataChannel.close()),b.rtcConnection&&(b.rtcConnection.onicecandidate=void 0,b.rtcConnection.close()),delete C[b.nick]}function o(a){a.c&&z.netServerProcessControlsChanges(a.c)}function p(){try{s.send('{ \"sessionControl\": \"keep-alive\" }')}catch(a){jt.Util.error(\"NetPlay error sending keep-alive\"),r.stopSession(!0,\"NetPlay Session stopped: connection error\")}}function q(a,b){var c=b.length;if(c<E)return a.send(b);for(var d=0,e=0;;){var f=b.substr(e,F);if(e+=F,d++,!(e<c))return void a.send(H+f);a.send(G+f)}}var r=this;this.startSession=function(e){u=e?(\"\"+e).trim():void 0;var f;u&&\"@\"===u[u.length-1]?(u=u.substr(0,u.length-1),f=!0):f=!1,u&&t===u&&D===f||(t&&this.stopSession(!0),a.enterNetPendingMode(this),D=f,s?b():(s=new WebSocket(\"wss://\"+Javatari.SERVER_ADDRESS),s.onmessage=d,s.onopen=b,s.onclose=c))},this.stopSession=function(b,c){clearInterval(v),v=void 0,s&&(s.onmessage=s.onopen=s.onclose=void 0,s.close(),s=void 0),b?m():setTimeout(m,300),a.showOSD(c||'NetPlay Session \"'+t+'\" stopped',!0,b),(b?jt.Util.error:jt.Util.log)(c||'NetPlay Session \"'+t+'\" stopped'),t=void 0,a.enterStandaloneMode()},this.getSessionID=function(){return t},this.netVideoClockPulse=function(){y.getConsoleControlsSocket().controlsClockPulse();var b=y.videoClockPulseGetNextPulldowns();y.videoClockPulseApplyPulldowns(b);var c,d,e;for(var f in C){var g=C[f];if(g.wsOnly||g.dataChannelActive){if(g.justJoined||B){if(g.justJoined=!1,!d){var h={s:y.saveState(!0),cm:{p1:a.consoleControls.isP1ControlsMode(),pd:a.consoleControls.isPaddleMode()}};d=JSON.stringify(h)}c=d}else e||(A.c=z.netGetControlsToSend(),A.v=b,e=JSON.stringify(A)),c=e;try{g.dataChannelActive?q(g.dataChannel,c):s.send(JSON.stringify({toClientNick:g.nick,javatariUpdate:c}))}catch(a){n(g,!0,!0,'NetPlay client \"'+g.nick+'\" dropped: P2P error sending data')}}}B=!1,z.netClearControlsToSend()},this.processExternalStateChange=function(){B=!0};var s,t,u,v,w,x,y=a.console,z=a.consoleControls,A={v:0,c:void 0},B=!1,C={},D=!1,E=16300,F=16200,G=\"#@FrgS@#\",H=\"#@FrgE@#\"},jt.NetClient=function(a){\"use strict\";function b(){void 0===v&&(v=setInterval(n,3e4)),q.send(JSON.stringify({sessionControl:\"joinSession\",sessionType:\"javatari\",sessionID:s,clientNick:u,wsOnly:B,queryVariables:[\"RTC_CONFIG\"]}))}function c(){p.leaveSession(!0,v?\"NetPlay session ended: Connection lost\":\"NetPlay: Connection error\")}function d(a){var b=JSON.parse(a.data);if(b.javatariUpdate)return m(JSON.parse(b.javatariUpdate));if(b.sessionControl)switch(b.sessionControl){case\"sessionJoined\":return void e(b);case\"sessionDestroyed\":return void p.leaveSession(!1,'NetPlay Session \"'+r+'\" ended');case\"joinError\":return void p.leaveSession(!0,\"NetPlay: \"+b.errorMessage)}else b.serverSDP&&g(b)}function e(a){if(r=a.sessionID,t=a.clientNick,D=B||a.wsOnly,C=!0,D)return f();try{w=JSON.parse(a.queriedVariables.RTC_CONFIG||\"{}\")}catch(a){}x=new RTCPeerConnection(w),x.onicecandidate=function(a){a.candidate||q.send(JSON.stringify({clientSDP:x.localDescription}))},x.ondatachannel=function(a){y=a.channel,y.onopen=h,y.onclose=i,y.onmessage=j}}function f(){a.showOSD('NetPlay Session \"'+r+'\" joined as \"'+t+'\"',!0),jt.Util.log('NetPlay Session \"'+r+'\" joined as \"'+t+'\"'),A.netClearControlsToSend(),a.enterNetClientMode(p)}function g(a){x.setRemoteDescription(new RTCSessionDescription(a.serverSDP)).then(function(){return x.createAnswer()}).then(function(a){return x.setLocalDescription(a)}).catch(k)}function h(a){E=!0,F=\"\",f()}function i(a){jt.Util.error(\"NetPlay dataChannel closed\"),p.leaveSession(!0,\"NetPlay session ended: P2P connection lost\")}function j(a){var b=o(a);b&&m(JSON.parse(b))}function k(a){jt.Util.error(\"NetPlay RTC error:\",a),p.leaveSession(!0,\"NetPlay session ended: P2P connection error\")}function l(){y&&(y.onpen=y.onclose=y.onmessage=void 0,y.close(),y=void 0),x&&(x.onicecandidate=x.ondatachannel=void 0,x.close(),x=void 0)}function m(b){b.s?(z.loadState(b.s),C&&(a.consoleControls.setP1ControlsAndPaddleMode(!b.cm.p1,b.cm.pd),C=!1)):(b.c&&A.netClientApplyControlsChanges(b.c),z.videoClockPulseApplyPulldowns(b.v)),z.getConsoleControlsSocket().controlsClockPulse();var c={\nc:A.netGetControlsToSend()};E?y.send(JSON.stringify(c)):q.send(JSON.stringify({javatariUpdate:c})),A.netClearControlsToSend()}function n(){try{q.send('{ \"sessionControl\": \"keep-alive\" }')}catch(a){jt.Util.error(\"NetPlay error sending keep-alive\"),p.leaveSession(!0,\"NetPlay session ended: Connection error\")}}function o(a){var b=a.data,c=b.substr(0,8);return c!==G&&c!==H?(F=\"\",b):(F+=b.substr(8),c===H?(b=F,F=\"\",b):void 0)}var p=this;this.joinSession=function(e,f){if(!(s=(\"\"+e).trim()))return a.showOSD(\"Must enter Session Name for joining NetPlay session\",!0,!0);var g;\"@\"===s[s.length-1]?(s=s.substr(0,s.length-1),g=!0):g=!1,u=f,B=g,r===s&&t===u&&D===B||(r&&this.leaveSession(!0),a.enterNetPendingMode(this),q?b():(q=new WebSocket(\"wss://\"+Javatari.SERVER_ADDRESS),q.onmessage=d,q.onopen=b,q.onclose=c))},this.leaveSession=function(b,c){clearInterval(v),v=void 0,r=t=void 0,D=!1,q&&(q.onpen=q.onclose=q.onmessage=void 0,q.close(),q=void 0),y&&(y.onpen=y.onclose=y.onmessage=void 0),x&&(x.onicecandidate=x.ondatachannel=void 0),E=!1,F=\"\",b?l():setTimeout(l,300),a.showOSD(c||\"NetPlay session ended\",!0,b),(b?jt.Util.error:jt.Util.log)(c||\"NetPlay session ended\"),a.enterStandaloneMode()},this.getSessionID=function(){return r},this.netVideoClockPulse=function(){};var q,r,s,t,u,v,w,x,y,z=a.console,A=a.consoleControls,B=!1,C=!1,D=!1,E=!1,F=\"\",G=\"#@FrgS@#\",H=\"#@FrgE@#\"},jt.NetClient.initKeepAlive=function(){Javatari.SERVER_ADDRESS&&Javatari.SERVER_KEEPALIVE&&jt.NetClient.sendKeepAlive()},jt.NetClient.sendKeepAlive=function(){fetch(\"https://\"+Javatari.SERVER_ADDRESS+\"/keepalive\",{mode:\"no-cors\"}).catch(function(a){jt.Util.error(\"Sending KeepAlive: \",a)}).finally(function(){Javatari.SERVER_KEEPALIVE>0&&setTimeout(jt.NetClient.sendKeepAlive,Javatari.SERVER_KEEPALIVE)})},jt.Room=function(a,b){\"use strict\";function c(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0))}function e(){h.mainVideoClock=new jt.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new jt.DOMPeripheralControls(h),h.consoleControls=new jt.DOMConsoleControls(h,h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia(h),h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h,h.recentROMs,h.peripheralControls),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(h,a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.mainVideoClock.connect(h.console.getVideoClockSocket()),h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getCartridgeSocket()),h.console.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.getNetServer=function(){return this.netServer||(this.netServer=new jt.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new jt.NetClient(this)),this.netClient},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.console.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.console.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.console.getConsoleControlsSocket().controlsClockPulse(),h.console.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,h.mainVideoClock.go(),this.netPlayStateBeforeClientMode&&(this.console.loadState(this.netPlayStateBeforeClientMode),this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1,this.netPlayControlsModeBeforeClientMode.pd),this.netPlayStateBeforeClientMode=void 0),a!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(a)},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.console.saveState(!0),this.netPlayControlsModeBeforeClientMode={p1:this.consoleControls.isP1ControlsMode(),pd:this.consoleControls.isPaddleMode()},b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.mainVideoClock=null,this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModeBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c<a;c++)h.mainVideoClockPulse();var d=jt.Util.performanceNow()-b;jt.Util.log(\"Done running \"+a+\" frames in \"+(0|d)+\" ms\"),jt.Util.log((a/(d/1e3)).toFixed(2)+\"  frames/sec\"),this.mainVideoClock.go()},function(){e(),f(),g(),Javatari.userROMFormats.init()}()},Javatari.userPreferences={},Javatari.userPreferences.currentVersion=1,Javatari.userPreferences.compatibleVersions=new Set([1]),Javatari.userPreferences.defaults=function(){\"use strict\";var a=jt.DOMKeys;return{joystickKeys:[{left:a.VK_LEFT,up:a.VK_UP,right:a.VK_RIGHT,down:a.VK_DOWN,button:a.VK_SPACE,buttonT:a.VK_DELETE},{left:a.VK_F,up:a.VK_T,right:a.VK_H,down:a.VK_G,button:a.VK_A,buttonT:a.VK_PERIOD}],joystickGamepads:[{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3},{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3}],touch:{directionalBig:!1},hapticFeedback:!0,turboFireSpeed:6,vSynch:1,crtFilter:-1,audioBufferBase:-1,netPlaySessionName:\"\",netPlayNick:\"\"}},Javatari.userPreferences.load=function(){var a;try{a=JSON.parse(localStorage.javatari4prefs||\"{}\"),a.version&&delete a.version}catch(a){}if(!a||!Javatari.userPreferences.compatibleVersions.has(a.prefsVersion)){a={}}var b=Javatari.userPreferences.defaults();for(var c in b)void 0===a[c]&&(a[c]=b[c]);a.prefsVersion=Javatari.userPreferences.currentVersion,\nJavatari.userPreferences.current||(Javatari.userPreferences.current={});var d=Javatari.userPreferences.current;for(c in a)d[c]=a[c];Javatari.userPreferences.isDirty=!1},Javatari.userPreferences.setDefaultJoystickKeys=function(){Javatari.userPreferences.current.joystickKeys=Javatari.userPreferences.defaults().joystickKeys,Javatari.userPreferences.setDirty()},Javatari.userPreferences.save=function(){if(Javatari.userPreferences.isDirty)try{Javatari.userPreferences.current.javatariVersion=Javatari.VERSION,localStorage.javatari4prefs=JSON.stringify(Javatari.userPreferences.current),Javatari.userPreferences.isDirty=!1,jt.Util.log(\"Preferences saved!\")}catch(a){}},Javatari.userPreferences.setDirty=function(){Javatari.userPreferences.isDirty=!0},Javatari.userROMFormats={init:function(){jt.CartridgeCreator.setUserROMFormats(this),this.userFormats=JSON.parse(localStorage.javatariuserformats||\"{}\")},getForROM:function(a){return this.userFormats[a.info.h]},setForROM:function(a,b,c){a.info.h&&(c?delete this.userFormats[a.info.h]:this.userFormats[a.info.h]=b,localStorage.javatariuserformats=JSON.stringify(this.userFormats))}},jt.Images.embedded=!0,\njt.Images.urls.logo=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAp4AAAIICAYAAADHSe7NAAAgAElEQVR42uzdebxlVX3n/c8+t+a5oKqAspinElAQVASDyKSiEoU4xJZonpiAnaTT7dNTWvLq6KuDmUzHtp82iYmaBI2oBBzC5AAKTig4tSCCICBRGYUqarrD2c8fe6192eucfc8dd517z+f9B6fuGffZ+9x9WN/7W+sHkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRpIcrcBZIWimOOO/V8gDX77HslwNjYyAMADGUrihNevhMgGxu7HyCrOQPm+cQnzLzj5+L5yVobi5+L13naM+7odsLN87A98fmy8DzB8OjwzQDf+voX3+bRlbQQtNwFkiRJasIid4Gk1xxyWA5wxJLFAOzIiwwuj9lemQDm1R9bxdg1axfXDMWoMESJo+FydxjjDofLReEZFoenWRGGwD8dGQHg4/feNaW/xjzrOUXS+aLTX3IlwNHHPAuAPaNjBwHkrXaxWeF1W20OqryPSQ7J60bqecgs22G/xTu2qO6++KbacT+OtcP9iluGhoYAGBsbA+Cpp7adBDA8vPtKgO9/6+s3T2W/nHPuBTnAgQceCsA+Gw8AYNXqdZUtGx0dLbarPRYOa7E9S5YurbyBvCMKrh7vsdHi8Xv27CmO76JiDzz+2EMAfPvWr10F8LUvf+ECf+ukwWTiKUmSpEaYeEriecuL0sKzV4SEq1Ukb+0eZeB1t4bAjCwNTGl3feSaoWIM/M3tTwHw8Slu/36bDrgS4LnPPxmAU047A4Adu0erQ+wsJpMTb//4DdmkRuh5Vq3+bCePi4lomniSVxPPVkyKQ+L5xC8eAeBLN1x/U49d3tXLX3EeAC887SwAVq/bCMBTO3cXTxaOc0y2s3Dg4vXjm1lsZ0w80+SzfHx4xyEIZ3lI0O+849sAPPrwQ+cDfI0v+EsnDSgTT0mSJDXCxFMSe0Jt4q7wc6xVbCfViWncNhYuk9LOjhFt+XNe/CuteVxEkbDtmeZYuB02YCTUTA6PFpe7h0fDy4aa1SwmfOn7yej6BictrzxvniS+4+84T/ZLVrk2JsXtseKa4ZFif4y1p7dV+27YUPxjqDjV79g9XOznkbA1IWkeTzDzypHt2Py0xjdJPtvEBDfUjobt3j1S/GM093dNGnQmnpIkSWqEiackxqO+VvJzkNP9+nhtzd3r1r1Mdc8DZzCWzsJ8+dZYZQOzrFW5X1a7RdmUtijvCEyz5CKfVAIwvp5nuGZocY/tnNiSpSvC9hWn+tE81O4uKn7O81jT2f2AlHsh617bOX73vLr95W4onrhdHhezDmnQeRaQJElSI0w8JT1NmlzFpJDK9XnHyDU8Lok+x3PUaoSWPr41w5Hw0zr/FJdxfdE4OzurZnFDpNuZTbA3Jr8FeY9p8nXJZ5Z33UyGspk1l1u8dHnYsaG2NdS4ltPO87yyXVlH1BkvkvfXMas92Z/l+6gmnXlmszxp0Jl4SpIkqREmnpLIWjGxjFfUJJ91tXzlw6rP05FEhp/Tms+h8I9F2TSrPOPrletQhnUxW3EWfTW5bSXBXpZ04ImJ3vjW1FSpxtrHdrohNe8jT24uNyDMBh+qRsJDYZZ4Ns39snRZsS7r0KKiVrQdVhXIQs1nKx8Nl0niGTe3XIi1euTymgS784CEpLRVUzssaeCYeEqSJKkRJp6Sxmd9hx9r87XkhrpEtPP29Jru95vp9pN0EGqRXh+2M897vG76fmqivTzZb7W9zFs17zckiFmadFaTgenun7i+aSus1znULi5Hw8KgQ7HTUNb9faaLGaRvL8+7vx+S5Lx8H0Yd0sDzNCBJkqRGmHhK6lK7GZPB6v3yrJoEtro8U/V5qpfjgVio/YuR2VDs4JNN+x0UF9Xazlas+Uyyw7xVk7hm3RPZPJ+4uXuZF6azvbPkfWVJZ6Py5drV7Yw7vpUkolPeLWEd0HxxOF7F8y8ua0fT9U3j+62+nzxZtaAs/axZ17OclR+PQzwuuTWe0qAz8ZQkSVIjTDwldfQtGr+h2kucZPZ3x6z2dD3HjlncSS1hVp1tPtM3EBO58eU7Q+KWZK/trPv7T2tB87ya9OU99l/W0fM8STp7dH5qlSWWQ5XXnW6VZ3z/5fMTE+Gs5n23Ktuf1xxXatbzJF09IK4uUPN5kTR4TDwlSZLUCBNPSV2SzngRaz+7N2NPa0LH1//saF4+4fVlBeY0o8/xDkvVGsTx9UOrr9vqkb2VCedUl89MaljbZYLZPbkcr31Nkt8s3f7piet/luub5tX3P75saTWhHX//3Xu0p7fXv36rcmnmKcnEU5IkSY0w8ZREFhK3jlrI0JEnrynx66zxnNz9OtYDzWruN0l5ui5okhj2arpeF7RONYBNJ8XX9bhPd1CZ0JYPbM9sQ5Lnb2XV52nn1QMxnkhOnHB2vt/q9WlNbFw/NItFtyae0sAz8ZQkSVIjTDwlkcflI0kuy+u79yrv6HVet45nj/UvWzMcCZfJYqt6GQK3jlrN+gSv45rJ7sHqo/JqlNmx99JaznZ8/zGRzCrvg2nvl+rzlB2bsrzrfsjLWtPuyWe6X8bvR+X+47P0s+T1zDqkQedZQJIkSY0w8ZQUG+SMj0TToC+vFit2diaqma2dSGse28n9Z5p4ttJ1PJOkr1yfk8nVMDLt7Ul6wdcUuabLZ453jCouh9IOR1M9rq10ndTq62bJBqYJZu/9kiXPm3U/3knyKWmAv2/cBZIkSWqCiaektMFO52z09Pps4pFrR2Aar4/Jas0s+fbMNn983UiqL9grgZ2j3Tnp508TyFZH46PpbehQTDzj7PKx2Lmo+/b1Sjp7rdvZORs+Hu/uPeElDR7PApIkSWqEiaek8U42dbPSk/tPtoP4eA/zHreHf7Sn3aInPk+RmWbJspH1tZbV15+ppJRygnU805rY4pZW2FHtpOMQ06yNzLL0+cN2THI/9FoNIF23M71fx3qqWOMp+X0jSZIkNcDEU9L4+o7JiDSv6yjUI8HsGOEmDYTi5aKkVnS6NZ5lwtixjme1RzkdvdPD1Vne4x1Mek/WvN7Ez54lCWmcjd5qzWyryg5Csbd6fF4mXp8zT7anY3cnt+dJj/q6hVyzzM5F0qAz8ZQkSVIjTDwllclVXDdyrGbWelorWXt7zfOXlX7JuqGLZtyrvTqW7lw/svr87WS7Zivp7Fgns+7pkwi0lSfrbSYJ7kw3L84mL5PnvMcG9dzTWdf3XXsvg05JdP/ekCRJkuaEiaek+oq/vOb2uvU+e7xAev/R5PmHphmNlbPy0448cXZ4GcHFmse5nV2dpZ2J6L5waVprGWs6x/LkfU0z8owJZ2uoyHjz9lAlchjfDbG2M93u5DCmyWzHYY77O+v+/u1cJA08E09JkiQ1wsRTEkvDEHRRTNpaxalhOERv6Qi1He43kvTorpudPpSMdGPutSckbGN5ccuKxdM8JZWdeIpXjknfovCPPGxQXk4f7568TX/WdV6zWTW1kx0dgMbCs1SjyLzc8OnN9x9KetVnyfqgebI70p7uaS1oejtJIpu+raEYsLYm3k+SBoeJpyRJkhph4imJf/e972UAp69ddylAO2s9AtAmf3Q2nj+DFd2ub8MjAMuy7AKA7e2xS6b1/OX6l2FWeyv+XFyW64eW62rmEz7P1OUdb7h6dd715jJZDBlAue5oaL1UJpbTTArLjkXhedpprW06+76m5jN9Q2kSWtZ21uzPsqOUiac08Ew8JUmS1AgTT0mlLz35xCV76aWvmtGjk9nsZav2rG6Ina67We1RP90NKGtI04U487rnr87+biWtgGa6jme6nmlH6/dY01suX5A9/erO1TrDDe205DTvfhyou5Q0sEw8JUmS1AgTT0nzXyxeDPPpyx7zyTT7rCOSS2ovZzirPSmRTG8u17fsvD3peFRetrpt5qTFl4kdqfKYfKbBbLLOZsdeSGo642z1mIDmNQu9zlbnJUkLh4mnJEmSGmHiKWnhDKGTxLCczR1uLtetzNKkc3Y2I+t1Q3qHdvftHt/+mBxObwPL9zVUjSZj8tojgH3aE1VrYfNk3c+yRDRJRltp8mznIsnTtbtAkiRJTTDxlDTvlQnhUPWy4/aeQ+3pJnJ59xcsb04S1jzrOvQvty/Oso/rX2bT61wUk9Isef60g1TWsQxpnmx2sgpA8vjyebI8+bna0Sqz2FMaeCaekiRJaoSJp6R5b7wHeRhRt6rXlzWUzHS9zonldU+crp9ZM7m+lcxmb6X3m+p+CdPXYwLcTmsza9b1zJP1RUlnryfXl8uPUv05fT+Zgac08Ew8JUmS1AgTT0kLRkev8NZY8Y88JIhlkjc30VteN2s77/665Y+hhLPVUfMZksJ8ehlBx+z4uJ5pq3p7ls52L7c7XORUr097tpe3JzWe5evEF3ZWuzToTDwlSZLUCBNPSfNenIXd6ujVPhRujz9T+Xk2t+Dpz58zVhnb1zRKGh/5J7Pu8zbJ801vVns5iz3OLk+Tz6QWk45az3S/Fde0y8d3L/IsZ9GX7yskzkN+VqVBZ+IpSZKkRph4Spr3yqAuWS8zJnzp7Ots1l4xqj5jnjQpT2ezl9sXk8VklnleJpXMbIPL560msq2Ou03tBcpkNp/4hcvEdWiG0/MlLRgmnpIkSWqEiaekea+s8QwRYTyxdSZzsfNONsPXSxLO8RuS25OIta7BUYg8y4A26XGeTTMjKB+XJJ1Z2rooab6eTfCME79g91n7c1dbK2m+MfGUJElSI0w8Jc3/EXSICIfCfPahZGQ9ltw/m+SQO5vk9XntHfIJ7xgTzjhLPF4x1JEQTLNXe1ZNUtu17yvWouY9dkCsFa32cs87I9/qj6FlUtY285QG/nztLpAkSVITTDwlzXvZUJERxvUqy8Qz6SGeJzWU5ePjP2omq5cBXs0s7qRU82lPVPdCyb1a1RrLdlzIs9We4Y6pbndMKltJh6KsY7smnrVft3/Sae6x1jUL7yOzylMaeCaekiRJaoSJp6R5r5yUnXTOGSoTz1CTmKxnGdWts5l2HOq1DGXW8cCeW17Z/laZIMaORzPLBrKko1JZ81mzDme5jmjas73Hfs879kBeeZ2htIOTpIFl4ilJkqRGmHhK4uzjn3cdwFKylwKMZtmdxS3VBSDznB0AtGOtIBsBWhkbAMbgAYDhPL8pnGCeCbA6b58GMBZqFx9n6G0Ay1rZBQCf+943XjSzd5DWFlYv01rP9H49ShgnkdQlkWk2xc2uWe4zq0loJyvWVsbOQWUCPJa+7+qG5DWT8cc7Q2Vd91NZQ1vTucjEU5KJpyRJkhph4imJVy0aeynAy5eEU8JQayt0zm7OuvyruF959dbiItsKsDRcHWv8YtA2An8Z7gfAmhedkgPcODIKwK987ZtTy8aSGsxWspUdyeUkg8k0EOzV0SfvuZ1p0/hqxtmR1MZbp5kUtkg6IsXjEWbRj+eX1aQzfb3xWs7us+HzXrP9y+0w65AGnWcBSZIkNcLEUxIrwuU+scNNUqtXG7j1qI0cSn5Og7H489pQA7i+Pb1TUjpbezw5DLWoNet39ngbHQlk3fKcaeKaT3X7e2zHdKWz/Mcvqxua1RynjmQz2cB2+r7TQDd9PG1/2aQBZ+IpSZKkRph4SmI0XO4Ol+3kcrIj1DIxq0kAs5rnWx6is93t6SViQ3G9yKya0JazwpMaSmrWr6x7P73uR8377PmE5eZklf3Ssb/y6R3XLOs++7xztn71Fet60efJ8S2T5HBFlkSd46+TLLQqaWCZeEqSJKkRJp6SOnqRl7PCJ241XlvM2EombaeznlvJE8XEspXNcPvT68tZ7nHWdjWKrX25tPYxm9p25D0XDK1bd7Taaz7rsZ97ChsylFzd7lhAtNcbTKa7J4lmm+4tnsrP0RAT729JA8PEU5IkSY0w8ZREXF6xbvZyVpvgJT/WXF93GQ3N2kg47zqyjpWjWY9kL30f2cRvu+ZVp96hJ66X2krXySx7zE8zWch67f9JRqll0hlrZbMe+yGpGc3qPkiSBo2JpyRJkhph4imJoZBMLQ4RWVzHs0wKqf4j7YGe1Uzn7pUg5skYeHHZRHxq2j2Su8kGhtk0f8473s/UZMls8rw8QWdT2v6699Mrcab2uHR/XHp7Ohu/o8YzXrZMPKVBZ+IpSZKkRph4Shrv8FP+XEg71/Ran7JXB6D056xjJDzNRCys/5nn+YSvW14/yZrVydZ4TmePT5QE5L22d4av2sqr0/brdkdO90g7/jheO9s98u7cj85rlwadiackSZIaYeIpqaOndzoy7VUbWFdDmE/y9nQ7pjyCLjsXVa+Ps+XbaRLaK8GteX+9bp9pMNmqSQynH3lWa0TLWf5Zu+YIT/J9ZdVH53kyez159plXwUpaKEw8JUmS1AgTT0nlCDStMew1u3mytZt1t7drbp+q+vVB47qT+ay8zmS3Y+qPiB2G0oSy+/bP9LgOhYVb097rdQuQjn8euu/HPP1HFvd//HGs6+MlDe73jSRJkjSnTDwldcxKz5ORaa+cqjVrmzGzRCyvq1WcrSLMWd7hvWZ7lxWY+cz2Z6/Z+enxaye7q7M2N6/s7yx9ZHhgTFZb5f2c1S4NOhNPSZIkNcLEU9LTkrHJJWR1I9fJdsapG/FON9nLa543Jm3tvF/3e+zNnnd9P9mk9+jU9k+evm7NbPS85nmo6bQ0fnPW9fkyA09p4Jl4SpIkqREmnpKgx6zvmXYkqrt9aJKv01N7atvZLx10OpPNSb+BKelMprNpb2nXzQvT4vOsZh3SsAWZk9qlgWfiKUmSpEaYeEqadm/ybJo/1z3v0BxNO8+yWNMYJJ2M9lbxYbaXjmtnrWf8Odb4pjWcaZKZ1KTG/Zf0gG+VxzVr5P1K6n8mnpIkSWqEiackWlTXW0zXcYx6rf841drQLLnCGsBkv8YEMZ/ejsmyibOFzvU5Jz7u6fXt8va8+3FNbu9oVSVpcM9vkiRJ0lwy8ZT0tKQqr5wYxmrvV73s9bx1I97aZGy6I+i6h6fLVQ74gpJZ993TUdvZcXsyub0jCc26z37P88l9XiQtfCaekiRJaoSJpyRi8V2vWeizNeu9/vlmlol1PDopkRy0oLM2AM6ndhzH71hNNMvEs2Ydz/Jhmb3aJRVMPCVJktQIE09Jkx6RzlaNZ9O513zP2aY92b9mFnmv1QM6ZrWX0WbN/PaadTyj2KEqM+qQ/H5xF0iSJKkJJp6SSnU1eHWz0Dsfrz47oA2/TDbx7a7jKQ08E09JkiQ1wsRTEllIotLazaG6+4fLvMft9LhfU/Ka7RoYU9wBdasDjP9YXcizXH81m7gnu0mHJM8DkiRJaoSJp6RyBJrWcvZKKvstQcxrNnBgk87pLsA6xeOek03qaS3xlGTiKUmSpEaYeEqaq2BsyvJpVoO2e21wr6LTbEAP+Gw9XewQFf6Rro5gxyJJkYmnJEmSGmHiKUkLlDmjpH5j4ilJkqRGmHhKGjxGgXOyP63llNSLiackSZIaYeIpaa91Fhr4jkIL7XOUh1ntmUdUUncmnpIkSWqEiackhhoeg9YnrCZl85lJp6ReTDwlSZLUCBNPSaweCknV0NyMRet6v89WjWer5Ri6n42NjRXHO8/dGdKA82wtSZKkRph4SgPsjAO3/A3A2pg9xuSw3Z7R8062FXpnC/Vp9mqf4fZqjr9oFhVfNYsXL3ZnSAPOxFOSJEnNDETdBdLgWtJuvwhgSUwa46zktBZvirOVO5PM7j+3Oq53VvRCtG7duuJ4W4srDTzPApIkSWqEiac0wMay7H6AdpZtLa5Jks9ZVjurPfwjdx3IvWquOg8NDQ0BsHLlSneyNOBMPCVJktQIE09poEee+Qags6ZzjrWTka8558IWE9RY6ylpkL93JEmSpAaYeEoDbCzPHwDI4aTimrnNHuOzD7nrG1HXKaju+tmu7UxfZ9WqVR4UacCZeEqSJKkRJp7SANtIdj7AsvKa2an1nGznol6P08zs2rWr+36eo9nrktSLiackSZIaYeIpDbAjh4qx5+pZTr7M0frDnj17ABgbGwPG19PsOF5zlHzG512/fv2Ery9pcJh4SpIkqREmntIgjzzTpMsiywUlJo69ksa5qvmMzxt7tG/atMmDIg369467QJIkSU0w8ZQG+QQQE67ZTrqSn/ut5jNdX3Khzu6um9Ue32/Ts9sXLfIrRxp0Jp6SJElqZgDqLpAG16bFiwFYViZes1PkmeZn+STvP9PcbbKdegZl/crt27dPvN/neD+kz784fN4kDS4TT0mSJDXCxFMaYIcsL3oWrSpnPc/NtPbJJp6z/roh6RzUTj07duyYcL+U+7+h/bJy5UoAzjzzzMsAbrjhhl/zt1AaLCaekiRJaoSJpzTAsiyssxgDr/bcjnBjzjZWM/Kdbt5aV9upvSNNmuM6nqtXrwZg48aNF4a7mnhKA8bEU5IkSY0w8ZQG2KqhYpbxUBIYznQdzl6Prxvx2uN9YYu1pM5ulwaXiackSZIaYeIpDbBVrWI2+1ASNc40eey1jmfd8w9PdwQdaggHbdZ6z+PQZ/tjyZIlAKxfv96DIw0oE09JkiQ1wsRTGkC/tHXrRQDLwnT2VkPVlbXJZ/jHjvb0ptWPjRXz5EdGRjy4T9/fe3m2f5q4xnU8DzzwQA+ONKBMPCVJktQIE09pAO3fyv4GYP3icApozXHP7uTnPLkse7VPM6Dr1aM9Jm+DVgO6txPgdP8PhQ5Zy5cv95dQGlAmnpIkSWqEiac0gJbkRS3l4iQBTBPI6ZrsLPaOnHKaLzwyMrITYNeuXSsqT1eTcO6tXuVN2759+4S3N/2+rfGUZOIpSZKkRph4SgNoQ6j9W1wWV4Z/5HFW+cySsF7reDLLk63b7fajAMPDwwdNavtc77Pr/khrMmcqTZaXLl0KwObNm93p0oAy8ZQkSVIjTDylAXRESDYXzbgr+9SUrxamr8/Wq2VZtgLGOxip8PDDD3e9Pt1Ps510dhz38PyLFhVfOatXrwbg5JNPPgnglltuuc2jJQ0Gz9KSJElqhImnNIC2LFsGQDtmjnPc4SbN0Tr6E+UzS9ryPN8J0E46H811ktfv4jqeTzzxBADr1q3bK9uR7v+4jueqVasuCVdd4G+lNBhMPCVJktQIE09pgLxw/boLAQ5ZugSAob20jmdGVh35hl7rD+3ZM6PXnWyyOSjreMb3uW3bNmA88YzJcNrRabYT4rrnjTWemzdvPt/fSmmwmHhKkiSpESae0gDZd8XKywA2LloMwFCWZJyzFXn2kD79rrFRAJ4YHp3d10kT3QGr+Yydi+Js8igmnrF3+lztl7rEc8WKosHUli1b/KWUBoyJpyRJkhph4ikNkP3WrwVg9VC4Ikk4ZyvwmurTjIVHjHXOd5/ZdiSJ26C5//77gc7Z/nEdz72VAMfXN/GUBo+JpyRJkhph4ikNkE2Li9rOtaHGcyxcP9d5YF7zOlnHpWPh2bRz586bAZ588snToDNhTGe1NyUmnkceeSQAp5566vkAX/3qV6/yqEkLm2d5SZIkNcLEUxog++/ZXfxj7UoAslDj19Bk9tJ4z/biFbePFTWIj89wHU9VxR72cXZ7uf9rajtnu+azrrY2Pv9BBx0EwD777HNlwx9BSXuJiackSZIaYeIpDYCXrVtzP8ChZTFl2qO96cyzalvoXPSL4WEP1iz67Gc/+1yA//yf//OEZbxzNbu91/Nu2rQJgP3228+DJQ0IE09JkiQ1wsRTGgCHrVx5EMDhoWNMOr88y+Ps5jnekPCyWTKdfUe7SDx3jI15sObAE088UT3eDc9ir3u99evXA+O1npIWPhNPSZIkNcLEUxoAW1YWSeemRaFlUay9C7fXra85W7Ietwy3iy3Y3W57sOZAXDez3OtJAjlXCWj6ulHsER8dfPDBAJx00kkrAG677badHjVpgZ6P3AWSJElqgomnNAAOXrUKgPUxaUoiztkOvGo7FGXdb/h5WL/z0T17bvZozb7HH38cgJGREQAWhw5Wcdb5bM1q7/U8dbcfccQR8XIHwG233eZ6ntICZeIpSZKkRph4SgvYqYccfD7A5pB0ZmVt3dx2Z0/jqrzjX2EWfSjpfDT8/Lkntr3Iozb7YuIZOxjts88+c3PceySmdbfHWe2HHnqoB0ta4Ew8JUmS1AgTT2kBO273risBNuZhfcw4y7g9Cjx9VnszJXXp62QhAX1yyVIP1hzatm0bADt3FpPF5yrxnK6NGzcCrucpDQITT0mSJDXCxFNawF6wbjUA+y9ZEq7Jn/bfcU11au94/vDCD3uo5tTDDxd7+LHHHgNgy5YtfbV9y5YtA+Dwww/3YEkLnImnJEmSGmHiKS1gz1pZJJ7l+p2xM1Cedq5peMPCeo4jYXseHx31YM2hn/zkJw8APPjggwcBHH/88eG499dymTGJ/c3f/M0c4O/+7u9cz1NaYEw8JUmS1AgTT2kBeuVRR+QABy0tajtb2cQJZ97QdsWXjR3ZHx4pks7Hd+zwoM2h66677mCA17zmNXk/bE/sYDT+eSw+Gfvttx8AJ598MgB/93d/58GTFhgTT0mSJDXCxFNagE7ZsxuA1a2QMQ6Fy1BT2bmeZlVdr/XpypJp83l4hZ+PDAPw0LbtF3vU5t4jjzxSPc41yeNcq3ud9evXA3DiiSd6sKQFysRTkiRJjTDxlBaQ565ZswHglHVrAVgSE8/23i3tKwPPsDljYVb9A3tGAPjyY4+/36M39+67777Kz/0yqz0mr63QWWvz5s0A/Oqv/moOcPnllzu7XVogTDwlSZLUCBNPaQE5bvP+jwA8d+XK7iPLkDT2CrpmO17KYpFnVmzRWKg1vWv7Ux60Bj300EMA/PSnPwXggAMOCMenOOIxedzbSeiaNWsAOJEIEqYAACAASURBVOeccwC4/PLLPXjSAmHiKUmSpEaYeEoLyPNWrQBg9ZLFAOR5nMXebJLVOSu+Wmu6J9zhh7Gjkhrx+OOPXwJwzz33XAqw//77Vz4Xk/18zPVs+CVLivVnTznlFADOPffcRwCuvfbajR5FaX4z8ZQkSVIjTDylBeD/2X9TDnBy7HkeAqhYWpkn62juNWFDngg1nj9avvJtHr3m3HTTTe8CuPfeey+F8UQxziZPk8w6c5Wcp7PbDznkEACOO+64DQDXXnutB1Ga50w8JUmS1AgTT2kBeM6GDQAct7Ko8STUdsae6P2yCOJICNR+umcPADffccd7PHrNu+OOOwAYGxsrvggW7d2vgrqa0eXLlwNwxhlnAHD77bfvALjmmmtWehSl+cnEU5IkSY0w8ZTmsRdu3HAhwAlLi1nsS+Ns9lBDWSadDa/LmKWlgqFX/J6QsD20Z9iDtxfdfvvtALTb7a63N72eZ7qOaOr4448H4KSTTloBcM0113gQpXnKxFOSJEmNMPGU5rFXrlh2GcCRi8N6mGkHmnjHpjvRdESexRj3idEi8bx7xw4P3l509dVXZwDbtm3LYbyWsi7hTK+f63U8U7F3+wknnODBk+Y5E09JkiQ1wsRTmsfO2rAvABsWF51eCDWUZc1cuN9s51GdnYnocU3x88PDxTqjt+7c5cHrAz/60Y8A2GeffQBYvHhx9fMTks1+6eF+zDHHAPDbv/3bOcD73ve+zKMozS8mnpIkSWqEiac0D73p0ENygEOXLi1+kVt9HvzE2eyLikTtEw8/alLVB77zne8AcPjhhwPjvdv3tjRpjZ2MDj74YADOP/98AN73vvd5EKV5xsRTkiRJjTDxlOaRk/bbtALgvBXLAFizqDp2zImz2eeol3a4zGquz2tGtrtD4vngbms7+8k3v/lNAF71qldVrk/X90xrPueq1rPX88bZ93FdzwsuuCAHuPLKK03QpXnCxFOSJEmNMPGU5pHnrF61A+C01Su7/wKHyDGfo/wnq75M+rIQ13eMyVW4fGhkBIAfb3/Kg9hH/uEf/iEDeNOb3pQDbNmyJRzGarI520nnTNcB3XffYjWHWOt55ZVXejClecLEU5IkSY0w8ZTmgeftu+9BAL+0rKjt3G9ZMZudtLd1sn5neXVD29mRXIWf7w+92X/0lIlnP3rggQfCx6n45AwNFZ2w6nq5z/rnpIc0cY2z3F/xilcA8MY3vjEH+MhHPmKtp9TnTDwlSZLUCBNPaR548fq19wOcumxJ5fq841/VwCfreu3sq6v9zNrFNXeGxOoTjzxmItWH7rvvPgAefvhhAPbbb7++2r601jRav349AKeddhoAH/nIRzyYUp8z8ZQkSVIjTDylPvbCjRsuBHjxihUAHBHWMeyo7UwCz7qkc7Z7t7frRrJh+/aEGsE7xnIPZh+76667ALjnnnuA8cRzb/dmn6wzzzwTgN/7vd/LAd773vearEt9ysRTkiRJjTDxlPrYL69cfhnACcuLWezZojjbeLT4Od4x617bGc120tkhWb4zD/+4b/duAO7atv1Rj2b/+uhHP5oBnHHGGTnAqaeeGo5n99rKvS3dniOPPJKw/QC8973v9aBKfcrEU5IkSY0w8ZT60Au3Hn0hwEtXF7WdG5csLm5oFz3Ps6Q1UVqK19Q6nnHkmmfVyHMkzGb/9o6dAFz7kwc3elT733e+8x0AdoekeunSpX29vSOhI9aSJcVqDyeeeCIAl1xySQ5w6aWXWusp9RkTT0mSJDXCxFPqQ68fG70M4IilRZKzuNW9I1HfCUnsnpB43uRk9nnlnnvuuRPgwQcf3Apw6KGHAp2djPbWbPf0deN2RZs3bwbGe7hfeumlHlSpz5h4SpIkqREmnlIfeeORR+QAL1+7CoAVQ9WxYdqzuk5TeVRejmDjdPbimodHiln3/7edX+xRnT+uv/76ZwLceuutOcBBBx0EjCeLeyvp7PW5j0nsokXFV1qc5f6ud70rB3j7299urafUJ0w8JUmS1AgTT6kPvODALacBvHTtagAOX7EMGG9Q1B5fsLM/NjhsWOxc1ArJ7FPDwwDc8dRTAHz5rrvf79Gdf770pS8BcPbZZwOwYcOG4tM3zcRzskl9nV6PS9f1XLWq+IvBK1/5SgC++93v5gAf+9jHTD6lvczEU5IkSY0w8ZT6wCuXLrkJ4Ow4STdc5jFSTBKjxjsTpbJ05Fpc8fBosc7ol7c/5UGdx/76r/86A7joootygPXr1xcfy1DrOdVORnNVG5p2VkqT1WOPPRaAl7zkJQDcd999JwHccsstt3mUpb3DxFOSJEmNMPGU9qILNu6bA5y9uqhJO2B50amIuF5i3255kryGAOzBENV+efHSCzy689/dd98NjK/nuW7dusrtvZLPpmbBt1qtrq8Xfz7nnHMA+Nd//ddbAW655RZrPaW9xMRTkiRJjTDxlPai39h/EwDPCrPYywgxdP6JP+Z9sm4n1Zbs5QvvGN4DwA9Dj++v3nPPVR7d+e+zn/0sAMcccwwwnnjWzVKfau3nTE02UT3wwAMBOPPMMwG44447coDLL7/c5FNqmImnJEmSGmHiKe0F//74Z+cAv7S6qOlcsSiMAdtxGnu1N3vdLHZqbp87yRZlxXb/aGeRdH7rF094cBeQD3zgAxnAeeedlwMcd9xxxWHvlcDPUW3nZNcDTZPXdJb7a1/7WgAuv/xyD7LUMBNPSZIkNcLEU2rQK/bfLwf47ZBwro7rdsaEJq5H2HBNZ691QMvb0+0KN3xnd1Hj+a0nnnymR3nhufPOOwE47bTTANhnn33Cx7W6fuZcm2nnpFijGt/Hf/yP/zEH+Iu/+AtrPaWGmHhKkiSpESaeUoPOW1Os13nU6pXFFWVronkmJEhPjRS92W9dtBSAb2zbfqdHeeH52te+BsCJJ54IjK+L2Y7rzcaOWll/BIfpdqTbGRPbt7zlLQDce++9OcBVV11l8inNMRNPSZIkNcLEU2rAnz7z6Bzgl0PiGYspy9K4Hr3Y51q5Xmjd7XFDW1llu2/bth2A2x978v0e5YXrU5/6VAZwwgkn5ABnnXVW9fOa9VdQWFdzGpPP2Olo69atALz5zW8G4KmnnroJ4HOf+9yLPOrS3DDxlCRJUiNMPKU5dNGxz8wBzlu7GoADliwGYKw9BownjVnDGedU1wGNs+yz8MCdobPStcOjANz4s59d7NFe+G677TYAfvjDHwJw9NFHF5+L8PlIayn7RdyedBZ+TD5jgvvwww+fBvC5z33Ogy3NERNPSZIkNcLEU5oDL9569F8C/O7yJQAc3YpFnWEW+95rPTSplys7xMT7l4lRsf0/CUnnn971I2cBD5B/+Zd/yQDOPffcHOCwww4DYOnSpX2xfVPtbBQvV60qaq9f8pKXAPCOd7wjD5d+vqVZZuIpSZKkRph4SrPo5GdsPgngbYta/wHg6OXLihFeqCUbC/frtxglTy7T67OQ2G7bXbyDbz35pAd7gF199dU7Ac4777wVAAceeGDlc95UJ6NJf75rerenDj74YAB+/dd/HYDvf//7OcAVV1xh8inNEhNPSZIkNcLEU5pFF65aeSvAi1cXs9iXZGUzduBp62Fm/R2gdPZuL/51X0i0PpF7rAfZNddcsxLGE8F9990XgBUrVkz8uepRgznZGs1Z+5zXJKExwf3d3/1dAHbu3Lnj6e9b0vSZeEqSJKkRJp7SLHjX4YeE9TqLQGTN0mK9zjgLPO+zpLN2Un2c7Ru2M45M2yPFLPbvbN8JwCedzS7ghhtuAODII48E4Igjjpjw/ul6mnW3T1ev5+/5e5Gs73n66acDcN99960A2L59+38AuPnmm9/j0Zemx8RTkiRJjTDxlGbg323ev0g6160D4OAVReI5FpLOtEYyzXP2Vqlk1uOGckQaEqTv7toNwE2PPuZBV+nd7353BnD66afnMJ54psllXQLZVE1n+jq9akxjB6ahoaJG+4ILLih+L1qtvwQTT2kmTDwlSZLUCBNPaRp+54D9coDffcYBABwe1uuMnYkmO6Lrt0LJsmd8ElB9IczO/+BPf2Ztpzp85StfAeCYY44BxjsaRWniGWsoG/tcTzJRrUtqV4dVKs455xwA3v/+9+cAF110kb8P0hSZeEqSJKkRJp7SFLzu0ENzgDevKdYrPDQknUNpUJj0Op/sbPbO9TMbksy6z8MG/OuOXQB85WcPe/BV60/+5E8ygEPD78dFF10UPlbdazhjDeX4r0c2Sx/jqdWM9qpFTWs9999/fwBe9rKXAfAHf/AHOcAf/dEfmXxKk2TiKUmSpEaYeEqTcN5hRZLzhn3XA/DcZUuKG0LOEfObusRlsnFIU7FJxzqeyfbubhf3+OTwcHH5r/9qoqOevvjFLwJw7rnnArBly5bK5ytNOmfbbM+Oj7/PY2NjwHjyGTsb/dqv/RoAw8PDOcCf/dmf+Xsi9WDiKUmSpEaYeEoTeNHRR70d4OLVxfqc5y4tfmWyVqiFDPfLk44/UdPxx2RrRLN0XcWsWqT64PAIAJcNjz3TT4Em66Mf/WgGcPbZZ+cAF154IQBLlhR/IUhrJqfbYagp6bqf6V80jjrqKAB+67d+C4DFixfnAJdeeqnJp1TDxFOSJEmNMPGUujj16KPOB3j3mlWXAjxnWdF7Pa4/OFbzuHkbcwwV7+vhXXsAuO6RRwH4xr333+mnQVP14Q9/+P0AL3/5yy+C8dng6fqdMQGN1891B6PJ6jU7Pm53vD12bHrLW94CwJo1a3KA//pf/6vJp5Qw8ZQkSVIjTDylp3nF4cXs9f93bdGp5PjFxa/IoqwYo5U1lNNcp3Ouxa2orZwLN8Ra1HLkOVJkuN8eGQXg42QX+2nQdN14440XA1xxxRUXAbzuda8DYNOmTUD/Jp1Rr85KdTWfhxxyCACvec1rANi1a1cO8I53vMPkU4q/X+4CSZIkNcHEUwJ+OSSdv75xXwDOXFzMuiUknWMhr8hCZNiaYkKztzoSdSSfWbIl4f39aOdTANz4xDYAvnzvfe/3U6GZ+vCHP/xcgGOOOeZWgDPPPLP6cZwnNZ1194/SdT5jr/o3velNAOzYsSMH+PM//3OTTw08E09JkiQ1wsRTA+3NW56RA7x19SoAXrCkmL0eA8E4ez0mnVmeVW6frL0Vc5Svm64zmlevv/mpnQDc+PAjrtupWXPLLbfcBnDTTTcBcMwxxwDjs9z7ZR3PmSav8fEx+Yw/H3rooQC89a1vBWDlypXWfGrgmXhKkiSpESaeGki/s3n/HODfH1AkL4ct7957fb5K45R2MtIcC7WeP9i2A4DrRot7fGP7U67bqVn3zne+MwPYb7/9coB/+2//bfE5zeZ38Fe3/WUns3AZaz4vvrhYLOLII4/MAd74xjeafGrgmHhKkiSpESaeGij/7aAtOcDrwuz1mHQOdZQ+5pWfy2RjL+UTU50V31E6V25/cbl9tLjDx8eKpPPj99xj8qI59/nPfx6A0047DYDjjjtudn4/pjgrvSmx5nPRouKrNta2nnPOOQB88IMfzAE+9KEPvQ3g5ptvfo+fEi10Jp6SJElqhImnBsIfH3FYDvDqdWsA2LpyRbilmmymyUm/5Cc9OxJ13L/6vlqtYn3BHcMjAHxje1Hb+Y7v3W7SqcZceeWVGcAJJ5yQw3gCuGHDhsr90tnu6c9pstlvSWe6Pek6nxs3bgTgta99bbz+LwFWr159KcA111yz0k+LFioTT0mSJDXCxFML0slHHnESwFta+a0Ar1q/HoBNy5cBkLfHqg+oqRGbatLYlLrtydL1OpMH3LVrGICPPvKoHxLtNf/9v//3DODkk0/OAU499VQAVq1a1fX+sbd7FJPDxn/vas4THX8pSW6P25+u8xnf74UXXgjA5s2bVwAsWbIkB/jkJz/pXyS04Jh4SpIkqREmnlpQXvvMo3OAi8Ms0pPXFInCqkVFQhKTznRdy35NNkm2K5vi9fH9Pbqr6Ez0xd27Afj7nz1kkqK97vLLLwfGazxPPPHE4vPbo6NRv85ir9Nrvc9Wq/hNjbP9DzjgAACOPro4n/3pn/6pv69aMEw8JUmS1AgTTy0I/2lr0Qnk1aHn+glDxZhq5eIwtgrJQjvtuR7kPWax1yWKdbfPtjSR7Ug6xxccTban+NcXQsT7yR07L/HTon7xoQ99KAM49thjc4DNmzcD47PdY21kvySbcTt6zbJPTTbBXbp0KQBbt24F4KKLLgJgy5Zi/eFPfOITlwDcdNNN7/LTo/nKxFOSJEmNMPHUvPS89esOAjjvgP3vB3jNquUAPHNp+EiHdStjkjCWJp1Jp6Kp5in9UnA1vv3h/YUti9ff/tR2AD79ZFHjedP9D5iUqO98+tOfvgTggAMOuBTg9a9/ffFr3KpmI5Ot7ZxqIjlVU32+uqQ03d54GWftxx7vcX+sX7/+UoBVq1ZdAq73qfnJxFOSJEmNMPHUvHLWMzZfCXDx6pXnA5y3fi0AyxYPxegAgNEwbz3mErOVdPaNpJd8K+nF/ujwKAB//9BjAPzTgz91Vqz6VqxZjInes571LACOPfbY4vMdks90HczxX4fJJZxNzYbvtT3xfcT31atTU+x09IY3vAGAY445ZgXAmjVrcoDLL7/c32/NGyaekiRJaoSJp+aFtx+zNQd4w/Ji1ufRK4uazkVZNSGI63Omw/+s5vr5otd6nYTk5Mk9RWeizz72CwDebdKpeeRTn/pUBrBp06Yc4I//+I8B2HfffYH6jkVzXdM52+L76NXxKB9/g+HXvPg9P/744wH4m7/5GwAuuOCCHOADH/jgAwDXX3/dwX6a1K9MPCVJktQIE0/1pfM27Fusy3ngFgBOC0nnISHiXBzW6czb1fU5a9ezrAlAJtsJaLblk9yO9PY86cVe5j+jRc3YN/eMAPC+4dEL/BRpvvrbv/3bDOD444/PAV73utcB47WOae/2XjWfdfebK716uU/iCeIDu54PYvK5Zs0aAF728pcDsH7fDQcBHH54sa7x+973v/2Lh/qOiackSZIaYeKpvnLxYYfmAK9asQyAF4fL5aED0Wi4356xdmXkND6ru3IxHiCEy7zHz03FA1PuhBQTnI4kt/jXd4aLpPOKbTsA+OqP77vKT5Pmu8suu+y5APvvv/+tAK985SuB8Q4/afI5/uvSXzWf6TqedTWd6fmgfFxyezu55+qVxXKeLz7zDAD226/o/LRx/6JW9sYbbng/wE1fvPFiP1Xa20w8JUmS1AgTT+1Vpx537PkAFy5qXQnwiiWLAThoRTFrfU8Y2++MgV+c3VmTBCyYgqaON1ZNOuPNT4aazn/asRuAv7n7bmu6tGDccssttwF87GMfA2D9+vUAnHnmmcV5oGYdzH41e8lrtfZzONS6Z63i+Y899pkAHHbEfwHgBaeeehHA0Vu3XgTwt3/9V54ntNeYeEqSJKkRJp7aK955yIE5wEuWLylG5suKmq1VYSi0M29XRvTVcX7nyGnedyKarKx4x9tHw+z1n/0cgD+/7ycmGFqwPvGJT2QAy5YtywEOPrhYpvLwww8vfi169EJfqPLyMqzuEYo/x+LZIKz+cdqLfgmAo7ceBcAZ55ydA/zTh/8RgH+56lOeP9QYE09JkiQ1wsRTjXjrEUflAC9eswKAE8Is9f2WFInn4la1ZrOdZJux13qW1DpOdR3OfhnW19amlm8guUer+FXdNlx0JvrcL54E4O0mnRogl112WQawbt26HOD3f//3Adi8eXPl/DDT5HPvz4pPXr/Xmat838lpJNTALgnnj83PKNZFfvFZxSz4TQcUs9+f94JTcoAbvvC52wC+9NkvPNdPm+aKiackSZIaYeKpOXHWgQddCXDWmpXnA5wZe6wvi+tyFh+93e2i486eOEJP17mLI6Rkfc662s9sUvnB3k8+O5LajqQzJrzFT8MjRU3n17bvBOBDIfGUBtH//t9FR57jjjuu6HD26lcDsGnTpsr5o+z0NcUEdO/3ek97tufTeVh5AtmTnFfXry1WB3jhKacCcMihhwJw6BFHngTwjIOL9ZS/e9u3VwLc/q3bdvqp02wx8ZQkSVIjTDw1q/7Tc56TA7xirEjonrVmFQBLwuzK0TDy3j42GkbyYQSUVas28x4D+vFa0OoIqq4zUV0g0C/ycl2+kHSW65YWl7c+VXQk+ugTRdJ59c9+bm2nBt7FF1+cAaxduzYHOO+88wBYsWJF9fcrST57JaJDQ0N9fZ6IF2kHs44zXHJCbIf3OZpXn2/z/gcAcP4FFwDwghe+EIAbP3/jDoBPXXEFANd88p8972jGTDwlSZLUCBNPzcjbDjmkSDjXrwFg68qihrOVF7PVR8L9RmNnjSwZoE95xN/9sk42yfvtbXF/xJFgTHLv3F4knR/YUyTE//CAs9il1Hve854XAezZs+cmgDe96U3h96qmF3pNArr3azunef7oeH/df45/Ucmz6l9YdufV8876fTcA8OoLzgfgBc8/GYBX/PIv5wCf+fSnALjuk1d6PtKUmXhKkiSpESaempTnHXDQQQCnLF9yP8DzNuwDwNHtIonbHGapLwtDmbG8+McYcSSdV0bmQ2FdznTkM9nAIZ/kZb/qWCcwrmMaWo/cs7OY5//uXcW6nR+8806TBanG17/+9ZsB1q5deyfAli1btsJ4T/eYZLZja5/yfDM/k864ykeb7ie82tU/OtYnjefrvPJ8Q4uGKpfPOLToFPXSdWsBOOqYYwA4+yXn5gBfvumLAHzy8o94nlLvz6+7QJIkSU0w8VRXJ63fdwXAsQcftgPgZIpk86SsGBMfFjoPtYaKms7hMGLemVeTzVaWjMFrRuZp4NBrPc66jkV5zf0mOwyfac/3nuuJJjVlT7sBgB+PFBnxR3cXiecHTDqlSbv++uufCbDPPvvkAMuXLwfghBNO4Ok/j40Vv2et1uxkL7W/19M9sfRYjqOd3JDXPC7vud3x8dXZ8mNjxSuMlbX5RfK5z8biL12bwuXRRxfJ59FbtwJw7LHFuqrf+sY3ALj2M1d5/lIHE09JkiQ1wsRTFb/xrONzgHNGikYVJxWT01m9pEgK2mFEvyPWSo0VI+JW0nGnDDjjenNJ9Nirkchk19+cbG3nZAOHmQ7Pa2fR1yYixfVPhKTz2l1F0vmH3/+BSYE0TR/96Ecrv4q/8zu/A8App5xS+T2caU/38vc+eb6s7k84+RRPJDUnsLxjveOJXyBPtjMaK9cDrT6+HZLQ2Ot9JCSfe/aE831enP+XLi/WSz39jF8q9u8Liv177913A3DyKS/MAa6/5tqrAL725S9c4KdTJp6SJElqhInngHr+sSdtBXjNyFM/ADhx1UoANi1dGj4Yy8LQpBj5PhVH8kkNZ9Z9QN55fZJ8xtvbkxwB5ZP8ebLJZ2uSQcNs6UxcQ03scJF0/q/dxez1d3zn/5p0SrMkJp8jIyM5wM6dxV9yzjnnnMr90tnu5W9pxyzwvfPrOX5eyyrnzXZ6e9b9fFMmpHn1flnyF6jyeeK6nkkHtdb4uiQA7Am1snt2xv1YXO574OEA/Jvf/G0AXvHaN54PcPvtt+cAN3z+swD84//3Z57vBpCJpyRJkhph4jkgLnzGwTnAsWvXAXDIyiLZPDyst7l2UXE5FNeHy1pdR8It6mZlJ1Em1ZHybAcFPWeP11yfTfLx096ejn+E/ZZVX/nxUNP53pB0vvPb33XkL82RK664ovILGM9fZ599dvH72Yrnu+4JZ12no/L3v9es9imfoJJm7Fk1sexMOvOuT5vOdo/3a+d1L1zT6z3WfKZXxyS1ndSGhnWdVyxfDMCylcUcgWWrig53z9iyBYBTTj4pB/jBHd8H4Dvf+hYAN11/tefDBczEU5IkSY0w8VygXr/1OTnACRSzpJ+zrBh5HrKkmKa+PKzHOTJUfARiT/WRMKSOI5KytqdHk/XOmqKan9Mao3xyAcBkA4S8x3b1ur7X82e9gorknmlN54MjxX6/asduAN75XWs6pabE5LPVauUAK1YUs7Kf+9znArAknB9na7Z7razX+SWpyQz3yNOklWrSmY9PX+96XuzZ2S2f+EzcuV+S7WxXt2v3aPWdrQz7+6itRwNw5BFHAXDSScWs+BNO+C4Azzy2+P76wfe/B8BNn/2058kFxMRTkiRJjTDxnOdOOf55LwV49q7t1wE8P3RHf/aKYtbh2iVrKyPl0TA03ZYOtZPazZ7DyySpzOpmU6bJZlIKWtdpqJXOsuxeQjpntZ49Ox/l3a/IamqxHgs1nZ/cVSSdv2fSKe01H//4xzOAxYsXT7jOZ11v947zSa/azmRB447cMO++DnJ5AulIMGvOnMk09Y6EM5n2Hn9sd8xqn/jMmvfokBQfNd75qPh5NCSg4TRIK86C37gZgLPOKS5PfeFZANx3710AvOSl5+UA3/zGVwD41Mf+3vPnPGbiKUmSpEaYeM4Tzzv0qIMATsxH7gc4flkxK/2QoSJJW7e2SDaXxtrCMB7cUU6OzCcceaQJ4Fi4HKpb5y1JMqdqsp2J6h7XK+Fs19yv7nVn2vEo3aGhhJYfbnsKgL8NO/R/fs+kU+oXH/nIRzKAsbGih8+OHTuA+tnu8XK2erx3nG/qzrflZY/Z69Q9LrmMz99Kos/kzFjer+YEmbeTP3XFzkfJsqjtJFIdigluuNw93K68UOwNv+XQogb0gC0HA/CiM4rj8ro3vCnMhi9qQL992zcBuPqfP+L5dR4w8ZQkSVIjTDz71K8esCUHOHTfDQActqgYAT4jDBnXhI5Cy1vF9Vmrml2OkcxOh2REWe2AkaWzsPPJjaTrEsO0R3veK3qMz9ejFpSa12dyT1+bgNbVdHbsj/L9JB2c4v4fLfboHTt3AfC/hkcBeP/t9l6X+tXll1+eAezYUfyN6JFHHgHggguK1uJLQ0e3uh7vdbPgs5rVR2fmqgAAIABJREFUQLL0/mkLIZLzTc2Zq36WejbxiTLe3E7XKU3Oi3n6/rqva5qe99MXit8vMfiMCehYO+t6om2Xq6kUqwwsXlZc7rupWA905Zp9Adhy0JEAHHf8CwE44+xX5wA/vruoDb3vnjsBuPpTl3n+7SMmnpIkSWqEiWef+Q/PKtYvO61ddLTZsKgYqK1eUiSbQ6H2ZSSMCEdIRp41s79b6Qi8ZqQ841njNbVJ6fPXJaD5FBt/5D22c7LvryYvGO8ln1UTgXa4x6KhYs/uHimSzW+HpPOqncW0zfffeZcjbWme+MxnPpMBbNu27VKA5cuXvx3g9NNPB2D9+vWV82g66z3+3FED2pFk9jot1LR863Giy2saylFTo58mnO1eNZ35xJc1b7ejg1KZfFL9y1FMdsfCE4zlRXF8OL2WyeniJauL78f9wuWmohPSkUc9C4DnHP9zAB556IHw+N05wGev/oTn4z5g4ilJkqRGmHj2mROGi8Tsmev2AWBbGEHviJP+QvIWZwUSamSyOJs6qeHMa0agdQPuvO72uhFwOrs9KY7sqPWsGbDXDeg7e6B3v3+v2tNes9c73m66Dl5Hb+bicjQcny8/UayM+o87dgJw2Y/vd2QtzVNf+tKXLgEYHR39AcDu3bsvA3jZy14GwLp166rn2WS2e9ajw1vH+SetIU9rNElvr7m+5k88HQklaW1m9QyZ1/Zyz5P70/W82JGEdvwcv6e615Z2rPOcxxrRsB71WEhE94T7t+P3TNGhb99NxXqgRx1dzIa/8Yuf9UPdR0w8JUmS1AgTzz4zHGarbw9Nb/dUSzdppbPPW9XbJ3tZN57Naobmk00WOx6ejsSnWMNJzev1elyvde56yWpGZjHRGBsrjs81jzwGwHse3/Z+gBt//vOL/RRLC8NXvvKVDz/98g/+4A9ygLe97W0A7LNP8Zeputnu4yegmppNJr57Z6eiSZ7XapLS8ud28vx599el5nZ61HR2/sGs+qexskNe2uItmUWf5RP3nO9YNSU8biQkott3FcWhIyNjfpj7iImnJEmSGmHi2WfKdTU7Og7FdTfTDhBURobpepwdl92XTevdvHyqI+q8+9PWPk+6bmf6+KxmxDvL+7+s7Qw7aojqjvvZrqIG95OPPwHAPz72+IsAvv74Ezf76ZUWtj/6oz/KAH7xi1/kAL/1W78FwLOf/exwmqhZ5zLLpna+yqq1lJ091NNvjKHqebbHrPXJnuDz2mny1eevOyPntSf+alSZJSf2Vp4n25v2pIs1+PF8Xb3/WKz5DP+Lk4+fydUHTDwlSZLUCBPPPtMxqzyvq+2p9tLN6p4oGah2NLCoSTo7Xr4mcewYP/dIQnuMf3vPgu+Y/dn9fr06ErU6EtnqagHxFyMPQ+fvh6H0Z54seq9fcve9zlqXBtT/+T//JwNohxY8v/IrvwLA85//fABWr14dzmNJAlpX49mRUGZdz3Mds8PDciY9e7XnPb4gOr4ZYhHoUNcNyPNswjfQub5nVnlceZ5vJ/dLFxoluUMoTs3L69MENF6dTfh9pb3LxFOSJEmNMPHsM+kIMXbICZPdKRtipAPBpCVw3SzyakXQ1Gsl6xLQrG4Ez4QD/NpZirWS521PcrvLxDNZ5zRdLaAVrt8zVsyCvHt30UHqf+0qFoz7gJ2IJAV/9Vd/lQH8+Mc/vh/gN37jNw4COPfccwFYsWJFOG9XM552sk4wpOe1LDnf1i3EnCXnxboWcEmv9V5n/LzV9dF5XdV+j9rRjl7weZZ8D+SV58+p+1PbxNPqy7kRrbgfQ0Kat/2w9hETT0mSJDXCxLPPdJZcZtURcnviEUOvSYt1s8yzXs+TDEDbyc1xNmErWVetrlS1V2/1jlrPuNxbTa1qO7nMkw94+npDyc+LW8U1T+0pks3rn9wOwLv3tItZ6z+6y1nrkrq67rrrDg6XALz97W/PAd761rcCcOCBB1bON3HWdTyRt9vVE2TWqlu/spoAdjYYSh5X17kouYyvP55MZpN6XJ70Xu/Vuz2v68TUsW4p1e0pHxE6QyUPjDWd8Z5Zllxa5dlXTDwlSZLUCBPPvpN1HRmmeq2TmXX8Ix1JVgbItSVBPQsae5Xi1LRMqp29npYo5T0eXx3od8xaz8sRVvGvxeGOS5OR13eeeBKAT4dZ639474+t5ZQ0Le9617sygJ/97Gc5wBv+zb8B4LTTXgTAsqVLABgN92+XAV5Yj7Id/7RVrclMk8yOv/QkCeH47PPJtoxLEtV2et7Nu56H667IO2bD1909re3s/nqd34Pd/5Q2liXrqOYmnv3ExFOSJEmNMPHsM71ma0+1sVCWT3x7Ku0UlE11O+oSy5rH5zUD7toN7LED0lnrcWS1JNYGhSd4ZKTIGv5veMGrfrENgPfdd79Jp6RZ8aEPfSgD2LZ9ew7w6COPAXDai4rk84BnHFCcn1pxNY3YgWcsnK8WVb4Pyg495ekwWSc0Xp/0PO9Vo8kkaznL0/Akn7fz8d1nt+dJkWfa+anX5XjNa/X6tklnXzLxlCRJUiNMPPtcr97ktbenswGTIsgsGYlmdbPRa7YrTUZ7dj5KH5jVvD41r593377xp+3eE3lRnHUZbn9oeASAr+7cCcDfDufvAvjSffdf4qdN0lz45yuuyMIlAJde+sc5wOtf/6sA7Ld5fwBai4uv5Gwo9F7P4nrO4TzWsUxnXdKZdhKaeLb6+Kz25PHp90yvWes1cxTy2o5G6fMmSSbdr++4PU1S/cj1NRNPSZIkNcLEs+9Ms8QwGellk6yxrPs5m97L13YwmuoQtO75ev0cP9BLYqenMHK/7cli1vqVoRPRX/zwbms5Je0Vl1zy3zKAr3z1qznAm379zQCcec7ZAGxYuxaA3eH+Y/nEf/vKaxZwzjsW9Eyvr3vcJGcT1D5/zbImyf3rSjDzKdZm5skbKre67PDn6b6fmHhKkiSpESaefSbv1X28rPGJI7u0OXu8W5aMV7sXYWZ10WePaDGtzewYACdXtGpqR+uW+6wfbxe3DCW9fpeHmqh2aAly/+4iK/jicDE79LrHi8TzUz950KGvpL5wzdWfyQAeefSR0wC+/d3v3gRw7iteCcCJzzupcn4bCWe84bDAZrtcaDPUhOYTzxpv90gc06SybtZ75+Nrztzlebrai73jrN6jtrPnzzV/8Ru/v73a+4mJpyRJkhph4tlnOjpUdMxOT0akyTjzaUPByjivldbYpOPUmg5EyeTJjtnotbPte3Q+qk1My+vzrvcbCs+4JBk5PRxqN2/fU1x+eVeReP7pD35owimpr33zlq/fHC4zgAcffDAHeMVPi+TzOc99HgCbt2wGYGmrSDj3xE49tetnJh2Detyvo9azvOyehHbONqfr/dJEtHOW/eRms6fX07F9edfXUX8x8ZQkSVIjTDz7VJoopj1ss7RTQ93CmMk48GkRaOXHrMfrp3eoS0q7j2/re8QP1YysyxrOrDpCaoUnGA73+0UY6n/h0V8A8M87dl4F8IWf/vQCP0WS5qOP/H3R8egjf/8hAP7wT/4kB3jpy14KwBFHHgnA4qVLw/mx2uGoSxP1mjN9cr5PksiOL4COhLT74zq+P3p0Qpq9L87kdeMsd//u1VdMPCVJktQIE88+lddc0uPnniO77qWeHRFlXne/2tZCPbavpkPRnuSDmIUhexaGRLGWc0W44onhoobzm6Hz0AdaxT2uvvtHjmklLUjv/P3fzwCuv/bqSwHOe9Wr3w7wxl/7NQA2btgIwHC4/67d1QQyy+KcgNAJqd39/Bwnyad/oWq3k/t19FhPEtGa5+/8eWo92XtexoQzmRvRdlJ7XzHxlCRJUiNMPPvWxEUw6azx6dawZDPcuo7V22p6qnfW3ISRd/JEyxcVVZ9Lw9XbQ8J582ixHucNTz4FwPvuvsuEU9JA+fqXbr7k6ZffvvXbOcDp5xS1n6edeSYAxxxUzH5/KjxuJESh+Wg8C8dksLre5vj3S9IDvvZbKZvU91R9j/aJe7BP/9szbn97Ut+napaJpyRJkhph4tl32tWBZJps1owz68ZzdbPPs/QRSURZ14EoS5PMpANSnk6uLzckzFYP1ywOVy/Jqp0tYg3ng7uL6s9vjRRJ543bn3oA4LoH7j/Yz4gkwRX/9OEM4M6779oK8ON7f/QDgLPOKpLPAw86DICN+x0AwLIlxV+UWqPFeXdkJJ6vq52N8vgXqVAc2Zl8xn+1un9flN87dV8o8fr2hF9geV6zPmfdZfnFU33CltPa+4qJpyRJkhph4tlncroPHdOkMx0xtGPNTnJ7O+kENH57dXZjqzXxOm8d21OTbJYj53CHReX2hWQzuT1vF4nm46GG81vbtgNw9eNPAPCphx9yqCpJE/j+N79xZ7jMAP7n/3gnAO/84z/LAc46+yUAHHx4sf7n0JKl4Tzeqpzg03xxrKNDUPxeqU5fz3v2bo8/ZtUvpnT6fDI7nfR7JfaoT5LONu3Kz/F7ZnS0KGodHRvxQ9JHTDwlSZLUCBPPflOz3lhHB4isOrKMI7x0lnuW1GB2zIJvdR+YprWcWRK5tvPumx3vFz9Yi8LzLwsj6+GQcP5kxw4AvvKLItm8YfGKouPQ3T+045AkzYI//G//JQO49trrrwQ452UvPx/gnJe8DIAjjt4KwNIVxfl5d5j9vnvPaDjdx79Mha+JsoQyXl/9g1SWdjgivawmk3Fd0TxLv4iqLxi/b8o56jWz4cv1SuPjxmJC6v/q9BMTT0mSJDXCYUCfjgWyZKiYdibKk5rOjsu8++3xX+MjRCojz6z7uHN868LjYo1omowuaxWzJpeFn58M0yZv37ENgG+F3uq3ZYt2Alxz3wMrPeaSNHe+ftMXLgiXAHzj61/PAU56/vMBeN7JpwKw9ZhjAdh3w1oAQokkO3cXl8PDSdLYTr430o5B6azz+BezLD5P7DGfftNkledJS0HrOh6Nb0jxfLt3F98/YyOjfgj67v9yJEmSpDlm4tlnxmtgqIwUSX/Oq+tfjncOyiojy3S9zV4NHNLn7+wBH2arh5+H4sg2TI9/YrQoEvp5mKV++1hxj28+XiSeV/zsJ85Sl6S96PpPfyILlwC8+lffnAOcfPIpABz3rGcDsGm/gwBYs34TAMuWFiswx1nse8Jk8bFklnrekUiG74mkVrNdzopPv3+oXp9Ennnyl7vxL7BYExr+ohe+l1qLFnvQ+4iJpyRJkhph4tln0trKvOOWQpbUfsZIsl0mnd17G42vv5lVnqcVa2+SWs9WTaej4fBCw2FkuW2sSDi/v71Yh/MLTxaXn3n4ZyacktTHPnn5P2ThEoDTzz73EYAXnHLGBoDnv+BFABx6+FEArFyxuvJ9kiU1meNzDbLK98348p9x/c2azkPJ7HeS5DTvbJGU/NiufG+NjO7xIPcRE09JkiQ1wsSzT413ZKiOIMdvp+sIM222PlTOfo+z0IvLVtpCtyaXXJL01N0RZqn/JFx+LitqOL89nG8EuPXuux716EnS/PWlz1+7MVwCsPXZp7wU4IQTn3sdwAtP/SUATj7lNADW7bMxfOEU/0sRSvwZDl9g5TrS7WpnoVa4YSwmlFn1+6od/pLW2cmo+sSdUxeymm9O9QMTT0mSJDXCxLNfhYFaK63lhJoRXvfHx5rNVvLI+PglIQFdEh8W1z8LHYZ+tKdYwO0HS5cD8P2wjtuPHv3FwQDffOjBBzxYkrRw3fm9r10fLjOA733rlq0AN3z++h8AHPvsEwE47tknAXD4EUVHpJWr1xXfP+H/NEbGwmz44VjzORa+50ar32sxIS3/4BZnv7cr328ds9/T77k8mUavvmDiKUmSpEaYePabull7ye0dI77y6mrHoljLubhMPqsvMBpGkD8PI8Kfh5t/OlyMRO98rOilfvnPv2+xjCSJO773jTvDZQZw1cc/CMCrfuUtOcDWY4t1QA8+5EgADtxyKAD7bCzWA125smhY9/+3d+9hctX1Hce/m2Q3CbkjBKIJJISrFq1cREURvKAiLd4v1fbRqk9LtXipPq20pa2KfWqfPq08VR/rpVovRSmIV8ArIqgQgQpiuKZBIiGYQBiSbHZms9s/5vNJJj+yOefMzpw9O/N+/fNhJztnzjm/OTOc7/4ug0PN2tfomFIrDLnP5/hY+sWXfB1ONEhh99ecxkoMjNNoFULFEwAAAKWg4lkxu0fvje19n7dnvs69Yvco9T3/rNGCuzejymZ49GDz8W3qM/Pb4eGIiLheo9Q/cc/dVDYBAIV97dJPDzSz+fPqY085MSLilKef+vOIiJNOOiUiIo4+5piIiFh88EHN/xEZ0spCA81a2AzVxFyxnLF7ntBmeqWkPWu0z9jri3Fs96D3x877gqlHxRMAAACloOJZUe7asmuCOwXfv3nN9Fl6ZFDPbOiZvx1p9pm5TZXNWwead5Z3zJw7LyLi5tvX7uBsA9WyZ41r+qZh+rrn9utvVA5ERHzps3v/+8tee+54RMSJpzQroU86/viIiFix/PCIiJi/oLlCUl0Tgw6rD6gGw0dDf6kbG9979havCe/vycbIMI1RIVQ8AQAAUAoqnhVtkDm6JZilO7c5u3+jWdF8dLSZm3UneL+G//1aK0esH2+uKHTvxi3HRUTcsOU3t3N20fN30jP2fS+d9oWeLscxa1bzep45cyaNi57z1Ys/PqCMiIinPeuFayMiVhy26tiIiEOWLY+IiJVHHhkREYcdfkRERBx08LKIiFi4eImul+b14TXgGyPN78VRzc4ygz6e1fp84xQAAACgDFQ8K2anJt7cUm+uGFTb1axkjgzOjoiIh9WXZdNwvZnbt0dExH2jI1+IiPjBgxv/kLOIfjU6OrrXz/V6fZ+/V9UKqCudu7RG9cjIyF4/A73shmuvav6FLnn85FNfdG9ExKojVx8WEfH45YdFRMShy54QERGLlxwYERGLFi6KiIh5cw+IiIg5Q801+cZ3jXJyq/Q5xykAAABAGah4Vsw6VTYeqj0SERHrdzZH7a2bt+i0iIifrfvVjzlLwN6Gh4e/EBHxwAMPnB8RsWbNmoh4bMXTlc6qVzzHNBHh1q1bnf9GK6NfrbnuysObue9/f/LJp50fEbH6yKMujIhYpb6gBy5urhX/4Mb1V3EWK/Q5xykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLINcArQCbV6Y4b+8yDljIKbGFNujohYODQ4NsXHM0v/eYBytnKmclzZUO5Q1tvZ/5bzt0Q5WHCXvT815U7tx3hF3ydTepxT0L7+rJ2XZK99Bvu8bW/NqrdPCe97t/NQclxDJb0PfD52JedtRDna+nvd/tzote8LFDODUwAAAIAyzOIUoEN853qDcmnB5z+ofFrycyla7sAXK5+pfK3y2crHJXfcv1JepvyWtnen7sQbOXdhkfLTyjOUeSuCrgBeoPy8crhi75NlykuVT1LOzPn8Lcq3K69UjlS8fV3hfJfyvOTxXuFK50XKf1Vuq3j7dOtzxdfvkcoXKF+hfIpyqEu7kFagNyh/qbxeuVa5Tvu9ufV5XaiATuvvC0wOFU8AAACUgoonOn0TMzfJvOZOxc1QS9+rhcq3Kt+pPEQ5UR+sU5RPVboy835t/2ZVDEYzdsV91FwJPKPgeXRl5WXKryorUfGs1Ruu6JysPEY5P+cmXOFyxeYGndeRadK+kbzOAW1eJ1U3nnE+q94+nXq/+3o8SXm+0hXP2SW3i99vByfn6/VKVwx/pvyR8modz206j52qIE/L7wt0tvEBAACArqLiiU4bK/l5k+XKhCuM7jt4aMHtuKJ3ptKVxrepYuDRlxP1laorr1GuUx6vzOoD6X93JeOJet2f6HUbU/y+cMXlVcqiFQ73UXMltzbN2nc8ybEev/7T4616+3Sa++6el+zXUMXaa0Zyvl+qfI7y95Vf1nn8is7jw336fYEOvukAAACArqLiiX7nysRblIdMcnuuaJyu9OjcK5T1fT3JlZhavbEl+f2jkv2ciPvALVCeo7xJOSUVz1q94UrsSuWzkvOUxRUqV1i+rRyeTu27n/bqNQPT8frrAu/HMwq+36tiSXIej1M+Vdf1+/XzxtbPLyAPKp4AAAAoBRVP9KWWlVHch/IE5WCHXsKVR8/X51GiWRWXncqvK9+kdB/JrIrSHOVZyo/oeLdFTEllwvvzYuWBOY/DPGr9auUGHcfYNG1f8yjrXZPcj4EOFRHSvpntGp3m11+nuD1mT3G7DEyQRZ/vPqAeBe95h9+j9rx/ij5fMA1R8QQAAEApqHiiX3lUtftCLuzw9l3p8OjQ5aoM1FQZ2GfFzvMN1uqNu/XQjUrP/5fVV8w3k+4r93zlF5U7yzi5LfMzujLi0bFzCm4qHc0+PE3b15XA/03aY06H3scvTX7Oy+fz8oLndyI7k+McnU7XX4VMtl3SteH9eeA+40uT91/eSqjn3fVfVH6jvFD5cAA5v6QAAACArqLiib7Ssia013x+UXLn3ymuICxJKgT/p9ye8Xyvbe2VjE5V5h0d6z6hXsnoa8qdJZ3qdOWWowt+5rhS5spv3pWKKtm+3u9avfEtPfTtZDvtciXrucqiFU/Ph/pe5aZJ7s9e83emlcVpdP1N+UdVh9rF59troz9R+XvJ58MTkt/P4gq1+3x+T+37fbV7I4CMNyUAAADQVVQ80W9cMTyjzTv9otK+bJ9XZlVc0tHc7ku1MOf++jhPVB4dEVGrN7ZGlLJ2tY/75coDCj7fldlvKB/phfbtdN/CWr3hdmx3NLGfN1rS+2K6XH9TrdPtcn9r1uoN9x2/RXmBcnnB9licXOc/LXi9og9R8QQAAEApqHii36R9H+eWdI0dqzwhIqJWb3w3ImLh0GDWSkab9dBVylXJcWRZkBzvrcpHu3GwLX34Vig9qjjvfIau9GxVuk/kzl5q3w4aqNh2aJ9qtm/6+fKwzsPFemil8l3KeTk35Qr2ycnPwISoeAIAAKAUVDzRF1pWSvHo6qIrpbhv3vakIpD35s2VHq+kcq0y70pGHpX++mR7WVxR8ujhj+p8dGslo3SlIo9ezlu58fm4Trle+7mrR9uX64/2mUr+fLlM+SfJ+c2Szh5AMQuZeJMAAACgFFQ80S9c+fMKOouTO/YsXjnEfaJcQcw7Ktd9HE9vfV6t3ng0Yr8rGTX0e2v10M3K5ymzKkbeL49WdZ/LLys7Mq9ny0pFaZ/Son34dij/JznvPdm+XH+0zxQbT667onzetiY/A5lfSgAAAEBXUfFET9vHmuFnK/OulOKKgNcg/pzSlcI3K7P6XHo/vIKIKzbrlVkVB69k5L6ez0iOK0s6r2bR0eJZXHn16NaiKxW5D6dXlvmZst4n7cv1R/tMhdnJ58lgwef7ur1HORpABiqeAAAAKAUVT/TLHf1pSs8vOTPn811xu0Z5h9KjQF+tzDvK3JUe93X7ojKr4uIKz3eU71YuyHkT6fNwivKIiIhavfFwRPao8RxcUXXfznkFn+/j+6bSKyyN90n7cv3RPqWp1RuubB6nPDf5PMlrOPlc2hlABiqeAAAAKAUVT/Q6V97ct7HoKGvPG+i+lV7xxysAea3j05VZfaT878crnxwRUas3ro7YM4o9tY+VjL6rXF7wuFzReKnyV8pt7ZzcWr3hypVHF092pSJXPHf2U/ty/dE+3dSyothS5anKP1M+VZm3Er0r+fz4XsHrFn2MiicAAABKQcUTPamlErda6b6NedcSzhplnc43+TRl0VHmr1TeoHwk43nuU+U+bq9KtpfFlUivLPQJna/tEW2tZOTtnal0RSXv/IyuMF2vvEv7Mdqn7cv1R/t08vwfpTxReYbydOUqZdEi1EblRcoNbX5+oA9R8QQAAEApqHiiV3n06lnKoiuluK+S57t8qPWOvlZvjOjxHyYVgKKjzF2BWKbt5l3J6Jd6yH3cPGo4q4+bKyGHJc+7JDnuvNI+fHMKPn978vrD/dy+XH+0Tztq9YaP5wTlS5RPV3pe3aXJ8Re1Rflh5RU6XyN85SAvKp4AAAAoBRVP9JR9rBl+jjJvH0j3UfLoWY+m3asS6IpIrd7YpIc8yvzwnK/nm75DlC9Q3qvMqvx5/76u9IpBeVcecaXSo9sLjSZvmQfwJOWxBV/fFaVfK69T1mlfrj/aJ/P8zlc+U/kWpUenH6qc3aHv+geVH1B6/tMa3zooioonAAAASkHFE73Go2afrXRfxrzz03mU9U+U6yP2O8ralRhXHr2SSt4KT7qSyleUWRUXv+6VyncoXWkayHmeXDFZHRFRqzdu1vFmrWSUVkznF2wnj0p2Hz6voDRO+3L90T57q9Ubs1qv04g4LznexR3+Tvf1eafyg8nnzY6c1yvwGFQ8AQAAUAoqnug1XrO53TXDfaf/1eTnfVo4NFiP2FMpjIjblAcqs/o8ukL0u8rjtD2P4p1oJSP3cXtAD31f+QZlVsVnor54tyv3uZJRywoo7kP2XGXRlYo8X2LRlYr6on25/mgfcaXYKy1dqHxesv+T5dklNii9EtFnlLfofIzyFYPJouIJAACAUlDxRE9oWanDo1pPLVgRcJ9Gj2r9sTLv/HSuzFyq9GjvoqPMX6G8SZlVcXGl0BUiV5qK9nHzvH+f0vmcaCUj/75HAS8teBPrUes3Ku/Q64zSvlx/tM+E+3Wu8oyC5zXl69nzcXo+4DVK/+XkJ7ouH+XbBZ1GxRMAAACloOKJXpFW7tzHK+9KKa6sXNFaESgwatOVR88n6FGn83Pe5LmPpCuJF0VE1OqNbdqPiVYySvu4rVU+I+c17krVSqVHuT+QnBdzH76XJz9HwfPkytQO2rcnVjKifTrL582j1c9MznNe/guD16L3Sk8erf4L5b06TublRNd2KEvGAAAJ7UlEQVRR8QQAAEApqHiiV7iy0e5KKb7Tv1xZaB6/ljWkvZKKR4WuUGZVBtPR4h61uiHn/qQrvXiU7oKch5CORr5KOaLjcl85r4zypIKfIbuS47mmdfu077Sf15P2qfZ3tc/vp1uPK8d8vUDHUfEEAADAtLiLQpfV6o10hZmioxndx8ejFOs9en6erjxCmXelFPfd8ihPV0gWaftFd8mVwYeT7eflyoxXBLpEmVVx8b+7j9yfK12Jyupr5z5uHo28UsdfS/ar3fkZ0z58nidxnPbN1b5cf/3VPmkl2BXcoiszpe3zVuW/6PxuzXMdAp1ExRMAAACloOJZfUuU/6lcWvD5DyZ3vJt67Py48tZuJc6VmWOVn+vQfnm7RSvU++xLWas3fhqRayWj+/XQ1crXKPOOhl2o9NrVdyXvuxcU3J65cuM+qDto3/zty/XXt+3jvtsfU56oPC45ziyeZeDc5HvB5/sRvmpRFiqeAAAAKAUVz+pz3zz36Sk6b+LcZDs9oWXN8McrT1fObnOTM9s8v93ivpnua+Z5OrMqLq4kXqY8W5m3QpnOx/gl5fOV7a5U5JVg1kbkWqmI9uX6o332zAZxi/JDSq/ZfnjB69F/QXuPcrPa8zJdlzv5ykW3UfEEAABAKah4Th/jJT+v6lyZO0v5OOVAjx3fC5X/HrHXSir7bNeWlYy8UsndykU5r3n/+2ql5zN8rXJuweNI15LfTvu2375cf/3ZPq5E1uqNr+sh/+Xh/OTnLG6f5cq/VW7R9n+g12sE0CVUPAEAAFAKKp7Tx2TXCp7Z5f3r1E1M3kqCV+Tx6Os5PdbePp9PUD5H6VHrWX2x0pWMvNLQ/Jyv7997m/JI5WDB92s6yn6E9u1I+0412mcKLBwa3B4RUas3PquHvJb7O5RLcm5qILmu/771c6NWb1yv12NlI1T2fxYAAACA/aLiWX2uHHmetUML3jS4jVfpTnaT7mRHO7FztXrDldSVbb6nxlvvtCOj4tmyZrjnszu2zdcdS16vrD5bPl95+8J5lO8rle7jlVVx8b9/W/mnynk5X9/n+bg2b1L9+t9RPqj3He3bmfadErRPZdrH8+L+R3Jde57OvH/ZmJW0598p36329iwUYwF0CBVPAAAAlIKKZ/V5HsTblF4LOe98eb7z/WPlHbqT3aw72bYqDbV6wxUDr4jxpoJ32ubRk14hJ6sSm64ZXvT1PM+lV4K6PtmPbnGfuHcqj1Fm9b11hemE1ud51PpElWv3zarVG/fpoWuVL1fm7ZPX7s3pNuVlyXkP2nfy7TuFaJ8KtI8/t2v1xgN66CL/k/INyrwrSfk4n638B+U79Dr3T+b7AujElwoAAABQCBXP6vMo4CuVnlcxb8XTv+cKxQblJ3Unu1E/79rfHW1LhdMVgmVKV1JfUXC/zH2lvpv8nL6+b5IOSc5D3rWYfVyblR9Vep7LbvdhcmVoZWslIfJXJNJRxLcqH814nufNvFzpeQm7NQrZlatfKG/T+yrvSkW0b7H2LQXtU832aal8/kYPXZi004sKXu/p/KXvU35Qr7Npf98TQB5UPAEAAFAKKp7V5wrgFco/UJ6Wsw1dqfR8b+9VHq28WHmX7mgf0s/uW+qKhlcmOUr5auU5yqIr2nh+uNuVWaNF5yR38AcVvHly5fiHSvdZKmWFDq94EhHfUL5ReUDSThOZmxz/x1u3u5+VjEb0e+7j+evk/dDp+V2Hla6wFl2piPYt0L4lon0q3D4tlU//RcuVSld63Xcz6y9SA8nz/kjp7XoU/UN8NaNdVDwBAABQCiqeFddyJ/tbPfSPSq9Q8ZSCNxGuXLxGeabSffI8Cno4qQisSF5vcZuH5L5c7tv14dY76nS+uJa+pb4DPyc5jrw8mvby5PjKakePMr9DD92sdOUoq6+c23el0hWMS5RZKwK5L5ory654z+vQIbrdPMr2+3n2i/btWPt2Be1T7fbZz/eFZwm5QHlhst95v/vT2QAe0fb/S6+3PYCCqHgCAACgFFQ8pwn3harVGz/WQx9U/rXSlciiffZcOT29y4fgipjvxD+kvFLHV894j/r4fkeZd81wj6a+U7lG2ZiipnSl51Lls5R5Rwe7r5lXUvmWciTn635T+VZl3j5uWfz631NuVLtmjVamfTvTvt3+jqB9qtk+E31fuMK7Jvm+8F/MTiz4fXGw8i+U27T9S/R6lVxpC9VExRMAAACl3s1immgZpew1uD0v3t8o3YdnTkV22ZXMG5VeEeNaHU9WHyFXGNy3bEHB1/eduCsTW/W641N8Pn6k3JgcV9bNoCszJym9ksrPdVxZKxmt00NXK9udfzXlUcNfVuZdqYj27UD7dhHtU+32yfq+GNX+XZd8T3xMuVqZ9RcPn5dVyr9UbtL2f6jXawSQ880EAAAAdBUVz2nKfWpa5md8s/I85euUBydt3a2bDVcwfMe/Rfk15T8p78tTGWgZTev5Q4uuwOH98Whu923cOcXtNqbjc6X6O8rDlAfk3JRnFThbeVtyvBOeWqXn4ztVuaLN90e6MtIvad8pbd+OoH2q3T5tHHc6n+9fKT+ifLwyb+XTa927z+gbtf21ea5/9DcqngAAACgFFc9prmXU8H2647wgqTB45YkTkjtb39m7z9Jgxh2vKxjuw+O+Uh4l6r5Sng/0v5XXaD+LzvfmysqLlQfnvCOPZP98h3+v9mNXRZrO580rqbwuaZe85+cs5SfV/lkrGbnP18/10D8r365ckezHQNL+rmTUkvPr+Vi30r5T174dRPtMon0qzBXnK5X+S5T7bC5TZhWl/P8OnuXAo+bfp/NwR8XaGxVCxRMAAACloOLZYxYODfpO/ke68/ypfn5Kku6j475NS5Ue3ZxWujxPnVdQ8gpHXgnkVuVN2o/JzmvnCqxHXd6SPJ7FFdaio6zLaifPy3qTHvL8l4cr886v58rjcuX9ykbG62/X639KD3kNd69k9USlRzW7cuGVify+ct/O9druGO1bavvWW6+72NMnM68tyXZon860T7faZbLHPd7aPrV64zPJdf6S5Hsgi7e3KPn88OfJRBXgSp4flIOKJwAAAEoxwCnoT7V6w2svL0jueAeTmxJXsFxhGW69Y144NFjr0v65Gu+KbNF5SV2h26DckdzxV6UdXFlx39v5Ba9Nt88m5aTmSazVG17JanFy3kdb2z1U+W533j7atzPt23Iej1AW/SuW23WdtjtK+0y+fWJPxbSj7dLF8zBP/7k82f+i/Jeue/e3391632J6oOIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED8P/3G5+0tvT8UAAAAAElFTkSuQmCC\",\njt.Images.urls.loading=\"data:image/gif;base64,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\",jt.Images.urls.mouseCursor=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABL0lEQVRYw+3VP0oDQRTH8U8k+AcFFRUFERGLiFjEA1jZTo6RG6T3ArmFR9j0WlpaWBiwsNNyiwgW0Vg4CUPELhMt9guPffumeG9nf/MbvlnEYVmWo3a7PcIO1s2R3aT5KQ6wMo/GC/G5nNTWsYr6PHdgE+fJLjRxhFqMbNSxFr96K6nvYxhr7zE+Y8yUWghhNH5pNBr6/f5ksdfrXeA1xiCbBoqiUBSF6RwN7GIptwh/4wR7UyKduQZ0Op1JIc2xHTVSzzpAt9v9sdBqtczTB/6Mfz/A2AOGOYe4DCGMUqI33OAKl1MmNVsjwhmaIYTrxIBu8YA73OMZb7kG2MFhPPPH2ECJJzzG5iU+ch3DMvnfL/HcDxILztZcctPVo9stxXyYCPBDRUVFRUVFRUa+AB+1YCivg1lPAAAAAElFTkSuQmCC\",\njt.Images.urls.panel=\"data:image/jpeg;base64,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\",\njt.Images.urls.panelSprites=\"data:image/jpeg;base64,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\",\njt.Images.urls.controllers=\"data:image/jpeg;base64,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\",\njt.Images.urls.iconSprites=\"data:image/png;base64,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\",\njt.Images.urls.muteIcon=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAoCAYAAAC4h3lxAAAEwklEQVRYw+2YbWhbZRTH/+fJTdLbuHWsVTc6cK2DtDcJK2GsbAzpUNEPgjAUZYgyFXUZ8wVxm+ua2bjCuo19UDZQRFQCgkw3/CgMi9M6i9Q1uUntRsigww6duOFi3tr790smMaTvXbLq/t+S53Dv+T3nPOc55wK39R9UOp22DQ4OLq/Eu9RCP9A0zVXJZLK7pqbm8UUHEI/H7xeRd0juAVBXCQBtIR6SSCRqM5nMswACAFoAsFLpqi1AyhjZbDYAYBuAWhEByYoBzDmFOjs7VTQa3SIi75IMiEhtNQrGnCJw7ty5ervd/hKA7SLSWM2KN2uAWCy2QUQCJJ8UEQ1Vllamhkvxb13XCQD9/f32ZcuWPWVZ1g4AfhGRub50cHDwDpfLNe52uzMzsR8ZGVnhdrsvl1v7lxORSKTJZrO9CGApAJC8PD4+fkzTtOsishfAKyIybXkkaYnIm4ZhHCpz6O9USnWRTGWz2R6/3399mog/TPIZACe8Xu/nU0ZA07R6AM+RrAcAEbmgadqHTqeTuVzuoZk4P93ZAdBFcgeACYfDwYGBgZ7169enJqlwD4pIUEQ2kPTE43HLMIyT01YhKagkQjIf503TdDocjh1KqYCIKBGxi8jrLpdrT39/f+0kl2IQwIaCTz6SwVgs5r+prcRk8nq9WcuyRi3L+qVooxwA3qirq9vd19enF6VNB8mgiGwqSksCMEn+uuA38SwgPopGoxrJ/TfKr4g4Se5qaGiwTNM8SLK9sPP3FTuvlPqUZMjj8VyqGgAArlmz5oNkMqkKECsLEDUisgvAKgD3Athc7DzJz0Qk1NraeuGm9EKzka7rTKfT71+8eFFZlrVfRO4uLNWS3CYitmLnReQEyVBLS8tIRdrpmUKEw+H3ABwA8FvRmbCV5PxJACGv1xuv2DwwU/X09FjNzc3HAXwMIFeucGma9rZhGGZFB5pZtuFrSbYAcJQp5ffk8/nN6XRa3ZIA0Wh0LYD9IvLIJCZLRWRfIpHY2dnZqW4pgKGhIZ9SKqiUerSkBTlPMlUUheUism/r1q2B0h6tagCmaRqapgVFZEvJ0leWZT1P8gCAP4sgGgB0JRKJ7eUgKgoQiURalFJBEXmsZOdPAwj5fL4zuVzu6MTERG9JJO4Ska5kMvlCaUtTMYBkMulSSj0N4ImSpa+VUt2GYXwHAH6/PyciR0geIpkuglhBcq9pmu1VAWhqakqJyFkAPxXt/DckQ62trWdK+6YrV64cBnCYZKZgOwHgi1Qq9fNUACR5meQYyTERGSv5f17Dusfj+ZJkiGSE5Lci0u3xePrK2XZ0dKSvXbvWC+BIIRLH8vn8gfb29quTthKjo6NDjY2N/4TYsiz6fL5LhcN3FECO5BYRUfOAOBWLxa4CyBqG8f1Uths3bvxrYGDg4JIlS37I5/Nn29rafp9yIpvBQLLSbrcHCsN8/Vwmsqp+Vmlraxtrbm5+i+SrAM5W8vvPgl1kuq5PeL3eMICdJD8BkF9UADdkGMaPmUzmtcLwMbroAABg3bp1f6xevbqX5MskT1cjpeZ9D+i6To/Hc0rTtJ0icrz48lkUADfkdruHnU7nLgC7AZzHYtbw8PADkUhk06KGCIfDNtzW/0B/A2/7MX7SZ6/PAAAAAElFTkSuQmCC\",jt.Configurator={applyConfig:function(){var a={};Javatari.ALLOW_URL_PARAMETERS&&(a=function(){for(var a,b=(window.location.search||\"\").split(\"+\").join(\" \"),c=/[?&]?([^=]+)=([^&]*)/g,d={};a=c.exec(b);){var e=decodeURIComponent(a[1]).trim().toUpperCase();e=jt.Configurator.abbreviations[e]||e,d[e]=decodeURIComponent(a[2]).trim()}return d}(),a.PRESETS&&(this.applyParam(\"PRESETS\",a.PRESETS),delete a.PRESETS)),a.RESET&&this.applyReset(),this.applyPresets(Javatari.PRESETS);for(var b in a)this.applyParam(b,a[b]);!function(){Javatari.AUTO_POWER_ON_DELAY|=0,Javatari.CARTRIDGE_CHANGE_DISABLED=!0===Javatari.CARTRIDGE_CHANGE_DISABLED||\"true\"==Javatari.CARTRIDGE_CHANGE_DISABLED,Javatari.SCREEN_RESIZE_DISABLED=!0===Javatari.SCREEN_RESIZE_DISABLED||\"true\"==Javatari.SCREEN_RESIZE_DISABLED,Javatari.SCREEN_FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE|=0,Javatari.SCREEN_FILTER_MODE|=0,Javatari.SCREEN_CRT_MODE|=0,Javatari.SCREEN_DEFAULT_SCALE=parseFloat(Javatari.SCREEN_DEFAULT_SCALE),Javatari.SCREEN_DEFAULT_ASPECT=parseFloat(Javatari.SCREEN_DEFAULT_ASPECT),Javatari.SCREEN_CANVAS_SIZE=0|Javatari.SCREEN_CANVAS_SIZE,Javatari.SCREEN_CONTROL_BAR|=0,Javatari.SCREEN_FORCE_HOST_NATIVE_FPS|=0,Javatari.SCREEN_VSYNCH_MODE|=0,Javatari.AUDIO_MONITOR_BUFFER_BASE|=0,Javatari.AUDIO_MONITOR_BUFFER_SIZE|=0,Javatari.AUDIO_SIGNAL_BUFFER_RATIO=parseFloat(Javatari.AUDIO_SIGNAL_BUFFER_RATIO),Javatari.AUDIO_SIGNAL_ADD_FRAMES|=0}(),Javatari.PAGE_BACK_CSS&&(document.body.style.background=Javatari.PAGE_BACK_CSS)},applyPresets:function(a){for(var b=(a||\"\").trim().toUpperCase().split(\",\"),c=0;c<b.length;c++)this.applyPreset(b[c].trim())},applyPreset:function(a){if(a){var b=Javatari.PRESETS_CONFIG[a];if(b){jt.Util.log(\"Applying preset: \"+a);for(var c in b){var d=c.trim().toUpperCase();\"_\"!==d[0]?this.applyParam(d,b[c]):\"_INCLUDE\"===d&&this.applyPresets(b[c])}}else jt.Util.warning('Preset \"'+a+'\" not found, skipping...')}},applyParam:function(a,b){if(a.indexOf(\".\")<0)Javatari[a]=b;else{for(var c=Javatari,d=a.split(\".\"),e=0;e<d.length-1;++e)c=c[d[e]];c[d[d.length-1]]=b}},mediaURLSpecs:function(){var a=jt.FileLoader.OPEN_TYPE;return[Javatari.AUTODETECT_URL&&{url:Javatari.AUTODETECT_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO,0,!0,!1)}},Javatari.CARTRIDGE_URL&&{url:Javatari.CARTRIDGE_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,0,!0,!1,Javatari.CARTRIDGE_FORMAT)}}]},applyReset:function(){jt.Util.warning(\"Removing all data saved on this client\");for(var a in localStorage)0===a.indexOf(\"javatari\")&&delete localStorage[a]},abbreviations:{P:\"PRESETS\",PRESET:\"PRESETS\",ROM:\"CARTRIDGE_URL\",CART:\"CARTRIDGE_URL\",FORMAT:\"CARTRIDGE_FORMAT\",ROM_FORMAT:\"CARTRIDGE_FORMAT\",CART_FORMAT:\"CARTRIDGE_FORMAT\",ANY:\"AUTODETECT_URL\",AUTO:\"AUTODETECT_URL\",AUTODETECT:\"AUTODETECT_URL\",STATE:\"STATE_URL\",SAVESTATE:\"STATE_URL\",JOIN:\"NETPLAY_JOIN\",NICK:\"NETPLAY_NICK\",VERSION:\"VERSION_CHANGE_ATTEMPTED\"}},Javatari.start=function(a){\"use strict\";if(delete Javatari.start,delete Javatari.preLoadImagesAndStart,Javatari.userPreferences.load(),!Javatari.screenElement&&(Javatari.screenElement=document.getElementById(Javatari.SCREEN_ELEMENT_ID),!Javatari.screenElement))throw new Error('Javatari cannot be started. HTML document is missing screen element with id \"'+Javatari.SCREEN_ELEMENT_ID+'\"');jt.Configurator.applyConfig(),void 0===a&&(a=Javatari.AUTO_POWER_ON_DELAY>=0),Javatari.room=new jt.Room(Javatari.screenElement,a),Javatari.room.powerOn(),jt.Util.log(\"version \"+Javatari.VERSION+\" started\"),jt.CartridgeDatabase.uncompress(),jt.NetClient.initKeepAlive();var b=Javatari.NETPLAY_JOIN;if(!b&&Javatari.STATE_URL)new jt.MultiDownloader([{url:Javatari.STATE_URL}],function(a){Javatari.room.start(function(){Javatari.room.fileLoader.loadFromContent(a[0].url,a[0].content,jt.FileLoader.OPEN_TYPE.STATE,0,!1)})}).start();else{var c=b?[]:jt.Configurator.mediaURLSpecs();new jt.MultiDownloader(c,function(){Javatari.room.start(b?function(){Javatari.room.getNetClient().joinSession(b,Javatari.NETPLAY_NICK)}:void 0)}).start()}Javatari.shutdown=function(){Javatari.room&&Javatari.room.powerOff(),jt.Util.log(\"shutdown\")}},Javatari.preLoadImagesAndStart=function(){function a(a){Javatari.start&&Javatari.AUTO_START&&(a||b&&0===c)&&Javatari.start()}var b=!1,c=jt.Images.embedded?0:jt.Images.count;if(document.addEventListener(\"DOMContentLoaded\",function(){b=!0,a(!1)}),c>0)for(var d in jt.Images.urls){var e=new Image;e.src=jt.Images.urls[d],e.onload=function(){c--,a(!1)}}window.addEventListener(\"load\",function(){a(!0)})},window.applicationCache&&(window.applicationCache.status===window.applicationCache.UPDATEREADY?onUpdateReady():window.applicationCache.addEventListener(\"updateready\",onUpdateReady)),Javatari.VERSION=\"5.0.4\",Javatari.preLoadImagesAndStart();"
  },
  {
    "path": "release/stable/5.0/standalone/cache.manifest",
    "content": "CACHE MANIFEST\n# Version 5.0.4\n# Stable\n\nCACHE:\nmanifest.webapp\nimages/logo-icon192.png\nimages/logo-icon512.png\n\nNETWORK:\n*\n\n"
  },
  {
    "path": "release/stable/5.0/standalone/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\" translate=\"no\" class=\"notranslate\" manifest=\"cache.manifest\">\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width = device-width, user-scalable = yes\">\n\n        <meta name=\"google\" content=\"notranslate\">\n\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAgAElEQVR42u2deZRcVfXvP/vcqupOD+nOPJKQEJIQEfnxMCTI+6EogqiMCiqDuhjeD5YuBhfvoT98KMrwYImCIsgPZS3095DBPEUFFFBklOgvyiSQQRISCCFDpzs91XDPfn/ce6tuVVd3V3U6nU7X+a51U+lUdaXq3P09+7v32WcfYXjgAQeE13LgMGABMANoAgwODtXDAp3AZmAtsAp4DlgXXv7e/oAJ4LvATiANqLvcNQJXOrS574Y2OOJYBtznboS7Rsl1X2iTexwp4AE34O4apdcDoY3uEXweaHOD7K5RfrWFtjps8IBb3cC6ax+7bg1td0BIBQR4HVjoEhIO+yBWA4sGesFg6ck/O+N32IexMLThqj2AB/zDGb/DGPIES8qtG/SnkX4AHO/GzWGMYBIwGXioEgJ8HrjGjZnDGMP7gfXACwNJoBSwBWh14+UwBrETmAZk+guC/68zfocxjNbQxst6gGUEhUYODmMdywmzQ3EPcJkbF4cawWWlHiABZN24ONQQkkAu8gA3uvFwqDHcGHkAD9gOtLgxcaghtAOTDMEurnFuPBxqDOOAAyICpNx4ONQYUhEBlruxcKhRLDcEG9gdHGoRhxmC7g0ODrWIBRJGw+PdWDjUIDqEoEba9e1xqEVYIdg/6eBQk3Azv4MjgIODI4CDQw0i4YZgT0FoaZ2CGLBqUT9HuR4EIoIxHqqKVYsAqoqIkMtl6e7a5YbSEWDk8aGp05mYSGDRIE0Q2q5RsCJkQueZRNmezfLU1neKjHrpsg/xoY+ehPUEtTnU94O3kIgeMSdsEoAFtVhArSXhefR0d/Gfd/2A7Vu35F/dPL6F5R/4MJMmTyeRTJLzfUQgkUigSj6nkcvlQC3r1vyDvz7/FNZad1MdASrHJyZN5gONDfhlZm1PQENiJEX4S0dHEQFSqTo+ctyJnPrZs8nhocYLOBQRSST/roqgBDM+gCoIikHo6eniryuf5dknHs6/9/QZM7n08iuZvt8CerM2eF8xqAYN0VQ1eD8VPMnxqwd+ygurVpJO97ib6ghQObIqZBBsbPr3A9tFABP+myLkRPrIH0Xw1SNjDagJjV4ocShhH784HcL3F7CapLRxRzKRoq6xmd6cIaMJBAWr+X6AqIZkACOKr6ay/n+OAA59tLkQM/XIrAUTEgEJthUlpJ/f9zw84yFiikhj4yavIaNiKzKhk8A3Qim3jOfhpeqxXhIRwcMnYpWiqI0+KRB6HwdHgOphCnYZ/BjIkvwMHUoXE5MzRQQwBjFCQj1AMBq+lygeEur1gi5SFMQEGgjFiJIQRURLmUUikcST4P09bDDrC2AVG3u9HxLRwRFgCPYfGHwwQyuIhGFvzJhVymZ2oinceCB+IH9sXPao5hPQqmA0IIEVExBPFSNgTLn3F0SSJMQEnkQMVgVRC56H0fgrc3iOAI4AQ3QAiAQ6GiQwSiQvfYRgwjZSZpbVwAMYEdQYVApKXkTyGr3w+mAGL1BMMVFgLH0cAMYE5JBQQnkSEDVIn8Y/hsm/p4MjQNUxgBcLWg0FSZSflzUggCnnAQiM1JYYb/wx/nIbhQChzXuqiBngs3mCbzWWASoloqLiIZ4jgCPAED2AkVDlBD4gTwLi2SApv5wuHngJIKf5kLdgoMWGGq0PaFxBYfAMmBK2BMYPGBvKG0HVBlItLrHyMYq7l44AQ/EAocHHUvfFhq4FEvj0GwYgURZS+pp+kcOIEUAJpJd45d2F8SSQV0WyqmD8wc82/MzOAzgCDDkILngAU5KijCw5JeXryY0B4xEmTiVcsOqfbPmYWgseyPMEKXl3iUkgazU0+kK6VDVcTBMPDYN3cQsBjgBDdAMFw5fiJam4SZmyiSCDGPCi9I8MvO3CSEwqaRjkZgQp8+aeCSRWfjFO40QIgmHVeLzhtnw4AlSJNZ0dNFlLj9Uw20J+bUAJyaDBbLy2TJmBGMUzYI2gEltP7mPQ4aqtamD5FlQsIhKsAajt4wGMBOsEvidBhhYNjD+SbCqxwNgZvyPAEPD99eupNwZfy8+gEhP12TKFZuKZwNY9sAgS/lneE2heHwVrYYaEETxDuWWAcI0gqhsiKLUIiyGsjWqLQjIYRwBHgCFAgZ4BKyi16KEPAdTP5+xFg2i4/KqsBlo9nLmJSRfjSTn7D7JDJgh8jRRLIBPmVDWMHtTJH0eAvRI+eIHx21CiFLR42cKhfAQrWvAEnuknvvDA80LZE3qBIPANV5RNsbdwcAQY6dgZ8cLZ2ER5oAF8iRT+kl9oM2EWqMxKsOeFzwMSFb/ZUASpYsJ0khKWUzgSOAKMNIJANbDmaA1BB0g1RXpeNMoCQbZ8egljgjQo4evQsL8Hig3roqMskCsGdQTYSxGE4kngCWTQSVhQI/n4OCJAf5O3MRLUIWkhpjYmZEeYdo3KrMW4hTBHgL0ysIaEBEeQaFjpHJdI0aMWouZCABytA3hla0GDhTATZEgFYukgwZggNgiqSoPKUgdHgBEOAgQjHh6CFbAmFv4qxQts8Rgg/mjCFGaf/QDR04XqVCtastockCmqVXJwBKgah887kKZkPRaLr4pRqE8k6Uj3oFaZXl/PPzt2YoB/vvs2nb5fooCCBTQvlomRmAFHjxoxoqg+LtoaWT6N43lhgGyC16pnghKIcEFMo22XCp6TQI4AQ8ElE5s5vqEuMKpQqwSLS+OCbZAI6WlNJAQe228qn1r5XyU6PQp8FStStOvREJ/YpWg/bxAwBIV4/ayDBXVC4cZ8Q1ByraHuDx7D97NStAHfwRGgYvgEx4nbcAdY3IpykZGHhhwVpcWtNCEm3FBTMHaJeQIpCZnjEkj7Mf4+JAhXlr1or7EE6w4aslWtImEZhoMjQFUwsXp/idcpR6pECwVyRspUbJqoM4MU1fnnn++7iYx4rwiDhPVGWtb4I+8SBRZRFJDfHYYGzSg8twzgCDCUgREhZQqtUPKSpGRXlwckta8xq2pps4diApS8vtRITXhzyqZBS94j+n0v+r8BDYnngmBHgKF5ALSwjzc2a5casSHa1F4iU9SGe3uJ17r1IUB/i2OFrZfSrwSKZn5iwbTG3tPiaoEcAYZKAC3MqOVmXVNkzGVkSrhpPREWu5UafNm1gJjxe6EEKt5VXPi/vfCXtSSQjqdVpZ/fd3AEGByieYlT5AXKSJmyFf4an8mFkji3D2H6C3ZFpe+/Ubw5x+b/3+IOcUQeyMkgR4Cq7T/aElliP0KhrifyCp72ZUBUpWnyTbC0/z2RA3+QfiVQ0Dyl4KlsGAhrbLHBYNyGMEeAocQAQS7elhidlEoi6SuB+hqtDpGEg31GiqQPJZ4gLtUcHAGqJEBYblxG9/eVRFpWpkTWuVvtCcsF2NHusZJgOiCE5M0/p7jZ3xFgiHYX6eeSGT8euBakkJR7g2H6HANwItZvsbi8otATyLjWiI4AuyM/pMzMD/2s5O4dphaK4MJYQ2J9W5wEcgQYEjzbT8e3So1eKhTyw8BS6RO+u8SPI8Aw2FalRlS62JSX3v0l/4fTPZV7Ol9g6ppiOQKMoFzq7+fhtkHZ7Rc4UCax4VClFRWSLFISpLrUiyPAPo7GQdqKD0SPoKvb3p+GVRXf993NdASoDjMaG5liBp/9IyLYMoY3GryA53k0NDS4G+oIUOXMWaEKiioclL49/EfFzTWGpqYmjNsW6QhQDXL57sqVxQEjbe6VehdVpbGxEc9zzYEcAarAnGSC+gHaikdGH60Oj6TYsdbmdf1gRBAREomEOynSEaA6TPMMjQNY9t40J2stNta0dzASTJgwwUkgR4DqkBIztNLlEYDv++Ryucq/SyrlPIAjQHWYnkrRNMisqZQvRY5m5fg1rPFJLkc6na6KABMmTHA31RGgcjR6hjoZrJtn4XC8kdx0GCdVJeRqbGxk0aJF7qY6AlSOpkSiaD9wf/D2AgGi4LZSeJ7H+PHj3U3tB64WqFQyeB4zGhrCM3gHl0AIdJWhgO/7e2QxrFpZVV9fz+zZs92NdR6gQoPxPOY2NlQcBPe3DlCNTh9qEDxYyYWqkkgkmDJliruxjgAVukRVJvh+ZQToZ7FMVenu7i5KVw4XrLUVZ4FUlVQqxX777edurCNAZagTmOhJ2b24pUFw1DqlbPOqPZR6zGaz7Nq1K/9/DCaHPM9jypQpJJNJd3MdAQbHvMYGpqZSg0/8oeGLVd7u6R0wWB3OdKi1ls7Ozvz7DkS06LmZM2cyd+5cd3MdARh0Vv+X6dNprCAFmtfkKD1+bkAjHM7y6J6eniICVEKs1tZWpk6d6m6wI8Dgkn62ETzPDJrajC+Epf2RqwbKZDK0tbVVFARHJGlpaeHQQw91K8KOAANjv1SSQ010sFxlRt1rlXd7e0fsM+7atYuNGzcWGfhAxg8wbtw4Dj30UFcT5AgwMGaNG8chjY3B6XM6uAwyCD7QMYK7rqIMUyXBdvScMYaZM2e63WGOAANj+rhxTEokgr6elagFgS7f57WurhH9nB0dHfkU60AeIC6RFi5cyDHHHONusiNA/wOxvHEciURli+NRB+YehLXpzIh+1h07dtDZ2VmVpp86dSqLFy92N9oRoDwSwJHNTRjRqg6V6AFyI7xDYOvWrWzdunVQCRRHQ0MDBx98sAuEHQHKY/GkifxLYyNitfJmUgrvptNk7ciWw7388su88cYb1RE8keCoo45i4cKF7mY7AvTFZ5obaUwliJ3cy0DNlQXIYPlL2056qtigMlwS6M033xw0BiiNB+bPn89BBx3kbrYjQDFmNozjlCmTwQbtlvs7zK4UvVZ5qbNrxD+v7/usXr160JXgUtTX13PGGWe4G+4IUDwAR4xvZk5jA5Xm/qNXdVtYlRv51GImk+HZZ5+lq8rskzGGY489lqVLlzrLdwQIMDmV4owpk2jAUk25jgKb0mleb9u5Vz735s2b6ejoyMugwcoioucmTZrE6aefzrhx45z1OwLAAePqOWp8U2D8FcoJAbICb3T37LXPvXXrVtrb2yuOA+JS6dRTT3W1QY4AAS6aMY1ZCa9I2gwkeyIGdOWUpzp27bXP3d7ezksvvZSXNpGRV0KGWbNmcfLJJ7uGWbVOgCNaW1jaMp74wdQDzfp5Iii0+z6/b+/Yq5//D3/4Az09lXshVcVaSyqV4qKLLnLdImqZAA2JBGdMn8q8VHLQ2T963oaPvsKbPd10ZnN79TvceeedbNiwIb//uL+sUPScMSbvLQ488EBOO+20ml8Yq1kCHNrcxAnjm0l6hkrXfiNT6UX5Q/su3s1k9up38H2ftWvXDlrlWa5sWkQ477zzmDRpkiNAzX1pEc6aMplF9XWBZtZCzn8gIkSHMrbnfJ5NZ8mOghboK1eupKenp+pSZ1VlyZIlXHDBBTVdJl2T3/y4yZP45IQWNDpvV6SiM+2ig7Ff7ezmbzvaRsV3uffee6teD4gIUF9fz2c/+1kOPPBAR4BawaRUigumTWF2fYp4Z/9KJZC18FRPmm0juAlmIGzevJnVq1dX3YEikkSLFy/mtNNOcwSoFZw8awYfbmnuY/CDhYJRB5QtmQyPb9s2ar7Prl27uP/+++nt7R1SQOt5Hl/84hdZvny5I8BYx/vHN3PRxBaakh6qVDn7KyqGlV3drOnqHlXf66c//SmbNm3KS5tqGvOKCAsWLOBLX/pSTQbENUOApDFcOnMG721qCnd8acWzf/AaoTeX47cdXWzZy9mfUnR0dLBy5cqihlmVFMrFnz/ppJM455xzaq5EoiYIIMC58+dxwpSJJPPlzlXKBWNY193Lqra2Uff9crkc9957b75hVqlx92f88b5FjY2NfOELX+Dwww93BBhrWNjYwOUTW2gxlRt9H/Gglmd60vx9V+eo/I6rV6/mlVdeGVITrqiE4pBDDuHSSy+tqVaKY54AxhiuWzCfOQ31RUebVuI14htiNvdk+OW7W/FH6SHYq1ev5p577iGbzVYdDMdjho997GNceOGFNSOFxjQBjOdxw+IFfLylGVNFmlBjhhH9w+87Onl8R9uo/r6/+c1vWLNmTdUEEJH8Ylh9fT3nnXcep556qiPAvo6PtrZwbut4klXK/fiKsAA7rc9TO9vJWTuqv++mTZv43e9+Ry6XG5IXiB6nTJnC17/+dZYtW+YIsK/i6NYWvjtvP1qSqeDmSnX6XyC/UvxCT4aHd7aP+u9sreWRRx5h7dq1ZSXOYMYf/3nRokVce+21Y/5wjTFJgPc0jOO6/eewqKkRJejyUM18KLHB2aFw9+YtbB0lK7+D4bHHHuPpp58mm83mSVGpB4hnhqy1HHXUUVx33XW0tLQ4AuwrOGD8eH6yYB7LWppAFaOKyOAb3MtYBCLwt527eHxn+6gofKsUN9xwA6tXry7K8FQaA0Q/Q7BK/OlPf5qbbrppzJZNjykCTGxs5NsH7M/SCS2F+v0h3LhIMvX6yrff3syG7u59ahzWr1/PAw88MKQiuVLU1dVx+umnc/vtt9PQ0OAIMFoxddw4bp8/l9OaGgLD340ZWwBrDA9tb+O5UZ75KYdsNsudd97Jq6++2q/Or2YyaGxs5Oyzz+amm26ivr7eEWC0YdHECdx80IGc1NJMwgR63xPBq0L2RDl/C2AMb3f38u233yE9yjM/A2WEbr75Ztra2oZ0QEd891jkCc4880yuv/56mpubHQFGCw5tbuJ7+83iU81NJDzT76mN1U178PPtbby8l/f87i4eeughnnjiid16jzhxGhsbOffcc7nqqquYPHmyI8DexvLxTXx//jyOb23Go7qmtuVkT3AJz3f3cuu7W/epwLccduzYwfXXX8/bb7+920GsiGCtpaGhgYsvvpgf/vCHTJs2zRFgr0DgE5Mm8r0F8/lAa3PxoXXVTfTF/T9F2JrJcM36N1m/F1ueDCdefPFFbr/99qJzi621VcUE8YM2VBXP8zjppJO44447OPLII/fpDNE+R4CpjY1cMGsmNx8wl6Xjm+LmO6Qvo7HHjLX8qq2DP7W1MVaQTqf58Y9/zJNPPpk3/OhxKEVznuflD+A+8cQTueaaazj55JNJDXKy5mhFYl/6sC3JJFfNm8PpzU1Mrktgww3t8SLPqIyh0jlJQusXgVcyOa59azMdubF1lNDmzZu57bbbWLJkCbNmzRpSmUR/7VY++MEPMmfOHGbPns1dd92VP8HSeYDhVTwc1NjAPQcfxPkTWpiUSuBrvwe1Vy2DRJT2nM93Nmxkw65djEU8/PDD/OQnPyGbzWKM6bMfoNJAOJJC0e+pKvPnz+eb3/wm3/nOd5gxY4YjwLDO+okEF86fx+OHLOH48Q14RvLtScxuZHziXqJbhR9tfof/3LwFZWyit7eXW265hYceeqjIqK21FXuEuGyK/46qMmHCBC644AKefvppPnfmmfvMesGoJYAAB7eM55YF87hm1jSm1iWxwc7c6ssaymj+SCpZ4E+7urjqzbcZ69i2bRsXX3wxq1atKpI2lQbFkdeIfs8YE2hHkXwyYf78+dxww41c+fWrmL3fHEeAoWBiIsGHpk/j3kULOHPGVOqMkLHgM4StjAOxAHi5q4cr3nyL3lyOWsCGDRu47rrr2LJly5CzNwP9Xg5l6swZXP4/L+fnDzzAKaedRktrqyNApTh59mx+tGQh9yzYn/3H1dFt/UDvSx/bHfLMH+yKN2zsTXP+a2t4cft2agkrVqzgW9/6Fj09Pf0ac3UZIs3/GfROVXKeYenSw7ntx3dy4w9u4YijPuCyQANh/+Zm/m3WDD41YTwz6+roVUtv6Go9CZiqMe1ezfbG+OssYMSwpTfNjZu38cJe7PG/t6Cq3HrrrcyePZtLLrmEurq6IoOv9uilsGlMn8kpo9Dc0so5Z57N0qVHcM/Pf87dP/oPNr+1yXmAeJB7xdy5rDhoEWdPbKU5maTTWvzQ1OM1OnY3PECcCL3ZLN/fvpOfvPXWiJ/wOJpw9dVXc8cddxQZfLkgtxpPEG0kUoIrp9CjypwFC7n08v/FLx95lAsvuYyW1gm1TYBZrRO5YM4c7jnkvZw/cyoz65KI5+FHs7wKIoUPqGWuodyiTutzy/Z2vr9hI92+Ty2jp6eHm266iUcffbTfDE+1k0ukMIullOCrkqhLMX/JIi7/969x9wMrOPv8C5k+c1btSCBPhOZEglOmT+OsadOYk0pRFyQRSIds9KBwVpf0VZrxFGi1JMip5cH2Lm58Yz0do6y51d4Miq+44gqSyST/+q//mj81pmIZFLsJeQ+tsadE8MMZyypkFepaJnLEfz+aQw99H2eddQ7/cdsP+d1Dv6araxd2hCclD/jGHmeZGJZNmsKp02fwv+fux0cnTmRCIoEBrAQDZQiI4IWEiDoxx41cKN7ZNVBH50KsEB58rcqtOzr42pp1bEvvWeNPJBIcffTRLFu2jGQyOeT3yeVy3HfffaxZs2aPft533nmHv/zlL8yfP58FCxb0a/hF/25jgyzBKFsVfBFUgr6TGsYGRLJIBWuD11mrkKhn4rRZHHPcxzjmhJNpmTCJXLaXru4eMr0jE5vtQQ8gTEwlef/kmRzdmOSo8eOZnEzhCVgD1mpRW3Ibfpho/3q8SC1OgnKBcH/uOJrFulW5e8dOvrHmDXbEisIcCnj11Vf56le/iqpy3HHHkUwmB84ESWz8VVCJJjMNPbUU9lcELgVVyZ/FYBF8X7EKXrKexUsOZv/58znplE/z/HPP8MdHH+Gvzz5BR/vOfYsARoTDx7dwYFMTH5wwkYPr6mhJJvAJ8vi+gtHgdXEDN1GGhuLNKSZm/VomHjDlMkKhHxYjdKVz3NXRyddeX8uuGsn1DxUvvfQSV155JQDHH398Xg6VrQMSkFDf2/z90EIorOFPKvgQ1G2F/lhVUSv5w0lyvgZ7sKln7rz3sP+8g/jIsSfxt//6M3989NesW/s6q55/ZnQToCmZ5COTJnPw+FYOq69jWjJBQyKFj9ITzur50gWN2o4ERu7FZvXI6DUKpkq8QTwWMCVxQX7mFxAx7MzmuG3nLq5Zu44uZ/wV4YUXXuCKK66gra2NM844g1QqVRwgRydSBszAhoYenbRQmJwKGbzo5lmNyikEG95xa6N+RIK1kAu4QNOEaRz9kU/yvv92JG+uX8cLq/7K2tde4fcP3UdHe9voI8AJ06ZzwZTJtHpJ8DyySpjHDwzcG0Cy2IgUkcFLzHWWGLopkUNSQgaD4quwI5Phjm1tXP/P9XTVeLanWrzyyitcdtll5HI5zjjjDBoaGmJd8gqaPn8XSrx53PDzKezQsKMLW0h2RMZvIw+BBE3IfGgYP5X3HDqVgw5eDpmdpDM9/GbFT3drz/ee8QB+jpSXpAuDseQXr6QkKpUyAyUxt2opk/oskUFxyROf/Y0qGMPWdJaL1q3n4R07SPvWWfQQsG3bNr785S+zdu1aLr/8clpbW4sXy0IPHQS3USBcmM3z99PGZv3wRkY/F9y5hImP0NPY4J76GGzOkraCWMuUya00Nw9vWcWwrQNYkWJHqIooGBtImnIFbDY2S0SGnm9norF/E2I6s3hhLD4r5YCVnd2c+sqr/HLrNmf8u4muri5uuOEGvvKVr7Bu3boiAsTvpV80w2vhHhW22oUHkmhwq2LGryqFSc4Kkr8MqA9kQXrJkSGXg5ya0UkADb+MRRHRfBYgMl5bJk1ZZOQUSx8tI5mi98lFAXUke8TQ4/v8v+3tnLVuA3/e1emsd5iQy+W4++67Oe+883juueeCQzhC7Z8L5aYioU0LiAfRhKWF8giRQhYoT5SYqrI2eF6j9wu1Uv78Y7XB/6H+6CSA5P8MFz5Cg9b4YxFZitPJcQ1po+I3Lfwc6chcTFMKkAI29vZy5fpNfObV11k7hrYzjiYSPPHEE5x44on87Gc/o7urK1jgsopvbXjvAsO1tiQQ1kAG+X7hvtvQ+KPHvD2E6wc2L6YEURN6A8mvOYxOD1A6y2tRRjJYCbShcfd9GapBijQ+IPngKSKBhLl9ICmCqPJ8b4aLN7zNzZveRq2TPHsSO3bs4MILL+Tqq7/Nxjc3UhceMm6x+EBONFjjKTmnLEp3qgXrR9Ines6GlwbPhzc8vm9ZVbEo1hbpqtFFgHwKskTiEAY2cS9Q2o3Blv6eFBNIY+XQIkK9COlsljve3cGpL7zCr995x1nnCCGdTnPDDddzysknc98Dv8AjWOn3VcP7GEoZG8z+akPDt7H4QGOS2YayR+NZoUKrdi3VycjoJEDBoLUoK1C0f0vKxw6UyQjZEg9hFBJhqvSZzi6+tHEz31j3Bu/sI12bxxr+9rdVnHPm57jiq//O66+vxvP9YCU/6jwRM/4g4yNFMUAwI4bCWQsNbYJYoPiUS41JJdSOTgIUfVAKTA8WSjQciFDKlGZ+YsFQJHdECjo/ytdmrPK9t97h315by883bqI9bAHusHeQyWT40a3f5+zPnMGDDz5IuqcbExl23hbIxwFReTtR3j9MhyqFtYDSdi2aP882sCFERi8BbLgsnpdq0jfQzUshLU5x2lgcoQLpoJSQ+rCm/MGtbZy24S2uf2MDazu7xuzm9X0NPd3dvPj3v/M/Pv95zj3rHJ5/+mn8TC/1nmAklDg2lumxmieDxJ7TWFxgrS2OAaK/o/mV4+HCMNYCRYvfoTNTRWPFbhoudETRvJaRQpHxJ4E6EXK+z8ruXu5p72DFxo2unGEUo6uzk1+vWMEzTz7FOeefz6dP/wzzDlxMfSpJby+oDezBV1uIE6KJ0xYCRLUaiwNC9SDh76MYGaUEUGKZKiIJE2gZk/8qUlzCHM8USfBsCiGby/FSdxe/2t7Gkzt2sqG3Z9SezuhQkinatpVb/s/1/HbFCk7/3Dl8/OTTWLBoIYjQk7GxFGgsFkDzHiAe+Fm1AWHUoqLkfJ/cqPUANtAyajQvbQyEJ7QUCvu1JG1qwislhrT1+Wt7F1+VZTcAAARLSURBVH9KZ3hww3o2ZbLgxM4+B2sta15/jRuvvZo/Pv4Yp5z+WY446mjm7j+XHEky2TCWtZEd2CDNiWAxBEnPaD3JhqXzSjaTwc+NVg8QZn1Eww0RGooikbBmBHwbtDGMKja9MLuTU2V1VyePdXTyx+3bebWzw1nRWAiS0708++QfWPncUxzz0Y/zwWOOZenyY9l/3nxEhWyk+y3BZhoNVpbzEihfNh1EiLlcrmyFwCiJAYq3K/oqSNjFzUMxmLw0IvQMO63lta5uHmrfyUs7tvFmbxrrZvwxh1w2y+9/+0uefuIxZsz8Acd/8nQ+evwnmDX3ABqaWhAM6it+WOhiw1WzKHCO1pKCVOrwxoHDRwAtrvQs/E2iXgEYUbIW2vwcqzraeSSdZeXmt/B9F9zWArq7Olm35lVuvembrLjvbpYdeQwnnHg6CxYsZnzrJJJeEiM5ctYG6XLr50t+g9oiW6giHY1BsI1VfRoTeQNLVi3tVlnXuYu/96Z5eMsWduWy9Lg6/QExVk9mBNi86Q1+ef9dPP67FcyZu5DjTvgU7zvsMGbtP4/GpmaMSYKS3zaJGKyNvMQoJEAkfTwJJE/az7HTWrYCj721idVW+ceObc54q5lUqm5QtW9B1dLR3sbLLz7Pyy8+T0NjC4ct/QDHHP8JFhywmAnTZtHYPJFksg5B8Dwfm8kOuh98rxAgK9CW7aVDhbdUWNfezp92bmVjd+0tWqkqvu+TzWZJp9OoatGBc5X8vud5ZDKZig+6HhsSqZ2n//gQzzzxCMYYjvrwiSx57yHMnX8g+82ew8yp01A/y3BmxIeNTLPHNTDJ81jb00uX70oUDj74YBYvXlxV+/E4jDH5MuQ2V+LNnHkLmTF9Oq+9+jLtO3eMPgI4OOyLMG4IHBwBHBwcARwcHAEcHBwBHBwcARwcHAEcHBwBHBwcARwcHAEcHMYgAVwphIMjgINDDcIawLVSdqhVdBpgsxsHhxrFZgOsdePgUKNYa4BVbhwcahSrDPCcGweHGsVzBlgHZNxYONQYMsA6IWjQth1ocWPiUENoByYZgrPm7nLj4VBjuAvw4+dPuFYODrWEJJCLaoFywP1uTBxqBPeHNl90atcyXEbIoTawHPgzFFeD/hn4hRsbhzGOX0TGX+oBIDh3egvQ6sbJYQxiJzCNWNq/dD9ABrjEjZPDGMUllKx5eWVe9AIwFXi/Gy+HMYQfAteW/mN/XVs94B/AQjduDmMAq4ElBGteRehvS6QPLAKed2PnsI/j+dCWy57GUknf7tedJ3DYh2f+RQO9oJJN8UtC/eTgsK9p/iXD+YafB9rIn+ntLneNyqsttNU9ghTwgBtkd43S64HQRvc4lgH3uQF31yi57gttcsSRAL5LsMKWdjfCXSN0pUOb+y67edDjcJ3B6QEHhNdy4DBgATADaMJ1oHMYGixB257NBM0bVhEUbK4Lr90+aPr/A2ej08zb6Y2zAAAAAElFTkSuQmCC\">\n\n        <meta name=\"mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"theme-color\" content=\"#363636\">\n        <link rel=\"manifest\" href=\"manifest.webapp\">\n\n        <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n        <link rel=\"apple-touch-icon\" sizes=\"512x512\" href=\"images/logo-icon512.png\">\n\n        <meta property=\"og:type\"         content=\"website\">\n        <meta property=\"og:url\"          content=\"https://javatari.org\">\n        <meta property=\"og:title\"        content=\"Javatari - The online Atari 2600 emulator\">\n        <meta property=\"og:description\"  content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta property=\"og:image\"        content=\"https://javatari.org/images/javatari-logo-large.png\">\n\n        <meta name=\"twitter:card\"        content=\"summary\">\n        <meta name=\"twitter:site\"        content=\"@ppeccin\">\n        <meta name=\"twitter:creator\"     content=\"@ppeccin\">\n        <meta name=\"twitter:url\"         content=\"https://javatari.org\">\n        <meta name=\"twitter:title\"       content=\"Javatari - The online Atari 2600 emulator\">\n        <meta name=\"twitter:description\" content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta name=\"twitter:image\"       content=\"https://javatari.org/images/javatari-logo-large.png\">\n\n        <script>\n\n            JavatariFullScreenSetup = { apply: function fullScreenSetup() { /* Setup Basic full-screen CSS*/ if (!this.cssApplied) { var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = this.css; document.head.appendChild(style); this.cssApplied = true; } /* Apply Standalone mode full-screen basic styles to html and body immediately if needed*/ document.documentElement.classList.toggle(\"jt-full-screen\", this.shouldStartInFullScreen()); }, shouldStartInFullScreen: function () { return window.Javatari ? Javatari.SCREEN_FULLSCREEN_MODE === 1 || (Javatari.SCREEN_FULLSCREEN_MODE === -1 && this.isBrowserStandaloneMode()) : this.isBrowserStandaloneMode(); }, isBrowserStandaloneMode: function () { return navigator.standalone || window.matchMedia(\"(display-mode: standalone)\").matches; }, css: '' + 'html.jt-full-screen, html.jt-full-screen body {' + '   background: black;' + '}' + 'html.jt-full-screen .jt-full-screen-hidden {' + '   display: none;' + '}' + 'html:not(.jt-full-screen) .jt-full-screen-only {' + '   display: none;' + '}'}; JavatariFullScreenSetup.apply();\n\n            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-31008590-1', 'auto'); ga('send', 'pageview');\n\n            function donate() { alert(\"To support the project, please send Paypal donations to:\\n\\nppeccin@gmail.com\\n\\nOr contact via email. Many thanks!\\n\") }\n\n        </script>\n\n        <style>\n            html, body {\n                position: relative;\n                margin: 0;\n                padding: 0;\n                font: normal 16px sans-serif;\n                color: hsl(0, 0%, 10%);\n                -webkit-user-select: none;\n                -moz-user-select: none;\n                -ms-user-select: none;\n                user-select: none;\n                -webkit-touch-callout: none;\n                touch-callout: none;\n                -webkit-tap-highlight-color: transparent;\n                tap-highlight-color: transparent;\n                -webkit-text-size-adjust: none;\n                -moz-text-size-adjust: none;\n                text-size-adjust: none;\n            }\n            html {\n                height: 100%;\n                background: hsl(0, 0%, 97%);\n            }\n            body {\n                min-height: 100%;\n                background: hsl(0, 0%, 97%);\n            }\n            .container {\n                max-width: 660px;\n                margin: 0 auto;\n                padding: 0 10px;\n            }\n            @media only screen and (orientation: landscape) and (max-device-width: 767px) {\n                .container { max-width: 75%; }\n            }\n            #topbar {\n                height: 51px;\n                color: hsl(0, 0%, 95%);\n                overflow: hidden;\n                background: hsl(0, 0%, 21%);\n                box-shadow: 0 0 7px hsl(0, 0%, 20%);\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #logo {\n                float: left;\n                width: 182px;\n                height: 32px;\n                margin: 10px 4px 0 0;\n                background-size: 182px 32px;\n                background-repeat: no-repeat;\n            }\n            #desc span {\n                float: right;\n                margin: 23px 10px 0 0;\n                font-size: 15px;\n                line-height: 15px;\n                font-weight: 600;\n            }\n            .social {\n                display: block;\n                float: right;\n                width: 26px;\n                height: 26px;\n                margin: 13px 0 0 8px;\n                background-size: 26px 26px;\n                background-repeat: no-repeat;\n            }\n            @media only screen and (max-width: 440px) {\n                #desc { display: none; }\n            }\n            #javatari {\n                margin-top: 20px;\n                padding: 0 10px;\n                text-align: center;\n            }\n            #javatari-screen {\n                box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\n            }\n            .info {\n                display: none;\n                height: 38px;\n                padding-top: 14px;\n                font-size: 18px;\n                line-height: 25px;\n                text-align: center;\n            }\n            @media only screen and (max-width: 499px) {\n                #info-thin { display: block; }\n            }\n            @media only screen and (min-width: 500px) {\n                #info-wide { display: block; }\n            }\n            #footer-space {\n                margin-top: 24px;\n                height: 76px;\n            }\n            #footer {\n                position: absolute;\n                bottom: 0;\n                left: 0; right: 0;\n                height: 70px;\n                background: hsla(0, 0%, 0%, .15);\n                overflow: hidden;\n                font-size: 14px;\n                line-height: 12px;\n                white-space: nowrap;\n                text-overflow: ellipsis;\n            }\n            #footer .container {\n                padding: 2px 20px 0;\n                box-sizing: border-box;\n            }\n            a {\n                font-weight: 600;\n                text-decoration: none;\n                color: hsl(214, 100%, 43%);\n            }\n            a:hover {\n                color: #0050ba;\n                text-shadow: 0 0 2px hsl(197, 100%, 47%);\n            }\n            .toright {\n                float: right;\n            }\n            #donate {\n                display: block;\n                position: relative;\n                margin: 0 auto;\n                padding: 7px 12px;\n                color: white;\n                font-size: 14px;\n                font-weight: 600;\n                background-color: hsl(0, 66%, 45%);\n                border: none;\n                border-radius: 5px;\n                box-shadow: 1px 1px 4px rgba(0, 0, 0, .55);\n                outline: none;\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #donate:hover {\n                background-color: hsl(0, 90%, 56%);\n                box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, .55);\n            }\n        </style>\n\n    </head>\n\n    <body translate=\"no\" class=\"notranslate\">\n\n        <script>\n\n// Javatari version 5.0.4\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Main Emulator parameters.\n// May be overridden dynamically by URL query parameters, if ALLOW_URL_PARAMETERS = true.\n\nJavatari = {\n\n    PRESETS:                        \"\",                         // Configuration Presets to apply. See Presets Configuration\n\n    // Full or relative URL of Media files to load\n    CARTRIDGE_URL:                  \"\",\n    AUTODETECT_URL:                 \"\",\n    STATE_URL:                      \"\",\n\n    // Forcing ROM formats\n    CARTRIDGE_FORMAT:               \"\",                         // 4K, F8, F4, FE, AR, etc...\n\n    // NetPlay\n    NETPLAY_JOIN:                   \"\",                         // Join NetPlay! Session automatically\n    NETPLAY_NICK:                   \"\",                         // NetPlay! Nickname\n\n    // General configuration\n    AUTO_START:                     true,\n    AUTO_POWER_ON_DELAY:            1200,                       // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON\n    CARTRIDGE_SHOW_RECENT:          true,\n    CARTRIDGE_CHANGE_DISABLED:      false,\n    CARTRIDGE_LABEL_COLORS:         \"\",                         // Space-separated colors for Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n    SCREEN_RESIZE_DISABLED:         false,\n    SCREEN_CONSOLE_PANEL_DISABLED:  false,\n    SCREEN_ELEMENT_ID:              \"javatari-screen\",\n    CONSOLE_PANEL_ELEMENT_ID:       -1,                         // -1: auto. Don't change! :-)\n    SCREEN_FULLSCREEN_MODE:         -1,                         // -2: disabled; -1: auto; 0: off; 1: on\n    SCREEN_CRT_MODE:                0,                          // -1: auto; 0: off; 1: on\n    SCREEN_FILTER_MODE:             -3,                         // -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level\n    SCREEN_DEFAULT_SCALE:           -1,                         // -1: auto; 0.5..N in 0.1 steps: scale\n    SCREEN_DEFAULT_ASPECT:          1,                          // in 0.1 steps\n    SCREEN_CANVAS_SIZE:             2,                          // Internal canvas size factor. Don't change! :-)\n    SCREEN_CONTROL_BAR:             1,                          // 0: on hover; 1: always\n    SCREEN_FORCE_HOST_NATIVE_FPS:   -1,                         // -1: auto. Don't change! :-)\n    SCREEN_VSYNCH_MODE:             -2,                         // -2: user set (default on); -1: disabled; 0: off; 1: on\n    AUDIO_MONITOR_BUFFER_BASE:      -3,                         // -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n    AUDIO_MONITOR_BUFFER_SIZE:      -1,                         // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size.     More buffer = more delay. Don't change! :-)\n    AUDIO_SIGNAL_BUFFER_RATIO:      2,                          // Internal Audio Signal buffer based on Monitor buffer\n    AUDIO_SIGNAL_ADD_FRAMES:        3,                          // Additional frames in internal Audio Signal buffer based on Monitor buffer\n    PADDLES_MODE:                   -1,                         // -1: auto; 0: off; 1: on\n    TOUCH_MODE:                     -1,                         // -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n\n    IMAGES_PATH:                    window.JAVATARI_IMAGES_PATH || \"images/\",\n    PAGE_BACK_CSS:                  \"\",                         // CSS to modify page background color. Applied to the body element\n\n    SERVER_ADDRESS:                 \"webmsx.azurewebsites.net/\",\n    SERVER_KEEPALIVE:               0,\n\n    RESET:                          0,                          // if value = 1 clear all saved data on the client\n    ALLOW_URL_PARAMETERS:           true                        // Allows user to override any of these parameters via URL query parameters\n\n};\n\nJavatari.PRESETS_CONFIG = { };                                  // No built-in Presets for now\n\njt = window.jt || {};                                           // Namespace for all classes and objects\n\nfunction onUpdateReady(){alert(\"A new version is available!\\nJavatari will restart...\"),window.applicationCache.swapCache(),window.location.reload()}JavatariFullScreenSetup={apply:function(){if(!this.cssApplied){var a=document.createElement(\"style\");a.type=\"text/css\",a.innerHTML=this.css,document.head.appendChild(a),this.cssApplied=!0}document.documentElement.classList.toggle(\"jt-full-screen\",this.shouldStartInFullScreen())},shouldStartInFullScreen:function(){return window.Javatari?1===Javatari.SCREEN_FULLSCREEN_MODE||-1===Javatari.SCREEN_FULLSCREEN_MODE&&this.isBrowserStandaloneMode():this.isBrowserStandaloneMode()},isBrowserStandaloneMode:function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},css:\"html.jt-full-screen, html.jt-full-screen body {   background: black;}html.jt-full-screen .jt-full-screen-hidden {   display: none;}html:not(.jt-full-screen) .jt-full-screen-only {   display: none;}\"},JavatariFullScreenSetup.apply(),jt.Util=new function(){\"use strict\";function a(a,b){return a.name<b.name?-1:a.name>b.name?1:0}function b(a){return a.stopPropagation(),a.cancelable&&a.preventDefault(),!1}this.logs=[],this.log=function(a){var b=[\">> jt:\"];Array.prototype.push.apply(b,arguments),console.log.apply(console,b)},this.warning=function(a){var b=[\">> jt Warning:\"];Array.prototype.push.apply(b,arguments),console.warn.apply(console,b)},this.error=function(a){var b=[\">> jt Error:\"];Array.prototype.push.apply(b,arguments),console.error.apply(console,b)},this.message=function(a){console.info(a),alert(a)},this.asNormalArray=function(a){return a instanceof Array?a:this.arrayCopy(a,0,new Array(a.length))},this.arrayFill=function(a,b,c,d){if(a.fill)return a.fill(b,c,d);void 0===c&&(c=0);for(var e=(void 0===d?a.length:d)-1;e>=c;e-=1)a[e]=b;return a},this.arrayFillSegment=function(a,b,c,d){for(var e=c;e-- >b;)a[e]=d;return a},this.arrayCopy=function(a,b,c,d,e){d=d||0;for(var f=e?b+e:a.length;b<f;)c[d++]=a[b++];return c},this.arrayAdd=function(a,b){return a[a.length]=b,a},this.arrayRemoveAllElement=function(a,b){for(var c;(c=a.indexOf(b))>=0;)a.splice(c,1);return a},this.arraysConcatAll=function(a){for(var b=0,c=0;c<a.length;++c)b+=a[c].length;var d=new a[0].constructor(b),e=0;for(c=0;c<a.length;++c)this.arrayCopy(a[c],0,d,e),e+=a[c].length;return d},this.arrayRemove=function(a,b){var c=a.indexOf(b);c<0||a.splice(c,1)},this.arraysEqual=function(a,b){var c=a.length;if(c!==b.length)return!1;for(;c--;)if(a[c]!==b[c])return!1;return!0},this.reverseInt8=function(a){return(1&a)<<7|(2&a)<<5|(4&a)<<3|(8&a)<<1|(16&a)>>1|(32&a)>>3|(64&a)>>5|(128&a)>>7},this.int8BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e]);return d},this.byteStringToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0;e<c;e+=1)d[e]=255&a.charCodeAt(e);return d}},this.int32BitArrayToByteString=function(a,b,c){if(null===a||void 0==a)return a;void 0===b&&(b=0),void 0===c&&(c=a.length-b);for(var d=\"\",e=b,f=b+c;e<f;e+=1)d+=String.fromCharCode(255&a[e])+String.fromCharCode(a[e]>>8&255)+String.fromCharCode(a[e]>>16&255)+String.fromCharCode(a[e]>>24&255);return d},this.byteStringToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){for(var c=a.length/4|0,d=b&&b.length===c?b:new(b?b.constructor:Array)(c),e=0,f=0;e<c;e+=1,f+=4)d[e]=255&a.charCodeAt(f)|(255&a.charCodeAt(f+1))<<8|(255&a.charCodeAt(f+2))<<16|(255&a.charCodeAt(f+3))<<24;return d}},this.storeInt8BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int8BitArrayToByteString(a))},this.restoreStringBase64ToInt8BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt8BitArray(atob(a),b)},this.compressInt8BitArrayToStringBase64=function(a,b){return null===a||void 0===a?a:0===a.length?\"\":b<a.length?this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a.slice(0,b))):this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToInt8BitArray=function(a,b,c){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a){if(\"\"==a)return[];var d=JSZip.compressions.DEFLATE.uncompress(atob(a));return b&&(c||b.length===d.length)?this.arrayCopy(d,0,b):this.arrayCopy(d,0,new(b?b.constructor:Array)(d.length))}},this.storeInt32BitArrayToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?\"\":btoa(this.int32BitArrayToByteString(a))},this.restoreStringBase64ToInt32BitArray=function(a,b){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?[]:this.byteStringToInt32BitArray(atob(a),b)},this.compressStringToStringBase64=function(a){return null===a||void 0===a?a:0===a.length?a:this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(a))},this.uncompressStringBase64ToString=function(a){if(null===a||void 0===a)return a;if(\"null\"==a)return null;if(\"undefined\"!=a)return\"\"==a?a:this.int8BitArrayToByteString(JSZip.compressions.DEFLATE.uncompress(atob(a)))},this.toHex2=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();return a>=0&&b.length%2?\"0\"+b:b},this.toHex4=function(a){if(null===a||void 0===a)return a;var b=a.toString(16).toUpperCase();if(a<0)return b;switch(b.length){case 4:return b;case 3:return\"0\"+b;case 2:return\"00\"+b;case 1:return\"000\"+b;default:return b}},this.escapeHtml=function(a){return a.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#039;\").replace(/\\//g,\"&#047;\").replace(/\\?/g,\"&#063;\").replace(/\\-/g,\"&#045;\").replace(/\\|/g,\"&#0124;\")},this.arrayFind=function(a,b){if(a.find)return a.find(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return a[c]},this.arrayFindIndex=function(a,b){if(a.findIndex)return a.findIndex(b);for(var c=0,d=a.length;c<d;++c)if(b(a[c],c,a))return c;return-1},this.arrayIndexOfSubArray=function(a,b,c,d){var e=b.length,f=a.length,g=d||1;a:for(var h=c;h>=0&&h<f;h+=g){for(var i=0;i<e;i+=1)if(a[h+i]!==b[i])continue a;return h}return-1},this.stringCountOccurrences=function(a,b){for(var c=0,d=0,e=a.length;d<e;++d)a[d]==b&&++c;return c},this.stringStartsWith=function(a,b){return a.startsWith?a.startsWith(b):a.substr(0,b.length)===b},this.stringEndsWith=function(a,b){return a.endsWith?a.endsWith(b):a.substr(a.length-b.length)===b},this.checkContentIsZIP=function(a){if(a&&80===a[0]&&75===a[1])try{return new JSZip(a)}catch(a){}return null},this.getZIPFilesSorted=function(b){var c=b.file(/.+/);return c.sort(a),c},this.checkContentIsGZIP=function(a){if(!a||31!==a[0]||139!==a[1]||8!==a[2])return null;try{var b=a[3],c=2&b,d=4&b,e=8&b,f=16&b,g=10;if(d){var h=a[g++]|a[g++]<<8;g+=h}if(e)for(;0!==a[g++];);if(f)for(;0!==a[g++];);return c&&(g+=2),JSZip.compressions.DEFLATE.uncompress(a.slice(g,a.length-8))}catch(a){return null}},this.leafFilename=function(a){return((a&&a.indexOf(\"/\")>=0?a.split(\"/\").pop():a)||\"\").trim()},this.leafFilenameNoExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?b:b.substr(0,c).trim()},this.leafFilenameOnlyExtension=function(a){var b=this.leafFilename(a),c=b.lastIndexOf(\".\");return c<=0?\"\":b.substr(c+1).trim()},this.dump=function(a,b,c,d){var e=\"\",f=b||0;d=d||1;for(var g=0;g<d;g++){for(var h=0;h<c;h++){var i=a[f++];e+=void 0!=i?i.toString(16,2)+\" \":\"? \"}e+=\"   \"}console.log(e)},this.browserInfo=function(){if(this.browserInfoAvailable)return this.browserInfoAvailable;var a,b=navigator.userAgent,c=b.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[]\n;if(/trident/i.test(c[1]))return a=/\\brv[ :]+(\\d+)/g.exec(b)||[],this.browserInfoAvailable={name:\"IE\",version:a[1]||\"\"};if(\"Chrome\"===c[1]&&null!=(a=b.match(/\\bOPR\\/(\\d+)/)))return this.browserInfoAvailable={name:\"OPERA\",version:a[1]};c=c[2]?[c[1],c[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!=(a=b.match(/version\\/(\\d+)/i))&&c.splice(1,1,a[1]);var d=c[0].toUpperCase();return this.browserInfoAvailable={name:this.isIOSDevice()||\"NETSCAPE\"===d?\"SAFARI\":d,version:c[1]}},this.userLanguage=function(){return(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage||\"en-US\").trim()},this.browserCurrentURL=function(){return window.location.origin+window.location.pathname},this.isOfficialHomepage=function(){var a=window.location;return a&&\"javatari.org\"===a.hostname.toLowerCase()&&(\"\"===a.port||\"80\"===a.port)},this.isTouchDevice=function(){return\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},this.isMobileDevice=function(){return this.isTouchDevice()&&/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)},this.isIOSDevice=function(){return/ipad|iphone|ipod/i.test(navigator.userAgent)},this.isBrowserStandaloneMode=function(){return navigator.standalone||window.matchMedia(\"(display-mode: standalone)\").matches},this.onTapOrMouseDown=function(a,b){this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",b)},this.onTapOrMouseDownWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mousedown\":\"mousedown\",d)},this.onTapOrMouseUpWithBlock=function(a,c){function d(a){return c(a),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart mouseup\":\"mouseup\",d)},this.onTapOrMouseDownWithBlockUIG=function(a,c){function d(a){if(\"touchend\"===a.type&&!a.target.jtNeedsUIG)return b(a);var d=\"touchstart\"===a.type&&a.target.jtNeedsUIG,e=\"touchend\"===a.type;return c(a,d,e),b(a)}this.addEventsListener(a,this.isTouchDevice()?\"touchstart touchend mousedown\":\"mousedown\",d)},this.blockEvent=b,this.addEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.addEventListener(b[e],c,d)},this.removeEventsListener=function(a,b,c,d){b=b.split(\" \");for(var e=0;e<b.length;++e)b[e]&&a.removeEventListener(b[e],c,d)},this.insertCSS=function(a){var b=document.createElement(\"style\");b.type=\"text/css\",b.innerHTML=a,document.head.appendChild(b)},this.scaleToFitParentHeight=function(a,b,c){var d=b.clientHeight-c-20,e=a.clientHeight,f=e<d?1:d/e;a.style.transform=\"translateY(-\"+(c/2|0)+\"px) scale(\"+f.toFixed(4)+\")\"},this.scaleToFitParentWidth=function(a,b,c){var d=b.clientWidth-(2*c|0),e=a.clientWidth,f=e<d?1:d/e,g=e*f|0,h=Math.floor((d-g)/2+c);a.style.left=h+\"px\",a.style.right=\"initial\",a.style.transform=\"scale(\"+f.toFixed(4)+\")\"},this.log2=function(a){return Math.log(a)/Math.log(2)},this.exp2=function(a){return Math.pow(2,a)},this.performanceNow=function(){return this.performanceNow.startOffset?Date.now()-this.performanceNow.startOffset:window.performance.now()}},window.performance&&window.performance.now||(jt.Util.performanceNow.startOffset=Date.now()),jt.MD5=function(a){\"use strict\";function b(a){var b=(a>>>0).toString(16);return\"00000000\".substr(0,8-b.length)+b}function c(a){for(var b=[],c=0;c<8;c++)b.push(255&a),a>>>=8;return b}function d(a,b){return a<<b&4294967295|a>>>32-b}function e(a,b,c){return a&b|~a&c}function f(a,b,c){return c&a|~c&b}function g(a,b,c){return a^b^c}function h(a,b,c){return b^(a|~c)}function i(a,b){return a[b+3]<<24|a[b+2]<<16|a[b+1]<<8|a[b]}function j(a){for(var b=[],c=0;c<a.length;c++)if(a.charCodeAt(c)<=127)b.push(a.charCodeAt(c));else for(var d=encodeURIComponent(a.charAt(c)).substr(1).split(\"%\"),e=0;e<d.length;e++)b.push(parseInt(d[e],16));return b}function k(a,c,d,e){for(var f=\"\",g=0,h=0,i=3;i>=0;i--)h=arguments[i],g=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=h,f+=b(g);return f}function l(a){for(var b=new Array(a.length),c=0;c<a.length;c++)b[c]=a[c];return b}function m(a,b){return 4294967295&a+b}var n=null,o=null;return\"string\"==typeof a?n=j(a):a.constructor==Array?0===a.length?n=a:\"string\"==typeof a[0]?n=function(a){for(var b=[],c=0;c<a.length;c++)b=b.concat(j(a[c]));return b}(a):\"number\"==typeof a[0]?n=a:o=typeof a[0]:\"undefined\"!=typeof ArrayBuffer?a instanceof ArrayBuffer?n=l(new Uint8Array(a)):a instanceof Uint8Array||a instanceof Int8Array?n=l(a):a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array||a instanceof Float32Array||a instanceof Float64Array?n=l(new Uint8Array(a.buffer)):o=typeof a:o=typeof a,o&&alert(\"MD5 type mismatch, cannot process \"+o),function(){function a(a,b,c,e){var f=v;v=u,u=t,t=m(t,d(m(s,m(a,m(b,c))),e)),s=f}var b=n.length;n.push(128);var j=n.length%64;if(j>56){for(var l=0;l<64-j;l++)n.push(0);j=n.length%64}for(l=0;l<56-j;l++)n.push(0);n=n.concat(c(8*b));var o=1732584193,p=4023233417,q=2562383102,r=271733878,s=0,t=0,u=0,v=0;for(l=0;l<n.length/64;l++){s=o,t=p,u=q,v=r;var w=64*l;a(e(t,u,v),3614090360,i(n,w),7),a(e(t,u,v),3905402710,i(n,w+4),12),a(e(t,u,v),606105819,i(n,w+8),17),a(e(t,u,v),3250441966,i(n,w+12),22),a(e(t,u,v),4118548399,i(n,w+16),7),a(e(t,u,v),1200080426,i(n,w+20),12),a(e(t,u,v),2821735955,i(n,w+24),17),a(e(t,u,v),4249261313,i(n,w+28),22),a(e(t,u,v),1770035416,i(n,w+32),7),a(e(t,u,v),2336552879,i(n,w+36),12),a(e(t,u,v),4294925233,i(n,w+40),17),a(e(t,u,v),2304563134,i(n,w+44),22),a(e(t,u,v),1804603682,i(n,w+48),7),a(e(t,u,v),4254626195,i(n,w+52),12),a(e(t,u,v),2792965006,i(n,w+56),17),a(e(t,u,v),1236535329,i(n,w+60),22),a(f(t,u,v),4129170786,i(n,w+4),5),a(f(t,u,v),3225465664,i(n,w+24),9),a(f(t,u,v),643717713,i(n,w+44),14),a(f(t,u,v),3921069994,i(n,w),20),a(f(t,u,v),3593408605,i(n,w+20),5),a(f(t,u,v),38016083,i(n,w+40),9),a(f(t,u,v),3634488961,i(n,w+60),14),a(f(t,u,v),3889429448,i(n,w+16),20),a(f(t,u,v),568446438,i(n,w+36),5),a(f(t,u,v),3275163606,i(n,w+56),9),a(f(t,u,v),4107603335,i(n,w+12),14),a(f(t,u,v),1163531501,i(n,w+32),20),a(f(t,u,v),2850285829,i(n,w+52),5),a(f(t,u,v),4243563512,i(n,w+8),9),a(f(t,u,v),1735328473,i(n,w+28),14),a(f(t,u,v),2368359562,i(n,w+48),20),a(g(t,u,v),4294588738,i(n,w+20),4),a(g(t,u,v),2272392833,i(n,w+32),11),a(g(t,u,v),1839030562,i(n,w+44),16),a(g(t,u,v),4259657740,i(n,w+56),23),a(g(t,u,v),2763975236,i(n,w+4),4),a(g(t,u,v),1272893353,i(n,w+16),11),a(g(t,u,v),4139469664,i(n,w+28),16),a(g(t,u,v),3200236656,i(n,w+40),23),a(g(t,u,v),681279174,i(n,w+52),4),a(g(t,u,v),3936430074,i(n,w),11),a(g(t,u,v),3572445317,i(n,w+12),16),a(g(t,u,v),76029189,i(n,w+24),23),a(g(t,u,v),3654602809,i(n,w+36),4),a(g(t,u,v),3873151461,i(n,w+48),11),a(g(t,u,v),530742520,i(n,w+60),16),a(g(t,u,v),3299628645,i(n,w+8),23),a(h(t,u,v),4096336452,i(n,w),6),a(h(t,u,v),1126891415,i(n,w+28),10),a(h(t,u,v),2878612391,i(n,w+56),15),a(h(t,u,v),4237533241,i(n,w+20),21),a(h(t,u,v),1700485571,i(n,w+48),6),a(h(t,u,v),2399980690,i(n,w+12),10),a(h(t,u,v),4293915773,i(n,w+40),15),a(h(t,u,v),2240044497,i(n,w+4),21),a(h(t,u,v),1873313359,i(n,w+32),6),a(h(t,u,v),4264355552,i(n,w+60),10),a(h(t,u,v),2734768916,i(n,w+24),15),a(h(t,u,v),1309151649,i(n,w+52),21),a(h(t,u,v),4149444226,i(n,w+16),6),a(h(t,u,v),3174756917,i(n,w+44),10),a(h(t,u,v),718787259,i(n,w+8),15),a(h(t,u,v),3951481745,i(n,w+36),21),o=m(o,s),p=m(p,t),q=m(q,u),r=m(r,v)}return k(r,q,p,o).toUpperCase()}()},function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={\nexports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c||a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\0\\0\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(void 0===a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);void 0===b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date(1980+(a>>25&127),(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\0\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}\n}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a);return\"string\"===d.getTypeOf(b)?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||void 0===b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&void 0===c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},!0!==a.base64||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||void 0===b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&!0!==c.optimizedBinaryString&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=void 0!==b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";return w+=\"\\n\\0\",w+=p||q?\"\\0\\b\":\"\\0\\0\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2),{fileRecord:f.LOCAL_FILE_HEADER+w+m+t,dirRecord:f.CENTRAL_FILE_HEADER+\"\u0014\\0\"+w+s(o.length,2)+\"\\0\\0\\0\\0\"+(!0===j?\"\u0010\\0\\0\\0\":\"\\0\\0\\0\\0\")+s(g,4)+m+t+o,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={\nappend:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=void 0!==a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(a){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;e.append(b),c.blob=0===e.getBlob(\"application/zip\").size}catch(a){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(128>(e=a[b++]))i[c++]=e;else if((f=g[e])>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length;f>c;){var g=j(a,Math.min(c+65536,f));b.push(k(e.uint8array?a.subarray(c,g):a.slice(c,g))),c=g}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(a){h=!1}if(!h){for(var i=\"\",k=0;k<a.length;k++)i+=String.fromCharCode(a[k]);return i}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(c){try{var b=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,d=new b;return d.append(a),d.getBlob(\"application/zip\")}catch(a){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b);return k[d][a](b)},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){if(!h[a.toLowerCase()])throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),\nthis.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44;d>0;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,-1===(a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR)))throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(null===(b=e.findCompression(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=!!(16&this.externalFileAttributes)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new l(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=function(a){this.options=h.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(0!==c)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};l.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?4:0,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{\nif(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),1!==(c=g.deflate(e,d))&&0!==c)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&4===d)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&1!==c);return 4!==d||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,0===c)},l.prototype.onData=function(a){this.chunks.push(a)},l.prototype.onEnd=function(a){0===a&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=l,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0==(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:!0===b?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),(c=f.inflate(l,i.Z_NO_FLUSH))!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296==(64512&c)&&h>f+1&&56320==(64512&(d=a.charCodeAt(f+1)))&&(c=65536+(c-55296<<10)+(d-56320),f++),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(128>(f=a[c++]))j[e++]=f;else if((g=h[f])>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128==(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do{e=e+b[d++]|0,f=f+e|0}while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(a,b,c,e){var f=d,g=e+c;a^=-1;for(var h=e;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var d=function(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}();b.exports=c},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ha?a.strstart-(a.w_size-ha):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ga,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do{if(c=b,\nj[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do{}while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ga-(m-f),f=m-ga,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}}while((b=l[b&k])>i&&0!=--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ha)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do{d=a.head[--b],a.head[b]=d>=g?d-g:0}while(--c);c=g,b=c;do{d=a.prev[--b],a.prev[b]=d>=g?d-g:0}while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=fa)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+fa-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<fa)););}while(a.lookahead<ha&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return qa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return qa;if(a.strstart-a.block_start>=a.w_size-ha&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):(a.strstart>a.block_start&&(h(a,!1),a.strm.avail_out),qa)}function o(a,b){for(var c,d;;){if(a.lookahead<ha){if(m(a),a.lookahead<ha&&b===H)return qa;if(0===a.lookahead)break}if(c=0,a.lookahead>=fa&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-ha&&(a.match_length=l(a,c)),a.match_length>=fa)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-fa),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=fa){a.match_length--;do{a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart}while(0!=--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=a.strstart<fa-1?a.strstart:fa-1,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function p(a,b){for(var c,d,e;;){if(a.lookahead<ha){if(m(a),a.lookahead<ha&&b===H)return qa;if(0===a.lookahead)break}if(c=0,a.lookahead>=fa&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=fa-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-ha&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===fa&&a.strstart-a.match_start>4096)&&(a.match_length=fa-1)),a.prev_length>=fa&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-fa,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-fa),a.lookahead-=a.prev_length-1,a.prev_length-=2;do{++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+fa-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart)}while(0!=--a.prev_length);if(a.match_available=0,a.match_length=fa-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return qa}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return qa}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<fa-1?a.strstart:fa-1,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ga){if(m(a),a.lookahead<=ga&&b===H)return qa;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=fa&&a.strstart>0&&(e=a.strstart-1,(d=g[e])===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ga;do{}while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ga-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=fa?(c=D._tr_tally(a,1,a.match_length-fa),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return qa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return qa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?sa:ta):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?qa:ra}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=fa-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*da),this.dyn_dtree=new C.Buf16(2*(2*ba+1)),this.bl_tree=new C.Buf16(2*(2*ca+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ea+1),this.heap=new C.Buf16(2*aa+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*aa+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?ja:oa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+fa-1)/fa),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}\nfunction y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===pa&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===ja)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ka):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,ua),h.status=oa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ia),m+=31-m%31,h.status=oa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ka)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=la)}else h.status=la;if(h.status===la)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ma)}else h.status=ma;if(h.status===ma)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=na)}else h.status=na;if(h.status===na&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=oa)):h.status=oa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===pa&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==pa){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===sa||o===ta)&&(h.status=pa),o===qa||o===sa)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ra&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==ja&&b!==ka&&b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa?d(a,O):(a.state=null,b===oa?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=286,ba=30,ca=19,da=2*aa+1,ea=15,fa=3,ga=258,ha=ga+fa+1,ia=32,ja=42,ka=69,la=73,ma=91,na=103,oa=113,pa=666,qa=1,ra=2,sa=3,ta=4,ua=3,va=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new va(0,0,0,0,n),new va(4,4,8,4,o),new va(4,5,16,8,o),new va(4,6,32,32,o),new va(4,4,16,16,p),new va(8,16,32,32,p),new va(8,16,128,128,p),new va(8,32,128,256,p),new va(32,128,258,1024,p),new va(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";b.exports=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A;c=a.state,d=a.next_in,z=a.input,e=d+(a.avail_in-5),f=a.next_out,A=a.output,g=f-(b-a.avail_out),h=f+(a.avail_out-257),i=c.dmax,j=c.wsize,k=c.whave,l=c.wnext,m=c.window,n=c.hold,o=c.bits,p=c.lencode,q=c.distcode,r=(1<<c.lenbits)-1,s=(1<<c.distbits)-1;a:do{15>o&&(n+=z[d++]<<o,o+=8,n+=z[d++]<<o,o+=8),t=p[n&r];b:for(;;){if(u=t>>>24,n>>>=u,o-=u,0===(u=t>>>16&255))A[f++]=65535&t;else{if(!(16&u)){if(0==(64&u)){t=p[(65535&t)+(n&(1<<u)-1)];continue b}if(32&u){c.mode=12;break a}a.msg=\"invalid literal/length code\",c.mode=30;break a}v=65535&t,u&=15,u&&(u>o&&(n+=z[d++]<<o,o+=8),v+=n&(1<<u)-1,n>>>=u,o-=u),15>o&&(n+=z[d++]<<o,o+=8,n+=z[d++]<<o,o+=8),t=q[n&s];c:for(;;){if(u=t>>>24,n>>>=u,o-=u,!(16&(u=t>>>16&255))){if(0==(64&u)){t=q[(65535&t)+(n&(1<<u)-1)];continue c}a.msg=\"invalid distance code\",c.mode=30;break a}if(w=65535&t,u&=15,u>o&&(n+=z[d++]<<o,o+=8,u>o&&(n+=z[d++]<<o,o+=8)),(w+=n&(1<<u)-1)>i){a.msg=\"invalid distance too far back\",c.mode=30;break a}if(n>>>=u,o-=u,u=f-g,w>u){if((u=w-u)>k&&c.sane){a.msg=\"invalid distance too far back\",c.mode=30;break a}if(x=0,y=m,0===l){if(x+=j-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}else if(u>l){if(x+=j+l-u,u-=l,v>u){v-=u;do{A[f++]=m[x++]}while(--u);if(x=0,v>l){u=l,v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}}}else if(x+=l-u,v>u){v-=u;do{A[f++]=m[x++]}while(--u);x=f-w,y=A}for(;v>2;)A[f++]=y[x++],A[f++]=y[x++],A[f++]=y[x++],v-=3;v&&(A[f++]=y[x++],v>1&&(A[f++]=y[x++]))}else{x=f-w;do{A[f++]=A[x++],A[f++]=A[x++],A[f++]=A[x++],v-=3}while(v>2);v&&(A[f++]=A[x++],v>1&&(A[f++]=A[x++]))}break}}break}}while(e>d&&h>f);v=o>>3,d-=v,o-=v<<3,n&=(1<<o)-1,a.next_in=d,a.next_out=f,a.avail_in=e>d?e-d+5:5-(d-e),a.avail_out=h>f?h-f+257:257-(f-h),c.hold=n,c.bits=o}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=1+(b>>4),48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}\nfunction j(a){return i(a,qa)}function k(a){if(ra){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),ra=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa=0,Ba=new r.Buf8(4),Ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xa=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=la;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(m>>>=4,n-=4,wa=8+(15&m),0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg=\"invalid window size\",c.mode=la;break}c.dmax=1<<wa,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=la;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do{wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa))}while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=la;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!=(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=257+(31&m),m>>>=5,n-=5,c.ndist=1+(31&m),m>>>=5,n-=5,c.ncode=4+(15&m),m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Ca[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid code lengths set\",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have<c.nlen+c.ndist;){for(;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qa,n-=qa,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid literal/lengths set\",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg=\"invalid distances set\",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(ra&&0==(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.lencode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg=\"invalid literal/length code\",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<<c.distbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0==(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.distcode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg=\"invalid distance code\",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,\nm>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if((q=c.offset-q)>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do{f[h++]=pa[oa++]}while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=la;break}m=0,n=0}c.mode=ja;case ja:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=la;break}m=0,n=0}c.mode=ka;case ka:xa=D;break a;case la:xa=G;break a;case ma:return H;case na:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<la&&(c.mode<ia||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=ma,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===ba||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xa===C&&(xa=I),xa)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0==(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,aa=19,ba=20,ca=21,da=22,ea=23,fa=24,ga=25,ha=26,ia=27,ja=28,ka=29,la=30,ma=31,na=32,oa=852,pa=592,qa=15,ra=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],f=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],g=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],h=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,i,j,k,l,m,n){var o,p,q,r,s,t,u,v,w,x=n.bits,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=null,J=0,K=new c.Buf16(16),L=new c.Buf16(16),M=null,N=0;for(y=0;d>=y;y++)K[y]=0;for(z=0;j>z;z++)K[b[i+z]]++;for(C=x,B=d;B>=1&&0===K[B];B--);if(C>B&&(C=B),0===B)return k[l++]=20971520,k[l++]=20971520,n.bits=1,0;for(A=1;B>A&&0===K[A];A++);for(A>C&&(C=A),F=1,y=1;d>=y;y++)if(F<<=1,0>(F-=K[y]))return-1;if(F>0&&(0===a||1!==B))return-1;for(L[1]=0,y=1;d>y;y++)L[y+1]=L[y]+K[y];for(z=0;j>z;z++)0!==b[i+z]&&(m[L[b[i+z]]++]=z);if(0===a?(I=M=m,t=19):1===a?(I=e,J-=257,M=f,N-=257,t=256):(I=g,M=h,t=-1),H=0,z=0,y=A,s=l,D=C,E=0,q=-1,G=1<<C,r=G-1,1===a&&G>852||2===a&&G>592)return 1;for(var O=0;;){O++,u=y-E,m[z]<t?(v=0,w=m[z]):m[z]>t?(v=M[N+m[z]],w=I[J+m[z]]):(v=96,w=0),o=1<<y-E,p=1<<D,A=p;do{p-=o,k[s+(H>>E)+p]=u<<24|v<<16|w|0}while(0!==p);for(o=1<<y-1;H&o;)o>>=1;if(0!==o?(H&=o-1,H+=o):H=0,z++,0==--K[y]){if(y===B)break;y=b[i+m[z]]}if(y>C&&(H&r)!==q){for(0===E&&(E=C),s+=A,D=y-E,F=1<<D;B>D+E&&!(0>=(F-=K[D+E]));)D++,F<<=1;if(G+=1<<D,1===a&&G>852||2===a&&G>592)return 1;q=H&r,k[q]=C<<24|D<<16|s-l|0}}return 0!==H&&(k[s+H]=y-E<<24|64<<16|0),n.bits=C,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?da[a]:da[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>T-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>T-a.bi_valid,a.bi_valid+=c-T):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do{c|=1&a,a>>>=1,c<<=1}while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;S>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;R>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)(e=a.heap[--c])>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(S+1),g=0;for(d=1;S>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(S+1);for(c=0,d=0;M-1>d;d++)for(fa[d]=c,a=0;a<1<<Z[d];a++)ea[c++]=d;for(ea[c-1]=d,e=0,d=0;16>d;d++)for(ga[d]=e,a=0;a<1<<$[d];a++)da[e++]=d;for(e>>=7;P>d;d++)for(ga[d]=e<<7,a=0;a<1<<$[d]-7;a++)da[256+e++]=d;for(b=0;S>=b;b++)f[b]=0;for(a=0;143>=a;)ba[2*a+1]=8,a++,f[8]++;for(;255>=a;)ba[2*a+1]=9,a++,f[9]++;for(;279>=a;)ba[2*a+1]=7,a++,f[7]++;for(;287>=a;)ba[2*a+1]=8,a++,f[8]++;for(l(ba,O+1,f),a=0;P>a;a++)ca[2*a+1]=5,ca[2*a]=i(a,5);ha=new ka(ba,Z,N+1,O,S),ia=new ka(ca,$,0,P,S),ja=new ka(new Array(0),_,0,Q,U)}function n(a){var b;for(b=0;O>b;b++)a.dyn_ltree[2*b]=0;for(b=0;P>b;b++)a.dyn_dtree[2*b]=0;for(b=0;Q>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*V]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do{d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=ea[f],h(a,i+N+1,b),j=Z[i],0!==j&&(f-=fa[i],g(a,f,j)),d--,i=e(d),h(a,i,c),0!==(j=$[i])&&(d-=ga[i],g(a,d,j)))}while(k<a.last_lit);h(a,V,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=R,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do{c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1)}while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),\nl(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*W]++):10>=h?a.bl_tree[2*X]++:a.bl_tree[2*Y]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j)do{h(a,e,a.bl_tree)}while(0!=--j);else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,W,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,X,a.bl_tree),g(a,j-3,3)):(h(a,Y,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=Q-1;b>=3&&0===a.bl_tree[2*aa[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*aa[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;N>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){ma||(m(),ma=!0),a.l_desc=new la(a.dyn_ltree,ha),a.d_desc=new la(a.dyn_dtree,ia),a.bl_desc=new la(a.bl_tree,ja),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,V,ba),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ba,ca)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ea[c]+N+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=29,N=256,O=N+1+M,P=30,Q=19,R=2*O+1,S=15,T=16,U=7,V=256,W=16,X=17,Y=18,Z=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],$=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],aa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ba=new Array(2*(O+2));d(ba);var ca=new Array(2*P);d(ca);var da=new Array(512);d(da);var ea=new Array(256);d(ea);var fa=new Array(M);d(fa);var ga=new Array(P);d(ga);var ha,ia,ja,ka=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},la=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},ma=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),jt.EmbeddedFiles={get:function(a){var b=this.compressedContent[a];if(void 0!==b)return{name:a,content:jt.Util.uncompressStringBase64ToInt8BitArray(b)};var c=this.diffsContent[a];if(void 0!==c){var d=this.get(c.based);if(void 0!==d){var e=d.content;for(var f in c.diffs)for(var g=c.diffs[f],h=0;h<g.length;++h)e[(0|f)+h]=g[h];return{name:a,content:e}}}},embedFileCompressedContent:function(a,b){this.compressedContent[a]=b},embedFileDiff:function(a,b){this.diffsContent[a]=b},compressedContent:{},diffsContent:{}},jt.MultiDownloader=function(a,b,c,d){\"use strict\";function e(a){if(a){var b=a.url.trim().split(/\\s*\\|\\s*/);a.filesToLoad=b.length,a.filesContent=new Array(a.filesToLoad);for(var c=0;c<b.length;++c){var d=b[c];\"@\"===d[0]?f(a,c,d):g(a,c,d)}}}function f(a,b,c){jt.Util.log(\"Reading Embedded file: \"+c);var d=jt.EmbeddedFiles.get(c.substr(1));void 0!==d?h(a,b,d.content):i(a,\"Embedded file not found!\")}function g(a,b,c,e){var f=k(c)?l(c):c,g=new XMLHttpRequest;g.open(\"GET\",f,!0),g.responseType=\"arraybuffer\",g.timeout=void 0!==d?d:s,g.onload=function(){200!==g.status&&0!==g.status||!g.response?g.onerror():h(a,b,new Uint8Array(g.response))},g.onerror=g.ontimeout=function(){i(a,g.status+\" \"+g.statusText)},jt.Util.log(\"Reading file from: \"+c),g.send()}function h(a,b,c){a.filesContent[b]=c,--a.filesToLoad>0||(a.success=!0,a.content=jt.Util.arraysConcatAll(a.filesContent),a.onSuccess&&a.onSuccess(a),j())}function i(a,b){a.success=!1,a.error=b;var d=\"Could not load file: \"+a.url+\"\\nError: \"+b;a.onError?(jt.Util.error(d),a.onError(a)):c||jt.Util.message(d),j()}function j(){if(!q){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(q=!0,n(),d=0;d<a.length;d++)if(a[d]&&!a[d].success)return void(c&&c(a));b&&b(a)}}function k(a){return a&&(0===a.indexOf(\"http:\")||0===a.indexOf(\"https:\"))}function l(a){return Javatari.PROXY_SERVER_ADDRESS?\"https://\"+Javatari.PROXY_SERVER_ADDRESS+\"/proxy-remote-download?url=\"+a:a}function m(){Javatari.room.isLoading||(p=window.setTimeout(function(){p=null,o=!0,Javatari.room.setLoading(!0)},r))}function n(){p&&(window.clearTimeout(p),p=null),o&&(o=!1,Javatari.room.setLoading(!1))}this.start=function(){if(a&&0!==a.length){m();for(var b=0;b<a.length;b++)e(a[b])}j()};var o=!1,p=null,q=!1,r=1e3,s=15e3},jt.MultiFileReader=function(a,b,c,d){\"use strict\";function e(a){if(a){jt.Util.log(\"Reading file: \"+a.name);var b=new FileReader;b.onload=function(b){a.success=!0,a.content=new Uint8Array(b.target.result),f()},b.onerror=function(b){a.success=!1,a.error=b.target.error.name,f()},b.readAsArrayBuffer(a)}}function f(){if(!g){for(var d=0;d<a.length;d++)if(a[d]&&void 0===a[d].success)return;for(g=!0,d=0;d<a.length;d++)if(a[d]&&!a[d].success)return c&&c(a,a[d].error),a;b&&b(a)}}this.start=function(){if(a&&0!==a.length){d||(d=h);for(var g=0,i=0;i<a.length;i++)g+=a[i].size;if(g>d){var j=\"Maximum total size limit exceeded: \"+(d/1024|0)+\"KB\";return void(c&&c(a,j,!0))}for(i=0;i<a.length;i++)e(a[i]);f()}else b(a)};var g=!1,h=5898240},jt.VideoStandard={NTSC:{name:\"NTSC\",desc:\"NTSC 60Hz\",totalWidth:228,totalHeight:262,defaultOriginYPct:10.8,defaultHeightPct:85.2,targetFPS:60,pulldowns:{60:{standard:\"NTSC\",frequency:60,divider:1,cadence:[1],steps:1},120:{standard:\"NTSC\",frequency:120,divider:2,cadence:[1],steps:1},\"120s\":{standard:\"NTSC\",frequency:120,divider:1,cadence:[0,1],steps:2},50:{standard:\"NTSC\",frequency:50,divider:1,cadence:[1,1,1,1,2],steps:5},100:{standard:\"NTSC\",frequency:100,divider:2,cadence:[1,1,1,1,2],steps:5},\"100s\":{standard:\"NTSC\",frequency:100,divider:1,cadence:[0,1,0,1,1,0,1,0,1,1],steps:10},TIMER:{standard:\"NTSC\",frequency:62.5,divider:1,cadence:[1],steps:1}}},PAL:{name:\"PAL\",desc:\"PAL 50Hz\",totalWidth:228,totalHeight:312,defaultOriginYPct:13.5,defaultHeightPct:77.3,targetFPS:50,pulldowns:{50:{standard:\"PAL\",frequency:50,divider:1,cadence:[1],steps:1},100:{standard:\"PAL\",frequency:100,divider:2,cadence:[1],steps:1},\"100s\":{standard:\"PAL\",frequency:100,divider:1,cadence:[0,1],steps:2},60:{standard:\"PAL\",frequency:60,divider:1,cadence:[0,1,1,1,1,1],steps:6},120:{standard:\"PAL\",frequency:120,divider:2,cadence:[0,1,1,1,1,1],steps:6},\"120s\":{standard:\"PAL\",frequency:120,divider:1,cadence:[0,0,1,0,1,0,0,1,0,1,0,1],steps:12},TIMER:{standard:\"PAL\",frequency:50,divider:1,cadence:[1],steps:1}}}},jt.VideoSignal=function(){\"use strict\";this.connectMonitor=function(a){this.monitor=a},this.setVideoStandard=function(a){this.monitor&&this.monitor.setVideoStandard(a)},this.nextLine=function(a,b){return this.monitor.nextLine(a,b)},this.finishFrame=function(){this.monitor.refresh()},this.signalOff=function(){\nthis.monitor&&this.monitor.videoSignalOff()},this.showOSD=function(a,b,c){this.monitor&&this.monitor.showOSD(a,b,c)},this.toggleShowInfo=function(){this.monitor.toggleShowInfo()},this.monitor=null},jt.AudioSignal=function(a,b,c,d){\"use strict\";function e(){if(n>0){if(p<=0)return void(n=0);g(),--n,--p}}function f(){var a=s*Javatari.AUDIO_SIGNAL_BUFFER_RATIO+k*Javatari.AUDIO_SIGNAL_ADD_FRAMES|0;r.length=a,a>o&&jt.Util.arrayFill(r,0,o,a),o=a,t.bufferSize=o,q=o-2,j.flush()}function g(){r[l]=b.nextSample()*d,++l>=o&&(l=0)}function h(){r[l]=0,++l>=o&&(l=0)}function i(a,b){if(b)for(var c=a;c>0;c-=1)h();else for(var d=a;d>0;d-=1)g();p-=a}var j=this;this.flush=function(){l=0,m=0,p=q},this.setFps=function(a){k=c/a|0,f()},this.audioFinishFrame=function(){if(n>0)for(;n>0;)e();n=k},this.retrieveSamples=function(a,b){var c=q-p,d=a-c;d>0&&(d>p&&(d=p),i(d,b)),t.start=m;var e=c+d;return p+=e,m+=e,m>=o&&(m-=o),t},this.audioClockPulse=e,this.getSampleRate=function(){return c},this.toString=function(){return\"AudioSignal \"+a},this.setAudioMonitorBufferSize=function(a){s=a,f()},this.name=a;var k,l=0,m=0,n=0,o=0,p=0,q=0,r=jt.Util.arrayFill(new Array(o),0),s=0,t={buffer:r,bufferSize:o,start:0}},jt.M6502=function(){\"use strict\";function a(){return[ja,function(){Ta(\"KIL/HLT/JAM\")},function(){X--}]}function b(a){return a(function(){Ta(\"NOP/DOP\")})}function c(a){return a(function(){if(T){var a=Z,b=(15&O)+(15&a)+W;b>9&&(b+=6);var c=(O>>4)+(a>>4)+(b>15)<<4;Ka(O+a+W&255),La(c),Ma((O^c)&~(O^a)&128),c>159&&(c+=96),Na(c>255),O=255&(c|15&b)}else{var d=O+Z+W;Na(d>255),Ma((O^d)&(Z^d)&128),O=255&d,Ka(O),La(O)}})}function d(a){return a(function(){O&=Z,Ka(O),La(O)})}function e(a){return a(function(){var a=Z;Ka(O&a),Ma(64&a),La(a)})}function f(a){return a(function(){var a=O-Z&255;Na(O>=Z),Ka(a),La(a)})}function g(a){return a(function(){var a=P-Z&255;Na(P>=Z),Ka(a),La(a)})}function h(a){return a(function(){var a=Q-Z&255;Na(Q>=Z),Ka(a),La(a)})}function i(a){return a(function(){O^=Z,Ka(O),La(O)})}function j(a){return a(function(){O=Z,Ka(O),La(O)})}function k(a){return a(function(){P=Z,Ka(P),La(P)})}function l(a){return a(function(){Q=Z,Ka(Q),La(Q)})}function m(a){return a(function(){O|=Z,Ka(O),La(O)})}function n(a){return a(function(){if(T){var a=Z,b=(15&O)-(15&a)-(1-W),c=(O>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=O-a-(1-W);Na(256&~d),Ma((O^a)&(O^d)&128),Ka(255&d),La(d),O=255&(c<<4|15&b)}else a=255&~Z,d=O+a+W,Na(d>255),Ma((O^d)&(a^d)&128),O=255&d,Ka(O),La(O)})}function o(a){return a(function(){Ta(\"ANC\"),O&=Z,Ka(O),R=W=128&O?1:0})}function p(a){return a(function(){Ta(\"LAX\");var a=Z;O=a,P=a,Ka(a),La(a)})}function q(a){return a(function(){Z=O})}function r(a){return a(function(){Z=P})}function s(a){return a(function(){Z=Q})}function t(a){return a(function(){Ta(\"SAX\"),Z=O&P})}function u(a){return a(function(){Ta(\"SHA\"),Z=O&P&1+(_>>>8)&255})}function v(a){return a(function(){Na(Z>127);var a=Z<<1&255;Z=a,Ka(a),La(a)})}function w(a){return a(function(){var a=Z-1&255;Z=a,Ka(a),La(a)})}function x(a){return a(function(){var a=Z+1&255;Z=a,Ka(a),La(a)})}function y(a){return a(function(){W=1&Z,Z>>>=1,Ka(Z),R=0})}function z(a){return a(function(){var a=Z>127,b=255&(Z<<1|W);Z=b,Na(a),Ka(b),La(b)})}function A(a){return a(function(){var a=1&Z,b=Z>>>1|W<<7;Z=b,Na(a),Ka(b),La(b)})}function B(a){return a(function(){Ta(\"DCP\");var a=Z-1&255;Z=a,a=O-a,Na(a>=0),Ka(a),La(a)})}function C(a){return a(function(){if(Ta(\"ISB\"),Z=Z+1&255,T){var a=Z,b=(15&O)-(15&a)-(1-W),c=(O>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=O-a-(1-W);Na(256&~d),Ma((O^a)&(O^d)&128),Ka(255&d),La(d),O=255&(c<<4|15&b)}else a=255&~Z,d=O+a+W,Na(d>255),Ma((O^d)&(a^d)&128),O=255&d,Ka(O),La(O)})}function D(a){return a(function(){Ta(\"RLA\");var a=Z,b=W;Na(128&a),a=255&(a<<1|b),Z=a,O&=a,Ka(a),La(a)})}function E(a){return a(function(){Ta(\"RRA\");var a=Z,b=W?128:0;if(Na(1&a),a=a>>>1|b,Z=a,T){var c=Z,d=(15&O)+(15&c)+W;d>9&&(d+=6);var e=(O>>4)+(c>>4)+(d>15)<<4;Ka(O+c+W&255),La(e),Ma((O^e)&~(O^c)&128),e>159&&(e+=96),Na(e>255),O=255&(e|15&d)}else{var f=O+Z+W;Na(f>255),Ma((O^f)&(Z^f)&128),O=255&f,Ka(O),La(O)}})}function F(a){return a(function(){Ta(\"SLO\");var a=Z;Na(128&a),a=a<<1&255,Z=a,a|=O,O=a,Ka(a),La(a)})}function G(a){return a(function(){Ta(\"SRE\");var a=Z;Na(1&a),a>>>=1,Z=a,a=255&(O^a),O=a,Ka(a),La(a)})}function H(a,b){var c;return c=a===ha?function(){return V===b}:a===ga?function(){return R===b}:a===ia?function(){return W===b}:function(){return S===b},[ja,na,function(){c()?(ma(),Ia()):ka()},function(){da?(ma(),Ja()):ka()},ka]}var I=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){L&&(X++,K[X]())},this.connectBus=function(a){J=a},this.setRDY=function(a){L=a},this.reset=function(){U=1,X=-1,Y=-1,K=la,M=J.read(ea)|J.read(ea+1)<<8,this.setRDY(!0)};var J,K,L=!1,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=-1,Y=-1,Z=0,$=0,_=0,aa=!1,ba=0,ca=0,da=0,ea=65532,fa=65534,ga=7,ha=1,ia=0;this.debug=!1,this.trace=!1;var ja=function(){Y=J.read(M),K=nb[Y],X=0,M++},ka=ja,la=[ja],ma=function(){J.read(M)},na=function(){ca=J.read(M),M++},oa=function(){$=J.read(M),M++},pa=function(){$|=J.read(M)<<8,M++},qa=function(){$=J.read(_)},ra=function(){$|=J.read(_)<<8},sa=function(){_=J.read(M),M++},ta=function(){_|=J.read(M)<<8,M++},ua=function(){_=J.read(ba)},va=function(){_|=J.read(ba)<<8},wa=function(){var a=(255&_)+P;aa=a>255,_=65280&_|255&a},xa=function(){var a=(255&_)+Q;aa=a>255,_=65280&_|255&a},ya=function(){var a=1+(255&_);aa=a>255,_=65280&_|255&a},za=function(){aa&&(_=_+256&65535)},Aa=function(){ba=J.read(M),M++},Ba=function(){ba|=J.read(M)<<8,M++},Ca=function(){ba=65280&ba|255&1+(255&ba)},Da=function(){Z=J.read(M),M++},Ea=function(){Z=J.read($)},Fa=function(){Z=J.read(_)},Ga=function(){J.write($,Z)},Ha=function(){J.write(_,Z)},Ia=function(){var a=255&M,b=a+ca&255;da=ca>127?b>a?-256:0:b<a?256:0,M=65280&M|b},Ja=function(){M=M+da&65535},Ka=function(a){V=0===a?1:0},La=function(a){R=128&a?1:0},Ma=function(a){S=a?1:0},Na=function(a){W=a?1:0},Oa=function(){return N=N+1&255,J.read(256+N)},Pa=function(){return J.read(256+N)},Qa=function(a){J.write(256+N,a),N=N-1&255},Ra=function(){return R<<7|S<<6|48|T<<3|U<<2|V<<1|W},Sa=function(a){R=a>>>7,S=a>>>6&1,T=a>>>3&1,U=a>>>2&1,V=a>>>1&1,W=1&a},Ta=function(a){I.debug&&I.breakpoint(\"Illegal Opcode: \"+a)},Ua=function(a){return[ja,ma,function(){a(),ka()}]},Va=function(a){return[ja,Da,function(){a(),ka()}]},Wa=function(a){return[ja,oa,Ea,function(){a(),ka()}]},Xa=function(a){return[ja,oa,pa,Ea,function(){a(),ka()}]},Ya=function(a){return[ja,sa,Fa,function(){wa(),qa()},function(){ya(),ra()},Ea,function(){a(),ka()}]},Za=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,ta,function(){b(),Fa(),za()},function(){aa?Fa():(a(),ka())},function(){a(),ka()}]}},$a=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,Fa,function(){b(),Fa()},function(){a(),ka()}]}},_a=function(a){return[ja,Aa,ua,function(){Ca(),va()},function(){xa(),Fa(),za()},function(){aa?Fa():(a(),ka())},function(){a(),ka()}]},ab=function(a){return[ja,oa,function(){a(),Ga()},ka]},bb=function(a){return[ja,oa,pa,function(){a(),Ga()},ka]},cb=function(a){return[ja,sa,Fa,function(){wa(),qa()},function(){ya(),ra()},function(){a(),Ga()},ka]},db=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,ta,function(){b(),Fa(),za()},function(){a(),Ha()},ka]}},eb=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,Fa,function(){b(),a(),Ha()},ka]}},fb=function(a){return[ja,Aa,ua,function(){Ca(),va()},function(){xa(),Fa(),za()},function(){a(),Ha()},ka]},gb=function(a){return[ja,oa,Ea,Ga,function(){a(),Ga()},ka]},hb=function(a){return[ja,oa,pa,Ea,Ga,function(){a(),Ga()},ka]},ib=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,Fa,function(){b(),Fa()},Ha,function(){a(),Ha()},ka]}},jb=function(a){var b=0===a?wa:xa;return function(a){return[ja,sa,ta,function(){b(),Fa(),za()},Fa,Ha,function(){a(),Ha()},ka]}\n},kb=function(a){return[ja,sa,Fa,function(){wa(),qa()},function(){ya(),ra()},Ea,Ga,function(){a(),Ga()},ka]},lb=function(a){return[ja,Aa,ua,function(){Ca(),va()},function(){xa(),Fa(),za()},Fa,Ha,function(){a(),Ha()},ka]},mb=new Array(256),nb=new Array(256);mb[0]=\"BRK\",nb[0]=function(){return[ja,Da,function(){I.debug&&I.breakpoint(\"BRK \"+Z),Qa(M>>>8&255)},function(){Qa(255&M)},function(){Qa(Ra())},function(){$=J.read(fa)},function(){$|=J.read(fa+1)<<8},function(){M=$,ka()}]}(),mb[1]=\"ORA\",nb[1]=m(Ya),mb[2]=\"uKIL\",nb[2]=a(),mb[3]=\"uSLO\",nb[3]=F(kb),mb[4]=\"uNOP\",nb[4]=b(Wa),mb[5]=\"ORA\",nb[5]=m(Wa),mb[6]=\"ASL\",nb[6]=v(gb),mb[7]=\"uSLO\",nb[7]=F(gb),mb[8]=\"PHP\",nb[8]=function(){return[ja,ma,function(){Qa(Ra())},ka]}(),mb[9]=\"ORA\",nb[9]=m(Va),mb[10]=\"ASL\",nb[10]=function(){return Ua(function(){Na(O>127),O=O<<1&255,Ka(O),La(O)})}(),mb[11]=\"uANC\",nb[11]=o(Va),mb[12]=\"uNOP\",nb[12]=b(Xa),mb[13]=\"ORA\",nb[13]=m(Xa),mb[14]=\"ASL\",nb[14]=v(hb),mb[15]=\"uSLO\",nb[15]=F(hb),mb[16]=\"BPL\",nb[16]=H(ga,0),mb[17]=\"ORA\",nb[17]=m(_a),mb[18]=\"uKIL\",nb[18]=a(),mb[19]=\"uSLO\",nb[19]=F(lb),mb[20]=\"uNOP\",nb[20]=b($a(0)),mb[21]=\"ORA\",nb[21]=m($a(0)),mb[22]=\"ASL\",nb[22]=v(ib(0)),mb[23]=\"uSLO\",nb[23]=F(ib(0)),mb[24]=\"CLC\",nb[24]=function(){return Ua(function(){W=0})}(),mb[25]=\"ORA\",nb[25]=m(Za(1)),mb[26]=\"uNOP\",nb[26]=b(Ua),mb[27]=\"uSLO\",nb[27]=F(jb(1)),mb[28]=\"uNOP\",nb[28]=b(Za(0)),mb[29]=\"ORA\",nb[29]=m(Za(0)),mb[30]=\"ASL\",nb[30]=v(jb(0)),mb[31]=\"uSLO\",nb[31]=F(jb(0)),mb[32]=\"JSR\",nb[32]=function(){return[ja,oa,Pa,function(){Qa(M>>>8&255)},function(){Qa(255&M)},pa,function(){M=$,ka()}]}(),mb[33]=\"AND\",nb[33]=d(Ya),mb[34]=\"uKIL\",nb[34]=a(),mb[35]=\"uRLA\",nb[35]=D(kb),mb[36]=\"BIT\",nb[36]=e(Wa),mb[37]=\"AND\",nb[37]=d(Wa),mb[38]=\"ROL\",nb[38]=z(gb),mb[39]=\"uRLA\",nb[39]=D(gb),mb[40]=\"PLP\",nb[40]=function(){return[ja,ma,Pa,function(){Sa(Oa())},ka]}(),mb[41]=\"AND\",nb[41]=d(Va),mb[42]=\"ROL\",nb[42]=function(){return Ua(function(){var a=O>127;O=255&(O<<1|W),Na(a),Ka(O),La(O)})}(),mb[43]=\"uANC\",nb[43]=o(Va),mb[44]=\"BIT\",nb[44]=e(Xa),mb[45]=\"AND\",nb[45]=d(Xa),mb[46]=\"ROL\",nb[46]=z(hb),mb[47]=\"uRLA\",nb[47]=D(hb),mb[48]=\"BMI\",nb[48]=H(ga,1),mb[49]=\"AND\",nb[49]=d(_a),mb[50]=\"uKIL\",nb[50]=a(),mb[51]=\"uRLA\",nb[51]=D(lb),mb[52]=\"uNOP\",nb[52]=b($a(0)),mb[53]=\"AND\",nb[53]=d($a(0)),mb[54]=\"ROL\",nb[54]=z(ib(0)),mb[55]=\"uRLA\",nb[55]=D(ib(0)),mb[56]=\"SEC\",nb[56]=function(){return Ua(function(){W=1})}(),mb[57]=\"AND\",nb[57]=d(Za(1)),mb[58]=\"uNOP\",nb[58]=b(Ua),mb[59]=\"uRLA\",nb[59]=D(jb(1)),mb[60]=\"uNOP\",nb[60]=b(Za(0)),mb[61]=\"AND\",nb[61]=d(Za(0)),mb[62]=\"ROL\",nb[62]=z(jb(0)),mb[63]=\"uRLA\",nb[63]=D(jb(0)),mb[64]=\"RTI\",nb[64]=function(){return[ja,ma,Pa,function(){Sa(Oa())},function(){$=Oa()},function(){$|=Oa()<<8},function(){M=$,ka()}]}(),mb[65]=\"EOR\",nb[65]=i(Ya),mb[66]=\"uKIL\",nb[66]=a(),mb[67]=\"uSRE\",nb[67]=G(kb),mb[68]=\"uNOP\",nb[68]=b(Wa),mb[69]=\"EOR\",nb[69]=i(Wa),mb[70]=\"LSR\",nb[70]=y(gb),mb[71]=\"uSRE\",nb[71]=G(gb),mb[72]=\"PHA\",nb[72]=function(){return[ja,ma,function(){Qa(O)},ka]}(),mb[73]=\"EOR\",nb[73]=i(Va),mb[74]=\"LSR\",nb[74]=function(){return Ua(function(){W=1&O,O>>>=1,Ka(O),R=0})}(),mb[75]=\"uASR\",nb[75]=function(a){return a(function(){Ta(\"ASR\");var a=O&Z;W=1&a,a>>>=1,O=a,Ka(a),R=0})}(Va),mb[76]=\"JMP\",nb[76]=function(){return[ja,oa,pa,function(){M=$,ka()}]}(),mb[77]=\"EOR\",nb[77]=i(Xa),mb[78]=\"LSR\",nb[78]=y(hb),mb[79]=\"uSRE\",nb[79]=G(hb),mb[80]=\"BVC\",nb[80]=H(6,0),mb[81]=\"EOR\",nb[81]=i(_a),mb[82]=\"uKIL\",nb[82]=a(),mb[83]=\"uSRE\",nb[83]=G(lb),mb[84]=\"uNOP\",nb[84]=b($a(0)),mb[85]=\"EOR\",nb[85]=i($a(0)),mb[86]=\"LSR\",nb[86]=y(ib(0)),mb[87]=\"uSRE\",nb[87]=G(ib(0)),mb[88]=\"CLI\",nb[88]=function(){return Ua(function(){U=0})}(),mb[89]=\"EOR\",nb[89]=i(Za(1)),mb[90]=\"uNOP\",nb[90]=b(Ua),mb[91]=\"uSRE\",nb[91]=G(jb(1)),mb[92]=\"uNOP\",nb[92]=b(Za(0)),mb[93]=\"EOR\",nb[93]=i(Za(0)),mb[94]=\"LSR\",nb[94]=y(jb(0)),mb[95]=\"uSRE\",nb[95]=G(jb(0)),mb[96]=\"RTS\",nb[96]=function(){return[ja,ma,Pa,function(){$=Oa()},function(){$|=Oa()<<8},function(){M=$,Da()},ka]}(),mb[97]=\"ADC\",nb[97]=c(Ya),mb[98]=\"uKIL\",nb[98]=a(),mb[99]=\"uRRA\",nb[99]=E(kb);mb[100]=\"uNOP\",nb[100]=b(Wa),mb[101]=\"ADC\",nb[101]=c(Wa),mb[102]=\"ROR\",nb[102]=A(gb),mb[103]=\"uRRA\",nb[103]=E(gb),mb[104]=\"PLA\",nb[104]=function(){return[ja,ma,Pa,function(){O=Oa(),Ka(O),La(O)},ka]}(),mb[105]=\"ADC\",nb[105]=c(Va),mb[106]=\"ROR\",nb[106]=function(){return Ua(function(){var a=1&O;O=O>>>1|W<<7,Na(a),Ka(O),La(O)})}(),mb[107]=\"uARR\",nb[107]=function(a){return a(function(){Ta(\"ARR\");var a=O&Z;a=a>>>1|(W?128:0),O=a,Ka(a),La(a);var b=96&O;96==b?(W=1,S=0):0==b?(W=0,S=0):32==b?(W=0,S=1):64==b&&(W=1,S=1)})}(Va),mb[108]=\"JMP\",nb[108]=function(){return[ja,Aa,Ba,ua,function(){Ca(),va()},function(){M=_,ka()}]}(),mb[109]=\"ADC\",nb[109]=c(Xa),mb[110]=\"ROR\",nb[110]=A(hb),mb[111]=\"uRRA\",nb[111]=E(hb),mb[112]=\"BVS\",nb[112]=H(6,1),mb[113]=\"ADC\",nb[113]=c(_a),mb[114]=\"uKIL\",nb[114]=a(),mb[115]=\"uRRA\",nb[115]=E(lb),mb[116]=\"uNOP\",nb[116]=b($a(0)),mb[117]=\"ADC\",nb[117]=c($a(0)),mb[118]=\"ROR\",nb[118]=A(ib(0)),mb[119]=\"uRRA\",nb[119]=E(ib(0)),mb[120]=\"SEI\",nb[120]=function(){return Ua(function(){U=1})}(),mb[121]=\"ADC\",nb[121]=c(Za(1)),mb[122]=\"uNOP\",nb[122]=b(Ua),mb[123]=\"uRRA\",nb[123]=E(jb(1)),mb[124]=\"uNOP\",nb[124]=b(Za(0)),mb[125]=\"ADC\",nb[125]=c(Za(0)),mb[126]=\"ROR\",nb[126]=A(jb(0)),mb[127]=\"uRRA\",nb[127]=E(jb(0)),mb[128]=\"uNOP\",nb[128]=b(Va),mb[129]=\"STA\",nb[129]=q(cb),mb[130]=\"uNOP\",nb[130]=b(Va),mb[131]=\"uSAX\",nb[131]=t(cb),mb[132]=\"STY\",nb[132]=s(ab),mb[133]=\"STA\",nb[133]=q(ab),mb[134]=\"STX\",nb[134]=r(ab),mb[135]=\"uSAX\",nb[135]=t(ab),mb[136]=\"DEY\",nb[136]=function(){return Ua(function(){Q=Q-1&255,Ka(Q),La(Q)})}(),mb[137]=\"uNOP\",nb[137]=b(Va),mb[138]=\"TXA\",nb[138]=function(){return Ua(function(){O=P,Ka(O),La(O)})}(),mb[139]=\"uANE\",nb[139]=function(a){return a(function(){Ta(\"ANE\")})}(Va),mb[140]=\"STY\",nb[140]=s(bb),mb[141]=\"STA\",nb[141]=q(bb),mb[142]=\"STX\",nb[142]=r(bb),mb[143]=\"uSAX\",nb[143]=t(bb),mb[144]=\"BCC\",nb[144]=H(ia,0),mb[145]=\"STA\",nb[145]=q(fb),mb[146]=\"uKIL\",nb[146]=a(),mb[147]=\"uSHA\",nb[147]=u(fb),mb[148]=\"STY\",nb[148]=s(eb(0)),mb[149]=\"STA\",nb[149]=q(eb(0)),mb[150]=\"STX\",nb[150]=r(eb(1)),mb[151]=\"uSAX\",nb[151]=t(eb(1)),mb[152]=\"TYA\",nb[152]=function(){return Ua(function(){O=Q,Ka(O),La(O)})}(),mb[153]=\"STA\",nb[153]=q(db(1)),mb[154]=\"TXS\",nb[154]=function(){return Ua(function(){N=P})}(),mb[155]=\"uSHS\",nb[155]=function(a){return a(function(){Ta(\"SHS\");var a=O&P;N=a,Z=a&1+(_>>>8)&255})}(db(1)),mb[156]=\"uSHY\",nb[156]=function(a){return a(function(){Ta(\"SHY\"),Z=Q&1+(_>>>8)&255})}(db(0)),mb[157]=\"STA\",nb[157]=q(db(0)),mb[158]=\"uSHX\",nb[158]=function(a){return a(function(){Ta(\"SHX\"),Z=P&1+(_>>>8)&255})}(db(1)),mb[159]=\"uSHA\",nb[159]=u(db(1)),mb[160]=\"LDY\",nb[160]=l(Va),mb[161]=\"LDA\",nb[161]=j(Ya),mb[162]=\"LDX\",nb[162]=k(Va),mb[163]=\"uLAX\",nb[163]=p(Ya),mb[164]=\"LDY\",nb[164]=l(Wa),mb[165]=\"LDA\",nb[165]=j(Wa),mb[166]=\"LDX\",nb[166]=k(Wa),mb[167]=\"uLAX\",nb[167]=p(Wa),mb[168]=\"TAY\",nb[168]=function(){return Ua(function(){Q=O,Ka(Q),La(Q)})}(),mb[169]=\"LDA\",nb[169]=j(Va),mb[170]=\"TAX\",nb[170]=function(){return Ua(function(){P=O,Ka(P),La(P)})}(),mb[171]=\"uLXA\",nb[171]=function(a){return a(function(){Ta(\"LXA\");var a=O&Z;O=a,P=a,Ka(a),La(a)})}(Va),mb[172]=\"LDY\",nb[172]=l(Xa),mb[173]=\"LDA\",nb[173]=j(Xa),mb[174]=\"LDX\",nb[174]=k(Xa),mb[175]=\"uLAX\",nb[175]=p(Xa),mb[176]=\"BCS\",nb[176]=H(ia,1),mb[177]=\"LDA\",nb[177]=j(_a),mb[178]=\"uKIL\",nb[178]=a(),mb[179]=\"uLAX\",nb[179]=p(_a),mb[180]=\"LDY\",nb[180]=l($a(0)),mb[181]=\"LDA\",nb[181]=j($a(0)),mb[182]=\"LDX\",nb[182]=k($a(1)),mb[183]=\"uLAX\",nb[183]=p($a(1)),mb[184]=\"CLV\",nb[184]=function(){return Ua(function(){S=0})}(),mb[185]=\"LDA\",nb[185]=j(Za(1)),mb[186]=\"TSX\",nb[186]=function(){return Ua(function(){P=N,Ka(P),La(P)})}(),mb[187]=\"uLAS\",nb[187]=function(a){return a(function(){Ta(\"LAS\");var a=N&Z;O=a,P=a,N=a,Ka(a),La(a)})}(Za(1)),mb[188]=\"LDY\",nb[188]=l(Za(0)),mb[189]=\"LDA\",nb[189]=j(Za(0)),mb[190]=\"LDX\",nb[190]=k(Za(1)),mb[191]=\"uLAX\",nb[191]=p(Za(1)),mb[192]=\"CPY\",nb[192]=h(Va),\nmb[193]=\"CMP\",nb[193]=f(Ya),mb[194]=\"uNOP\",nb[194]=b(Va),mb[195]=\"uDCP\",nb[195]=B(kb),mb[196]=\"CPY\",nb[196]=h(Wa),mb[197]=\"CMP\",nb[197]=f(Wa),mb[198]=\"DEC\",nb[198]=w(gb),mb[199]=\"uDCP\",nb[199]=B(gb);mb[200]=\"INY\",nb[200]=function(){return Ua(function(){Q=Q+1&255,Ka(Q),La(Q)})}(),mb[201]=\"CMP\",nb[201]=f(Va),mb[202]=\"DEX\",nb[202]=function(){return Ua(function(){P=P-1&255,Ka(P),La(P)})}(),mb[203]=\"uSBX\",nb[203]=function(a){return a(function(){Ta(\"SBX\");var a=O&P,b=Z,c=a-b&255;P=c,Na(a>=b),Ka(c),La(c)})}(Va),mb[204]=\"CPY\",nb[204]=h(Xa),mb[205]=\"CMP\",nb[205]=f(Xa),mb[206]=\"DEC\",nb[206]=w(hb),mb[207]=\"uDCP\",nb[207]=B(hb),mb[208]=\"BNE\",nb[208]=H(ha,0),mb[209]=\"CMP\",nb[209]=f(_a),mb[210]=\"uKIL\",nb[210]=a(),mb[211]=\"uDCP\",nb[211]=B(lb),mb[212]=\"uNOP\",nb[212]=b($a(0)),mb[213]=\"CMP\",nb[213]=f($a(0)),mb[214]=\"DEC\",nb[214]=w(ib(0)),mb[215]=\"uDCP\",nb[215]=B(ib(0)),mb[216]=\"CLD\",nb[216]=function(){return Ua(function(){T=0})}(),mb[217]=\"CMP\",nb[217]=f(Za(1)),mb[218]=\"uNOP\",nb[218]=b(Ua),mb[219]=\"uDCP\",nb[219]=B(jb(1)),mb[220]=\"uNOP\",nb[220]=b(Za(0)),mb[221]=\"CMP\",nb[221]=f(Za(0)),mb[222]=\"DEC\",nb[222]=w(jb(0)),mb[223]=\"uDCP\",nb[223]=B(jb(0)),mb[224]=\"CPX\",nb[224]=g(Va),mb[225]=\"SBC\",nb[225]=n(Ya),mb[226]=\"uNOP\",nb[226]=b(Va),mb[227]=\"uISB\",nb[227]=C(kb),mb[228]=\"CPX\",nb[228]=g(Wa),mb[229]=\"SBC\",nb[229]=n(Wa),mb[230]=\"INC\",nb[230]=x(gb),mb[231]=\"uISB\",nb[231]=C(gb),mb[232]=\"newINX\",nb[232]=function(){return Ua(function(){P=P+1&255,Ka(P),La(P)})}(),mb[233]=\"SBC\",nb[233]=n(Va),mb[234]=\"NOP\",nb[234]=function(){return Ua(function(){})}(),mb[235]=\"SBC\",nb[235]=n(Va),mb[236]=\"CPX\",nb[236]=g(Xa),mb[237]=\"SBC\",nb[237]=n(Xa),mb[238]=\"INC\",nb[238]=x(hb),mb[239]=\"uISB\",nb[239]=C(hb),mb[240]=\"BEQ\",nb[240]=H(ha,1),mb[241]=\"SBC\",nb[241]=n(_a),mb[242]=\"uKIL\",nb[242]=a(),mb[243]=\"uISB\",nb[243]=C(lb),mb[244]=\"uNOP\",nb[244]=b($a(0)),mb[245]=\"SBC\",nb[245]=n($a(0)),mb[246]=\"INC\",nb[246]=x(ib(0)),mb[247]=\"uISB\",nb[247]=C(ib(0)),mb[248]=\"SED\",nb[248]=function(){return Ua(function(){T=1})}(),mb[249]=\"SBC\",nb[249]=n(Za(1)),mb[250]=\"uNOP\",nb[250]=b(Ua),mb[251]=\"uISB\",nb[251]=C(jb(1)),mb[252]=\"uNOP\",nb[252]=b(Za(0)),mb[253]=\"SBC\",nb[253]=n(Za(0)),mb[254]=\"INC\",nb[254]=x(jb(0)),mb[255]=\"uISB\",nb[255]=C(jb(0)),this.saveState=function(){return{PC:M,A:O,X:P,Y:Q,SP:N,N:R,V:S,D:T,I:U,Z:V,C:W,T:X,o:Y,R:0|L,d:Z,AD:$,BA:_,BC:0|aa,IA:ba,bo:ca,boa:da}},this.loadState=function(a){M=a.PC,O=a.A,P=a.X,Q=a.Y,N=a.SP,R=a.N,S=a.V,T=a.D,U=a.I,V=a.Z,W=a.C,X=a.T,Y=a.o,L=!!a.R,Z=a.d,$=a.AD,_=a.BA,aa=!!a.BC,ba=a.IA,ca=a.bo,da=a.boa,K=-1===Y?la:nb[Y]},this.toString=function(){return\"CPU  PC: \"+M.toString(16)+\"  op: \"+Y.toString()+\"  T: \"+X+\"  data: \"+Z+\"\\n A: \"+O.toString(16)+\"  X: \"+P.toString(16)+\"  Y: \"+Q.toString(16)+\"  SP: \"+N.toString(16)+\"     N\"+R+\"  V\"+S+\"  D\"+T+\"  I\"+U+\"  Z\"+V+\"  C\"+W+\"  \"},this.breakpoint=function(a){if(jt.Util.log(a),this.trace){var b=\"CPU Breakpoint!  \"+(a?\"(\"+a+\")\":\"\")+\"\\n\\n\"+this.toString();jt.Util.message(b)}},this.runCycles=function(a){for(var b=performance.now(),c=0;c<a;c++)this.clockPulse();var d=performance.now();jt.Util.message(\"Done running \"+a+\" cycles in \"+(d-b)+\" ms.\")}},jt.Ram=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.read=function(c){return a[c&b]},this.write=function(c,d){a[c&b]=d},this.powerFry=function(){for(var b=1-e+2*Math.random()*e,f=b*c,g=0;g<f;g++)a[128*Math.random()|0]&=256*Math.random()|0;var h=b*d;for(g=0;g<h;g++)a[128*Math.random()|0]|=1<<(8*Math.random()|0)},this.saveState=function(){return{b:jt.Util.storeInt8BitArrayToStringBase64(a)}},this.loadState=function(b){a=jt.Util.restoreStringBase64ToInt8BitArray(b.b,a)};var a=new Array(128),b=127,c=120,d=25,e=.3;!function(){for(var b=a.length-1;b>=0;b--)a[b]=256*Math.random()|0}()},jt.Pia=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.clockPulse=function(){--h<=0&&a()},this.connectBus=function(a){g=a},this.read=function(a){var b=a&u;return 4===b||6===b?(c(),o):0===b?k:2===b?m:1===b?l:3===b?n:5===b||7===b?p:0},this.write=function(a,c){var f=a&u;return 4===f?(q=c,void b(c,1)):5===f?(r=c,void b(c,8)):6===f?(s=c,void b(c,64)):7===f?(t=c,void b(c,1024)):2===f?void d(c):3===f?(n=c,void e(\">>>> Ineffective Write to PIA SWBCNT: \"+c)):0===f?void e(\">>>> Unsupported Write to PIA SWCHA: \"+c):1===f?void e(\">>>> Unsupported Write to PIA SWACNT \"+c):0};var a=function(){--o<0?(p|=192,o=255,h=i=1):h=i},b=function(b,c){o=b,p&=63,h=i=j=c,a()},c=function(){p&=191,1===i&&(h=i=j)},d=function(a){m=203&m|34&a},e=function(a){self.debug&&jt.Util.log(a)},f=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case f.JOY0_UP:return void(b?k&=239:k|=16);case f.JOY0_DOWN:return void(b?k&=223:k|=32);case f.PADDLE1_BUTTON:case f.JOY0_LEFT:return void(b?k&=191:k|=64);case f.PADDLE0_BUTTON:case f.JOY0_RIGHT:return void(b?k&=127:k|=128);case f.JOY1_UP:return void(b?k&=254:k|=1);case f.JOY1_DOWN:return void(b?k&=253:k|=2);case f.JOY1_LEFT:return void(b?k&=251:k|=4);case f.JOY1_RIGHT:return void(b?k&=247:k|=8);case f.RESET:return void(b?m&=254:m|=1);case f.SELECT:return void(b?m&=253:m|=2)}if(b)switch(a){case f.BLACK_WHITE:return 0==(8&m)?m|=8:m&=247,void g.getTia().getVideoOutput().showOSD(0!=(8&m)?\"COLOR\":\"B/W\",!0);case f.DIFFICULTY0:return 0==(64&m)?m|=64:m&=191,void g.getTia().getVideoOutput().showOSD(0!=(64&m)?\"P1 Expert\":\"P1 Novice\",!0);case f.DIFFICULTY1:return 0==(128&m)?m|=128:m&=127,void g.getTia().getVideoOutput().showOSD(0!=(128&m)?\"P2 Expert\":\"P2 Novice\",!0)}},this.controlsStateReport=function(a){a[f.BLACK_WHITE]=0==(8&m),a[f.DIFFICULTY0]=0!=(64&m),a[f.DIFFICULTY1]=0!=(128&m),a[f.SELECT]=0==(2&m),a[f.RESET]=0==(1&m)},this.saveState=function(){return{t:h,c:i,l:j,SA:k,SAC:l,SB:m,SBC:n,IT:o,IS:p,T1:q,T8:r,T6:s,T2:t}},this.loadState=function(a){h=a.t,i=a.c,j=a.l,l=a.SAC,m=a.SB,n=a.SBC,o=a.IT,p=a.IS,q=a.T1,r=a.T8,s=a.T6,t=a.T2},this.debug=!1;var g,h=1024,i=1024,j=1024,k=255,l=0,m=11,n=0,o=256*Math.random()|0,p=0,q=0,r=0,s=0,t=0,u=7},function(){\"use strict\"\n;for(var a=[0,4210752,7105644,9474192,11579568,13158600,14474460,16053492,17476,1074276,2393220,3448992,4241592,5296336,6088936,6880508,10352,1328260,2645144,3963052,5016764,6070476,6862044,7915756,6276,1586328,3166380,4745408,6062288,7378144,8431852,9747708,136,2105500,3947696,5789888,7368912,8947936,10526956,11842812,6029432,7610508,8928416,10246320,11563200,12616912,13671644,14725356,7864392,9445472,10763384,12081292,13398176,14451892,15506628,16560340,8650772,9969712,11287628,12605544,13660284,14715028,15507624,16561340,8912896,10231836,11550776,12606544,13661288,14716028,15508624,16562340,8132608,9451548,11031608,12349520,13404264,14457980,15512720,16566436,6040576,7883804,9463864,11306064,12622952,13939836,15256720,16572580,2898944,4742172,6585400,8428624,9745512,11325564,12641424,13958308,15360,2120736,4226112,6069340,7648372,9228428,10806436,12123320,14356,1858612,3701840,5281900,6861956,8178844,9495732,10812616,12332,1855564,3436648,5016708,6596764,7913652,8967372,10284256,10308,1591396,3172484,4490400,5807288,7124176,8178920,9232636],b=[0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,22656,2125972,3966120,5807292,7384268,8700124,10277100,11591932,23620,2127964,3969140,5811340,7389344,8705200,10283204,11599060,13424,2117768,3958944,5801140,7379144,8695004,10273004,11588860,1336320,3440672,5281852,7123032,8701040,10279044,11856028,13171888,1310832,3416200,5258400,7100596,8679624,10257628,11836652,13152508,6052864,7631904,9210940,10789976,12105840,13158532,14474396,15527088,6029424,7610500,8928404,10246312,11563188,12616900,13671632,14725344,7355392,8935452,10515512,11832400,13149288,14465148,15518864,16572580,7340120,8921196,10501248,11819156,13136036,14451892,15506628,16560340,7348224,8928284,10508344,11826256,13142120,14459004,15512720,16566436,8388668,9707604,11025516,12343424,13398164,14451880,15506616,16560328,8912896,10231840,11549756,12605528,13660272,14713988,15506588,16560304,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113],c=new Uint32Array(256),d=new Uint32Array(256),e=0,f=a.length;e<f;e++)c[2*e]=c[2*e+1]=a[e]+4278190080,d[2*e]=d[2*e+1]=b[e]+4278190080;a=b=void 0,jt.TiaPalettes={NTSC:c,PAL:d}}(),jt.TiaAudio=function(){\"use strict\";function a(){e||(e=new jt.AudioSignal(\"TiaAudio\",c,k,j)),d.connectAudioSignal(e)}function b(){e&&d.disconnectAudioSignal(e)}var c=this;this.connectAudioSocket=function(a){d=a},this.cartridgeInserted=function(a){f=a&&a.needsAudioClock()?a:null},this.audioClockPulse=function(){d.audioClockPulse()},this.getChannel0=function(){return h},this.getChannel1=function(){return i},this.powerOn=function(){this.reset(),a()},this.powerOff=function(){b()},this.reset=function(){h.setVolume(0),i.setVolume(0),g=0},this.nextSample=function(){f&&f.audioClockPulse();var a=h.nextSample()-i.nextSample();return a!==g&&(a=(9*a+g)/10,g=a),a};var d,e,f,g=0,h=new jt.TiaAudioChannel,i=new jt.TiaAudioChannel,j=.4,k=31440},jt.TiaAudioChannel=function(){\"use strict\";this.nextSample=function(){return--s<=0&&(s+=r,t=o()),1===t?p:0},this.setVolume=function(a){p=a/E},this.setDivider=function(a){r!==a&&(s=s/r*a,r=a)},this.setControl=function(b){q!==b&&(q=b,o=0===b||11===b?a:1===b?c:2===b?k:3===b?l:4===b||5===b?f:6===b||10===b?j:7===b||9===b?d:8===b?e:12===b||13===b?h:14===b?m:15===b?n:a)};var a=function(){return 1},b=function(){return z[y]},c=function(){return 15==++y&&(y=0),z[y]},d=function(){return 31==++A&&(A=0),B[A]},e=function(){var a=1&x,b=1&(x>>4^a);return x>>>=1,0===b?x&=255:x|=256,a},f=function(){return 1===r?1:u=u?0:1},g=function(){return v},h=function(){return 0==--w&&(w=3,v=v?0:1),v},i=function(){return D[C]},j=function(){return 31==++C&&(C=0),D[C]},k=function(){return i()!==j()?c():b()},l=function(){return d()?c():b()},m=function(){return i()!=j()?h():g()},n=function(){return d()?h():g()},o=a,p=0,q=0,r=1,s=1,t=0,u=1,v=1,w=3,x=511,y=14,z=[1,1,1,1,0,0,0,1,0,0,1,1,0,1,0],A=30,B=[1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0],C=30,D=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],E=15},jt.Tia=function(pCpu,pPia,audioSocket){\"use strict\";function init(){generateObjectsLineSprites(),generateObjectsCopiesOffsets()}function renderLineTo(a){var b,c=a>LINE_WIDTH?LINE_WIDTH:a;if(vBlankOn)for(var d=renderClock;d<c;++d)linePixels[d]=vBlankColor;else{for(var e=collisions,f=renderClock-HBLANK_DURATION,g=c-HBLANK_DURATION;f<g;++f){var h=0,i=collisionsPossible;playfieldPriority&&(playfieldEnabled&&(1&(f<80?playfieldPatternL>>(f>>2):playfieldPatternR>>(f-80>>2))?h=playfieldColor:i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),player0Enabled&&(b=f-player0Pixel,b<0&&(b+=160),playerLineSprites[player0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player0Color):i&=P0C),missile0Enabled&&(b=f-missile0Pixel,b<0&&(b+=160),missileBallLineSprites[missile0LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile0Color):i&=M0C),player1Enabled&&(b=f-player1Pixel,b<0&&(b+=160),playerLineSprites[player1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=player1Color):i&=P1C),missile1Enabled&&(b=f-missile1Pixel,b<0&&(b+=160),missileBallLineSprites[missile1LineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=missile1Color):i&=M1C),playfieldPriority||(playfieldEnabled&&(f<80?playfieldPatternL>>(f>>2)&1?h||(h=playfieldLeftColor):i&=PFC:playfieldPatternR>>(f-80>>2)&1?h||(h=playfieldRightColor):i&=PFC),ballEnabled&&(b=f-ballPixel,b<0&&(b+=160),missileBallLineSprites[ballLineSpritePointer+(b>>3)]>>(7&b)&1?h||(h=ballColor):i&=BLC)),linePixels[f+HBLANK_DURATION]=h||playfieldBackground,e|=i}debugNoCollisions||(collisions=e)}}function changeAt(a){vBlankOn||(a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock)}function changeAtClock(){changeAt(clock)}function changeAtClockPlus(a){changeAt(clock+a)}function changePlayfieldAtClock(){if(debug&&debugPixel(DEBUG_PF_GR_COLOR),clock<renderClock-1)return changeAtClock();var a=3&clock;changeAtClockPlus(a<3?4-a:5)}function changeVBlankAtClockPlus1(){var a=clock+1;a>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(a),renderClock=a),changeClock=renderClock}function updateToClock(){vBlankOn||clock>renderClock&&((changeClock>=0||changeClockPrevLine>=0)&&renderLineTo(clock),renderClock=clock)}function augmentCollisionsPossible(){collisionsPossible=65534,player0Enabled||(collisionsPossible&=P0C),player1Enabled||(collisionsPossible&=P1C),missile0Enabled||(collisionsPossible&=M0C),missile1Enabled||(collisionsPossible&=M1C),playfieldEnabled||(collisionsPossible&=PFC),ballEnabled||(collisionsPossible&=BLC)}function playfieldUpdateSprite(){playfieldPatternL=PF2<<12|jt.Util.reverseInt8(PF1)<<4|(240&PF0)>>4,playfieldUpdateSpriteR()}function playfieldUpdateSpriteR(){playfieldPatternR=playfieldReflected?jt.Util.reverseInt8(PF0)<<16|PF1<<8|jt.Util.reverseInt8(PF2):playfieldPatternL,0!==playfieldPatternL||0!==playfieldPatternR?(playfieldEnabled=!0,augmentCollisionsPossible()):(playfieldEnabled=!1,collisionsPossible&=PFC)}function ballSetEnabled(a){a?(ballEnabled=!0,augmentCollisionsPossible()):(ballEnabled=!1,collisionsPossible&=BLC)}function player0SetShape(a){if(NUSIZ0!==a){var b=NUSIZ0^a,c=NUSIZ0;NUSIZ0=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player0Alt){var f=e-player0Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];if(h!==g)if(player0Enabled&&changeAtClockPlus(2),player0Alt=player0Pixel>=80?1:2,player0LineSpritePointer+=20,player0AltFrom=f,player0AltLength=playerCopyLengthPerShape[d],192&g)player0AltCopyOffset=191&g;else if(clock<HBLANK_DURATION&&hMoveHitBlank)player0AltCopyOffset=128;else{var i=playerPixelSizePerShape[d]\n;player0AltCopyOffset=playerScanStartPerShape[d]+g*i+(1&f),player0AltLength-=(192&h?0:h)*i}}player0UpdateSprite(2)}if(55&b){if(!missile0Alt&&(f=e-missile0Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],(h=missileScanOffsetsShape[160*((48&a)>>1|d)+f])!==g)){missile0Enabled&&changeAtClockPlus(2),missile0Alt=missile0Pixel>=80?1:2,missile0LineSpritePointer+=20,missile0AltFrom=f;var j=(48&a)>>4;missile0AltLength=4+(1<<j),192&g?missile0AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile0AltCopyOffset=128:(missile0AltCopyOffset=4+(g<<j)+(1&f),missile0AltLength-=(192&h?0:h)<<j)}missile0UpdateSprite(2)}}}function player0SetSprite(a){debug&&debugPixel(DEBUG_P0_GR_COLOR),GRP0d!==a&&(GRP0d=a,VDELP0||player0UpdateSprite(1)),GRP1!==GRP1d&&(GRP1=GRP1d,VDELP1&&player1UpdateSprite(1))}function player0UpdateSprite(a){var b=VDELP0?GRP0:GRP0d;if(b){var c=((REFP0<<11|b<<3|7&NUSIZ0)<<6)+(player0Alt?20:0);player0Enabled&&player0LineSpritePointer===c||(changeAtClockPlus(a),player0LineSpritePointer=c,player0Alt&&player0DefineAlt()),player0Enabled||(player0Enabled=!0,augmentCollisionsPossible())}else player0Enabled&&(changeAtClockPlus(a),player0Enabled=!1,collisionsPossible&=P0C)}function player1SetShape(a){if(NUSIZ1!==a){var b=NUSIZ1^a,c=NUSIZ1;NUSIZ1=a;var d=7&a,e=clock<HBLANK_DURATION?2:clock-HBLANK_DURATION+2;if(7&b){if(!player1Alt){var f=e-player1Pixel;f<0?f+=160:f>=160&&(f-=160);var g=playerScanOffsetsShape[160*(7&c)+f],h=playerScanOffsetsShape[160*d+f];h!==g&&(player1Enabled&&changeAtClockPlus(2),player1Alt=player1Pixel>=80?1:2,player1LineSpritePointer+=40,player1AltFrom=f,player1AltLength=playerCopyLengthPerShape[d],192&g?player1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?player1AltCopyOffset=128:(player1AltCopyOffset=playerScanStartPerShape[d]+g*playerPixelSizePerShape[d]+(1&f),player1AltLength-=(192&h?0:h)*playerPixelSizePerShape[d]))}player1UpdateSprite(2)}if(55&b){if(!missile1Alt&&(f=e-missile1Pixel,f<0?f+=160:f>=160&&(f-=160),g=missileScanOffsetsShape[160*((48&c)>>1|7&c)+f],(h=missileScanOffsetsShape[160*((48&a)>>1|d)+f])!==g)){missile1Enabled&&changeAtClockPlus(2),missile1Alt=missile1Pixel>=80?1:2,missile1LineSpritePointer+=40,missile1AltFrom=f;var i=(48&a)>>4;missile1AltLength=4+(1<<i),192&g?missile1AltCopyOffset=191&g:clock<HBLANK_DURATION&&hMoveHitBlank?missile1AltCopyOffset=128:(missile1AltCopyOffset=4+(g<<i)+(1&f),missile1AltLength-=(192&h?0:h)<<i)}missile1UpdateSprite(2)}}}function player1SetSprite(a){debug&&debugPixel(DEBUG_P1_GR_COLOR),GRP1d!==a&&(GRP1d=a,VDELP1||player1UpdateSprite(1)),GRP0!==GRP0d&&(GRP0=GRP0d,VDELP0&&player0UpdateSprite(1)),ENABL!==ENABLd&&(ENABL=ENABLd,VDELBL&&changeAtClockPlus(1),ballSetEnabled(ENABL))}function player1UpdateSprite(a){var b=VDELP1?GRP1:GRP1d;if(b){var c=((REFP1<<11|b<<3|7&NUSIZ1)<<6)+(player1Alt?40:0);player1Enabled&&player1LineSpritePointer===c||(changeAtClockPlus(a),player1LineSpritePointer=c,player1Alt&&player1DefineAlt()),player1Enabled||(player1Enabled=!0,augmentCollisionsPossible())}else player1Enabled&&(changeAtClockPlus(a),player1Enabled=!1,collisionsPossible&=P1C)}function missile0UpdateSprite(a){var b=(((48&NUSIZ0)>>1|7&NUSIZ0)<<6)+(missile0Alt?20:0);missile0LineSpritePointer!==b&&(missile0Enabled?(changeAtClockPlus(a),missile0LineSpritePointer=b,missile0Alt&&missile0DefineAlt()):missile0LineSpritePointer=b)}function missile0SetEnabled(a){a?(missile0Enabled=!0,augmentCollisionsPossible(),missile0Alt&&missile0DefineAlt()):(missile0Enabled=!1,collisionsPossible&=M0C)}function missile0SetResetToPlayer(a){RESMP0!==(2&a)&&(ENAM0?(changeAtClock(),missile0SetEnabled(!(RESMP0=2&a))):RESMP0=2&a,RESMP0||(missile0Pixel=player0Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ0])>=160&&(missile0Pixel-=160))}function missile1UpdateSprite(a){var b=(((48&NUSIZ1)>>1|7&NUSIZ1)<<6)+(missile1Alt?40:0);missile1LineSpritePointer!==b&&(missile1Enabled?(changeAtClockPlus(a),missile1LineSpritePointer=b,missile1Alt&&missile1DefineAlt()):missile1LineSpritePointer=b)}function missile1SetEnabled(a){a?(missile1Enabled=!0,augmentCollisionsPossible(),missile1Alt&&missile1DefineAlt()):(missile1Enabled=!1,collisionsPossible&=M1C)}function missile1SetResetToPlayer(a){RESMP1!==(2&a)&&(ENAM1?(changeAtClock(),missile1SetEnabled(!(RESMP1=2&a))):RESMP1=2&a,RESMP1||(missile1Pixel=player1Pixel+missileCenterOffsetsPerPlayerSize[7&NUSIZ1])>=160&&(missile1Pixel-=160))}function player0DefineAlt(){var a=player0AltFrom<<16|player0AltLength<<8|player0AltCopyOffset,b=player0LineSpritePointer-20>>6;if(player0AltControl[b]!==a){for(var c=player0LineSpritePointer-20,d=0;d<20;++d)playerLineSprites[player0LineSpritePointer+d]=playerLineSprites[c+d];var e=player0AltFrom;if(128&player0AltCopyOffset)for(var f=0;f<player0AltLength;++f)playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=player0AltCopyOffset,h=player0AltCopyOffset+player0AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player0LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player0AltControl[b]=a}}function player1DefineAlt(){var a=player1AltFrom<<16|player1AltLength<<8|player1AltCopyOffset,b=player1LineSpritePointer-40>>6;if(player1AltControl[b]!==a){for(var c=player1LineSpritePointer-40,d=0;d<20;++d)playerLineSprites[player1LineSpritePointer+d]=playerLineSprites[c+d];var e=player1AltFrom;if(128&player1AltCopyOffset)for(var f=0;f<player1AltLength;++f)playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=player1AltCopyOffset,h=player1AltCopyOffset+player1AltLength;g<h;++g)playerLineSprites[c+(g>>3)]>>(7&g)&1?playerLineSprites[player1LineSpritePointer+(e>>3)]|=1<<(7&e):playerLineSprites[player1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}player1AltControl[b]=a}}function missile0DefineAlt(){var a=missile0AltFrom<<16|missile0AltLength<<8|missile0AltCopyOffset,b=missile0LineSpritePointer-20>>6;if(missile0AltControl[b]!==a){for(var c=missile0LineSpritePointer-20,d=0;d<20;++d)missileBallLineSprites[missile0LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile0AltFrom;if(128&missile0AltCopyOffset)for(var f=0;f<missile0AltLength;++f)missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ0];for(var g=missile0AltCopyOffset,h=missile0AltCopyOffset+missile0AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile0LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile0LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile0AltControl[b]=a}}function missile1DefineAlt(){var a=missile1AltFrom<<16|missile1AltLength<<8|missile1AltCopyOffset,b=missile1LineSpritePointer-40>>6;if(missile1AltControl[b]!==a){for(var c=missile1LineSpritePointer-40,d=0;d<20;++d)missileBallLineSprites[missile1LineSpritePointer+d]=missileBallLineSprites[c+d];var e=missile1AltFrom;if(128&missile1AltCopyOffset)for(var f=0;f<missile1AltLength;++f)missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160);else{c-=objectsLineSpritePointerDeltaToSingleCopy[7&NUSIZ1];for(var g=missile1AltCopyOffset,h=missile1AltCopyOffset+missile1AltLength;g<h;++g)missileBallLineSprites[c+(g>>3)]>>(7&g)&1?missileBallLineSprites[missile1LineSpritePointer+(e>>3)]|=1<<(7&e):missileBallLineSprites[missile1LineSpritePointer+(e>>3)]&=~(1<<(7&e)),++e>=160&&(e-=160)}missile1AltControl[b]=a}}function getRESxPixel(){if(clock>=HBLANK_DURATION+(hMoveHitBlank?7:0))return clock-HBLANK_DURATION;if(hMoveHitBlank){if(clock>=HBLANK_DURATION)return-6;var a=clock-hMoveHitClock-4>>2;return a>8?-6:a>1?-(a-2):-(158+a)}return-158}\nfunction checkLateHMOVE(){hMoveLateHit?(hMoveLateHit=!1,hMoveHitBlank=hMoveLateHitBlank,performHMOVE()):hMoveHitBlank=!1}function updateExtendedHBLANK(){hMoveHitBlank!==(linePixels[HBLANK_DURATION]===hBlankColor)&&(hMoveHitBlank?linePixels[HBLANK_DURATION]=linePixels[HBLANK_DURATION+1]=linePixels[HBLANK_DURATION+2]=linePixels[HBLANK_DURATION+3]=linePixels[HBLANK_DURATION+4]=linePixels[HBLANK_DURATION+5]=linePixels[HBLANK_DURATION+6]=linePixels[HBLANK_DURATION+7]=hBlankColor:changeClock=HBLANK_DURATION),hMoveHitBlank&&(renderClock=HBLANK_DURATION+8)}function endObjectsAltStatusMidLine(){1===player0Alt&&(player0Enabled&&changeAtClock(),player0Alt=0,player0LineSpritePointer-=20),1===player1Alt&&(player1Enabled&&changeAtClock(),player1Alt=0,player1LineSpritePointer-=40),1===missile0Alt&&(missile0Enabled&&changeAtClock(),missile0Alt=0,missile0LineSpritePointer-=20),1===missile1Alt&&(missile1Enabled&&changeAtClock(),missile1Alt=0,missile1LineSpritePointer-=40)}function endObjectsAltStatusEndOfLine(){2===player0Alt&&(player0Alt=0,player0LineSpritePointer-=20),2===player1Alt&&(player1Alt=0,player1LineSpritePointer-=40),2===missile0Alt&&(missile0Alt=0,missile0LineSpritePointer-=20),2===missile1Alt&&(missile1Alt=0,missile1LineSpritePointer-=40)}function vSyncSet(a){debug?(debugPixel(VSYNC_COLOR),changeAtClock(),vSyncOn=0!=(2&a),vBlankColor=vSyncOn?VSYNC_COLOR:DEBUG_VBLANK_COLOR):vSyncOn=0!=(2&a)}function generateObjectsLineSprites(){function a(a,b,c){for(var d=0;d<8;++d)a[c+d]=b>>d&1}function b(a,b,c){for(var d=0;d<8;++d)a[c+4*d]=a[c+4*d+1]=a[c+4*d+2]=a[c+4*d+3]=b>>d&1}function c(a,b,c,d,e){for(var f=((a<<11|b<<3|c)<<6)+20*d,g=0;g<20;++g)for(var h=0;h<8;++h)e[8*g+h]&&(playerLineSprites[f+g]|=1<<h)}function d(a,b,c,d){for(var e=((a<<3|b)<<6)+20*c,f=0;f<20;++f)for(var g=0;g<8;++g)d[8*f+g]&&(missileBallLineSprites[e+f]|=1<<g)}for(var e=new Uint8Array(160),f=0;f<=1;++f)for(var g=0;g<256;++g){var h=f?g:jt.Util.reverseInt8(g);a(e,h,5),c(f,g,0,0,e),a(e,h,21),c(f,g,1,0,e),a(e,h,37),c(f,g,3,0,e),a(e,0,21),c(f,g,2,0,e),a(e,h,69),c(f,g,6,0,e),a(e,0,37),c(f,g,4,0,e),a(e,0,69),e[5]=0,function(a,b,c){for(var d=0;d<8;++d)a[c+2*d]=a[c+2*d+1]=b>>d&1}(e,h,6),c(f,g,5,0,e),b(e,h,6),c(f,g,7,0,e),b(e,0,6)}jt.Util.arrayFill(e,0);for(var i=0;i<4;++i)h=(1<<(1<<i))-1,a(e,h,4),d(i,0,0,e),d(i,5,0,e),d(i,7,0,e),a(e,h,20),d(i,1,0,e),a(e,h,36),d(i,3,0,e),a(e,0,20),d(i,2,0,e),a(e,h,68),d(i,6,0,e),a(e,0,36),d(i,4,0,e),a(e,0,4),a(e,0,68)}function generateObjectsCopiesOffsets(){var a=new Uint8Array(40);a[0]=0,a[1]=1,a[2]=2,a[3]=3,jt.Util.arrayFill(playerCopyOffsetsReset,128),jt.Util.arrayFill(playerScanOffsetsShape,128);for(var b=0;b<13;++b){var c=b-a[b];playerCopyOffsetsReset[0+b]=c,playerCopyOffsetsReset[160+b]=c,playerCopyOffsetsReset[160+b+16]=c,playerCopyOffsetsReset[320+b]=c,playerCopyOffsetsReset[320+b+32]=c,playerCopyOffsetsReset[480+b]=c,playerCopyOffsetsReset[480+b+16]=c,playerCopyOffsetsReset[480+b+32]=c,playerCopyOffsetsReset[640+b]=c,playerCopyOffsetsReset[640+b+64]=c,playerCopyOffsetsReset[960+b]=c,playerCopyOffsetsReset[960+b+32]=c,playerCopyOffsetsReset[960+b+64]=c,c=b<5?64|b:b-5,playerScanOffsetsShape[0+b]=c,playerScanOffsetsShape[160+b]=c,playerScanOffsetsShape[160+b+16]=c,playerScanOffsetsShape[320+b]=c,playerScanOffsetsShape[320+b+32]=c,playerScanOffsetsShape[480+b]=c,playerScanOffsetsShape[480+b+16]=c,playerScanOffsetsShape[480+b+32]=c,playerScanOffsetsShape[640+b]=c,playerScanOffsetsShape[640+b+64]=c,playerScanOffsetsShape[960+b]=c,playerScanOffsetsShape[960+b+32]=c,playerScanOffsetsShape[960+b+64]=c}for(b=0;b<22;b++)c=b-a[b],playerCopyOffsetsReset[800+b]=c,c=b<6?64|b:b-6>>1,playerScanOffsetsShape[800+b]=c;for(b=0;b<38;b++)c=b-a[b],playerCopyOffsetsReset[1120+b]=c,c=b<6?64|b:b-6>>2,playerScanOffsetsShape[1120+b]=c;jt.Util.arrayFill(missileCopyOffsetsReset,128),jt.Util.arrayFill(missileScanOffsetsShape,128);for(var d=0;d<=3;++d){var e=4+(1<<d);for(b=0;b<e;++b)c=b-a[b],missileCopyOffsetsReset[8*d*160+0+b]=c,missileCopyOffsetsReset[8*d*160+160+b]=c,missileCopyOffsetsReset[8*d+160+b+16]=c,missileCopyOffsetsReset[8*d*160+320+b]=c,missileCopyOffsetsReset[8*d+320+b+32]=c,missileCopyOffsetsReset[8*d*160+480+b]=c,missileCopyOffsetsReset[8*d+480+b+16]=c,missileCopyOffsetsReset[8*d*160+480+b+32]=c,missileCopyOffsetsReset[8*d*160+640+b]=c,missileCopyOffsetsReset[8*d+640+b+64]=c,missileCopyOffsetsReset[8*d*160+800+b]=c,missileCopyOffsetsReset[8*d*160+960+b]=c,missileCopyOffsetsReset[8*d+960+b+32]=c,missileCopyOffsetsReset[8*d*160+960+b+64]=c,missileCopyOffsetsReset[8*d*160+1120+b]=c,c=b<4?64|b:b-4>>d,missileScanOffsetsShape[8*d*160+0+b]=c,missileScanOffsetsShape[8*d*160+160+b]=c,missileScanOffsetsShape[8*d+160+b+16]=c,missileScanOffsetsShape[8*d*160+320+b]=c,missileScanOffsetsShape[8*d+320+b+32]=c,missileScanOffsetsShape[8*d*160+480+b]=c,missileScanOffsetsShape[8*d+480+b+16]=c,missileScanOffsetsShape[8*d*160+480+b+32]=c,missileScanOffsetsShape[8*d*160+640+b]=c,missileScanOffsetsShape[8*d+640+b+64]=c,missileScanOffsetsShape[8*d*160+800+b]=c,missileScanOffsetsShape[8*d*160+960+b]=c,missileScanOffsetsShape[8*d+960+b+32]=c,missileScanOffsetsShape[8*d*160+960+b+64]=c,missileScanOffsetsShape[8*d*160+1120+b]=c}}var self=this;this.powerOn=function(){jt.Util.arrayFill(linePixels,VBLANK_COLOR),jt.Util.arrayFill(debugPixels,0),audioSignal.getChannel0().setVolume(0),audioSignal.getChannel1().setVolume(0),initLatchesAtPowerOn(),hMoveLateHit=!1,changeClock=changeClockPrevLine=-1,audioSignal.powerOn(),powerOn=!0},this.powerOff=function(){powerOn=!1,videoSignal.signalOff(),audioSignal.powerOff()},this.frame=function(){do{clock=0,changeClock=-1,renderClock=HBLANK_DURATION,debug&&(debugLevel>=4?jt.Util.arrayFill(linePixels,4278190080):debugLevel>=2&&debugLevel<4&&(changeClock=0)),checkLateHMOVE(),bus.clockPulse(),cpu.setRDY(!0);for(var a=0;a<22;++a)clock+=3,bus.clockPulse();updateExtendedHBLANK();for(var b=0;b<27;++b)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),endObjectsAltStatusMidLine();for(var c=0;c<26;++c)clock+=3,bus.clockPulse();audioSignal.audioClockPulse(),finishLine()}while(!videoSignal.nextLine(linePixels,vSyncOn));videoSignal.finishFrame()},this.connectBus=function(a){bus=a},this.getVideoOutput=function(){return videoSignal},this.getAudioOutput=function(){return audioSignal},this.setVideoStandard=function(a){videoSignal.setVideoStandard(a),palette=jt.TiaPalettes[a.name]},this.debug=function(a){debugLevel=a>4?0:a,debug=0!==debugLevel,pia.debug=debug,debug?debugSetColors():debugRestoreColors()},this.showDebugMessage=function(){videoSignal.showOSD(debug?\"Debug Level \"+debugLevel:\"Debug OFF\",!0)},this.debugNoCollisions=function(a){debugNoCollisions=!!a},this.getDebugNoCollisions=function(){return debugNoCollisions},this.read=function(a){switch(a&READ_ADDRESS_MASK){case 0:return updateToClock(),(1024&collisions)>>3|(16384&collisions)>>8;case 1:return updateToClock(),(8192&collisions)>>6|(512&collisions)>>3;case 2:return updateToClock(),(4096&collisions)>>5|(2048&collisions)>>5;case 3:return updateToClock(),(256&collisions)>>1|(128&collisions)>>1;case 4:return updateToClock(),(32&collisions)<<2|(16&collisions)<<2;case 5:return updateToClock(),(8&collisions)<<4|(4&collisions)<<4;case 6:return updateToClock(),(2&collisions)<<6;case 7:return updateToClock(),(32768&collisions)>>8|64&collisions;case 8:return INPT0;case 9:return INPT1;case 10:return INPT2;case 11:return INPT3;case 12:return INPT4;case 13:return INPT5;default:return 0}},this.write=function(a,b){switch(a&WRITE_ADDRESS_MASK){case 0:return void vSyncSet(b);case 1:return void vBlankSet(b);case 2:return cpu.setRDY(!1),void(debug&&debugPixel(DEBUG_WSYNC_COLOR));case 9:return void(COLUBK===b||debug||(changeAtClock(),COLUBK=b,playfieldBackground=palette[b]));case 13:return void(PF0!==(240&b)&&(changePlayfieldAtClock(),PF0=240&b,playfieldUpdateSprite()));case 14:return void(PF1!==b&&(changePlayfieldAtClock(),PF1=b,\nplayfieldUpdateSprite()));case 15:return void(PF2!==b&&(changePlayfieldAtClock(),PF2=b,playfieldUpdateSprite()));case 8:return void(COLUPF===b||debug||((playfieldEnabled&&!playfieldScoreMode||ballEnabled)&&changeAtClock(),COLUPF=b,ballColor=palette[b],playfieldScoreMode||(playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)));case 10:return void(CTRLPF!==b&&playfieldSetShape(b));case 20:return void hitRESBL();case 31:return void(ENABLd!==(2&b)&&(ENABLd=2&b,VDELBL||(changeAtClock(),ballSetEnabled(ENABLd))));case 39:return void(VDELBL!==(1&b)&&(VDELBL=1&b,ENABL!==ENABLd&&(changeAtClock(),ballSetEnabled(VDELBL?ENABL:ENABLd))));case 4:return void player0SetShape(b);case 6:return void(COLUP0===b||debug||(COLUP0=b,(player0Enabled||missile0Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player0Color=missile0Color=palette[b],playfieldScoreMode&&(playfieldLeftColor=player0Color)));case 11:return void(REFP0!==(b>>3&1)&&(REFP0=b>>3&1,player0UpdateSprite(0)));case 16:return void hitRESP0();case 27:return void player0SetSprite(b);case 37:return void(VDELP0!==(1&b)&&(VDELP0=1&b,GRP0!==GRP0d&&player0UpdateSprite(0)));case 5:return void player1SetShape(b);case 7:return void(COLUP1===b||debug||(COLUP1=b,(player1Enabled||missile1Enabled||playfieldEnabled&&playfieldScoreMode)&&changeAtClock(),player1Color=missile1Color=palette[b],playfieldScoreMode&&(playfieldRightColor=player1Color)));case 12:return void(REFP1!==(b>>3&1)&&(REFP1=b>>3&1,player1UpdateSprite(0)));case 17:return void hitRESP1();case 28:return void player1SetSprite(b);case 38:return void(VDELP1!==(1&b)&&(VDELP1=1&b,GRP1!==GRP1d&&player1UpdateSprite(0)));case 18:return void hitRESM0();case 29:return void(ENAM0!==(2&b)&&(ENAM0=2&b,RESMP0||(changeAtClock(),missile0SetEnabled(ENAM0))));case 40:return void missile0SetResetToPlayer(b);case 19:return void hitRESM1();case 30:return void(ENAM1!==(2&b)&&(ENAM1=2&b,RESMP1||(changeAtClock(),missile1SetEnabled(ENAM1))));case 41:return void missile1SetResetToPlayer(b);case 32:return void(HMP0=(b>127?-16:0)+(b>>4));case 33:return void(HMP1=(b>127?-16:0)+(b>>4));case 34:return void(HMM0=(b>127?-16:0)+(b>>4));case 35:return void(HMM1=(b>127?-16:0)+(b>>4));case 36:return void(HMBL=(b>127?-16:0)+(b>>4));case 42:return void hitHMOVE();case 43:return void(HMP0=HMP1=HMM0=HMM1=HMBL=0);case 44:return changeAtClock(),void(collisions=0);case 21:return void(AUDC0!==b&&(AUDC0=b,audioSignal.getChannel0().setControl(15&b)));case 22:return void(AUDC1!==b&&(AUDC1=b,audioSignal.getChannel1().setControl(15&b)));case 23:return void(AUDF0!==b&&(AUDF0=b,audioSignal.getChannel0().setDivider(1+(31&b))));case 24:return void(AUDF1!==b&&(AUDF1=b,audioSignal.getChannel1().setDivider(1+(31&b))));case 25:return void(AUDV0!==b&&(AUDV0=b,audioSignal.getChannel0().setVolume(15&b)));case 26:return void(AUDV1!==b&&(AUDV1=b,audioSignal.getChannel1().setVolume(15&b)))}};var finishLine=function(){changeClock>=0?(renderLineTo(LINE_WIDTH),changeClockPrevLine=changeClock):changeClockPrevLine>=0&&(renderLineTo(changeClockPrevLine),changeClockPrevLine=-1),endObjectsAltStatusEndOfLine(),paddle0Position>=0&&!paddleCapacitorsGrounded&&(INPT0<128&&++paddle0CapacitorCharge>=paddle0Position&&(INPT0|=128),INPT1<128&&++paddle1CapacitorCharge>=paddle1Position&&(INPT1|=128)),debugLevel>=1&&processDebugPixelsInLine()},playfieldSetShape=function(a){if(CTRLPF!==a){var b=7&a;b!==(7&CTRLPF)&&(playfieldEnabled&&changeAtClock(),b=0!=(1&a),playfieldReflected!==b&&(playfieldReflected=b,playfieldUpdateSpriteR()),b=0!=(2&a),playfieldScoreMode!==b&&(playfieldScoreMode=b,debug||(b?(playfieldLeftColor=player0Color,playfieldRightColor=player1Color):playfieldColor=playfieldLeftColor=playfieldRightColor=ballColor)),playfieldPriority=0!=(4&a)),b=48&a,b!==(48&CTRLPF)&&(ballEnabled&&changeAtClock(),ballLineSpritePointer=b>>1<<6),CTRLPF=a}},hitRESP0=function(){debug&&debugPixel(DEBUG_P0_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player0Pixel!==b){player0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player0Pixel;d<0&&(d+=160),player0Pixel=b;var e=7&NUSIZ0;if(player0Alt){if(d<=playerCopyLengthPerShape[e])return}else player0LineSpritePointer+=20;var f=c-b;f<-100&&(f+=160),player0Alt=b>=80?1:2,player0AltFrom=f>=0?f:160+f,player0AltLength=playerCopyLengthPerShape[e]-f,player0AltCopyOffset=playerCopyOffsetsReset[160*e+d],player0Enabled&&player0DefineAlt()}},hitRESP1=function(){debug&&debugPixel(DEBUG_P1_RES_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(player1Pixel!==b){player1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-player1Pixel;d<0&&(d+=160),player1Pixel=b;var e=7&NUSIZ1;if(player1Alt){if(d<=playerCopyLengthPerShape[e])return}else player1LineSpritePointer+=40;var f=c-b;f<-100&&(f+=160),player1Alt=b>=80?1:2,player1AltFrom=f>=0?f:160+f,player1AltLength=playerCopyLengthPerShape[e]-f,player1AltCopyOffset=playerCopyOffsetsReset[160*e+d],player1Enabled&&player1DefineAlt()}},hitRESM0=function(){debug&&debugPixel(DEBUG_M0_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;if(missile0Pixel!==b){missile0Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile0Pixel;if(d<0&&(d+=160),missile0Pixel=b,missile0Alt){if(d<=4+(1<<((48&NUSIZ0)>>4)))return}else missile0LineSpritePointer+=20;var e=c-b;e<-100&&(e+=160),missile0Alt=b>=80?1:2,missile0AltFrom=e>=0?e:160+e,missile0AltLength=4+(1<<((48&NUSIZ0)>>4))-e,missile0AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ0)>>1|7&NUSIZ0)+d],missile0Enabled&&missile0DefineAlt()}},hitRESM1=function(){debug&&debugPixel(DEBUG_M1_COLOR);var a=getRESxPixel(),b=a>=1?a:-a;if(missile1Pixel!==b){missile1Enabled&&changeAtClock();var c=a>=0?b:0,d=c-missile1Pixel;if(d<0&&(d+=160),missile1Pixel=b,missile1Alt){if(d<=4+(1<<((48&NUSIZ1)>>4)))return}else missile1LineSpritePointer+=40;var e=c-b;e<-100&&(e+=160),missile1Alt=b>=80?1:2,missile1AltFrom=e>=0?e:160+e,missile1AltLength=4+(1<<((48&NUSIZ1)>>4))-e,missile1AltCopyOffset=missileCopyOffsetsReset[160*((48&NUSIZ1)>>1|7&NUSIZ1)+d],missile1Enabled&&missile1DefineAlt()}},hitRESBL=function(){debug&&debugPixel(DEBUG_BL_COLOR);var a=getRESxPixel(),b=a>=0?a:-a;ballPixel!==b&&(ballEnabled&&changeAtClock(),ballPixel=b)},hitHMOVE=function(){if(debug&&debugPixel(DEBUG_HMOVE_COLOR),clock<HBLANK_DURATION)return hMoveHitClock=clock,hMoveHitBlank=!0,void performHMOVE();clock<219||(hMoveHitClock=160-clock,hMoveLateHit=!0,hMoveLateHitBlank=clock>=225)},performHMOVE=function(){var a,b=!1;a=hMoveHitBlank?HMP0:HMP0+8,0!==a&&(player0Pixel-=a,player0Pixel>=160?player0Pixel-=160:player0Pixel<0&&(player0Pixel+=160),player0Enabled&&(b=!0)),a=hMoveHitBlank?HMP1:HMP1+8,0!==a&&(player1Pixel-=a,player1Pixel>=160?player1Pixel-=160:player1Pixel<0&&(player1Pixel+=160),player1Enabled&&(b=!0)),a=hMoveHitBlank?HMM0:HMM0+8,0!==a&&(missile0Pixel-=a,missile0Pixel>=160?missile0Pixel-=160:missile0Pixel<0&&(missile0Pixel+=160),missile0Enabled&&(b=!0)),a=hMoveHitBlank?HMM1:HMM1+8,0!==a&&(missile1Pixel-=a,missile1Pixel>=160?missile1Pixel-=160:missile1Pixel<0&&(missile1Pixel+=160),missile1Enabled&&(b=!0)),a=hMoveHitBlank?HMBL:HMBL+8,0!==a&&(ballPixel-=a,ballPixel>=160?ballPixel-=160:ballPixel<0&&(ballPixel+=160),ballEnabled&&(b=!0)),b&&(changeClock=hMoveHitBlank?HBLANK_DURATION+8:HBLANK_DURATION)},vBlankSet=function(a){var b=0!=(2&a);vBlankOn!==b&&(changeVBlankAtClockPlus1(),vBlankOn=b),0!=(64&a)?controlsButtonsLatched=!0:(controlsButtonsLatched=!1,controlsJOY0ButtonPressed?INPT4&=127:INPT4|=128,controlsJOY1ButtonPressed?INPT5&=127:INPT5|=128),0!=(128&a)?(paddleCapacitorsGrounded=!0,paddle0CapacitorCharge=paddle1CapacitorCharge=0,INPT0&=127,INPT1&=127,INPT2&=127,INPT3&=127):paddleCapacitorsGrounded=!1},initLatchesAtPowerOn=function(){collisions=0,INPT0=INPT1=INPT2=INPT3=0,INPT4=INPT5=128},debugPixel=function(a){debugPixels[clock]=a},processDebugPixelsInLine=function(){if(jt.Util.arrayFillSegment(linePixels,0,HBLANK_DURATION+(hMoveHitBlank?8:0),hBlankColor),\ndebugLevel>=3&&videoSignal.monitor.currentLine()%10==0)for(var a=0;a<LINE_WIDTH;a++)debugPixels[a]||(a<HBLANK_DURATION?a%6!=0&&66!=a&&63!=a||(debugPixels[a]=DEBUG_MARKS_COLOR):(a-HBLANK_DURATION-1)%6==0&&(debugPixels[a]=DEBUG_MARKS_COLOR));if(debugLevel>=2)for(a=0;a<LINE_WIDTH;a++)debugPixels[a]&&(linePixels[a]=debugPixels[a],debugPixels[a]=0)},debugSetColors=function(){player0Color=DEBUG_P0_COLOR,player1Color=DEBUG_P1_COLOR,missile0Color=DEBUG_M0_COLOR,missile1Color=DEBUG_M1_COLOR,ballColor=DEBUG_BL_COLOR,playfieldColor=playfieldLeftColor=playfieldRightColor=DEBUG_PF_COLOR,playfieldBackground=DEBUG_BK_COLOR,hBlankColor=debugLevel>=1?DEBUG_HBLANK_COLOR:HBLANK_COLOR,vBlankColor=debugLevel>=1?DEBUG_VBLANK_COLOR:VBLANK_COLOR},debugRestoreColors=function(){hBlankColor=HBLANK_COLOR,vBlankColor=VBLANK_COLOR,playfieldBackground=palette[0],jt.Util.arrayFill(linePixels,hBlankColor),changeAtClock()},info=function(a){console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},debugInfo=function(a){debug&&console.error(\"Line: \"+videoSignal.monitor.currentLine()+\", Pixel: \"+clock+\". \"+a)},controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case controls.JOY0_BUTTON:return void(b?(controlsJOY0ButtonPressed=!0,INPT4&=127):(controlsJOY0ButtonPressed=!1,controlsButtonsLatched||(INPT4|=128)));case controls.JOY1_BUTTON:return void(b?(controlsJOY1ButtonPressed=!0,INPT5&=127):(controlsJOY1ButtonPressed=!1,controlsButtonsLatched||(INPT5|=128)))}if(b)switch(a){case controls.DEBUG:return self.debug(debugLevel+1),void self.showDebugMessage();case controls.SHOW_INFO:return void videoSignal.toggleShowInfo();case controls.NO_COLLISIONS:self.debugNoCollisions(!debugNoCollisions),videoSignal.showOSD(debugNoCollisions?\"No Collisions: ON\":\"No Collisions: OFF\",!0)}},this.controlValueChanged=function(a,b){switch(a){case controls.PADDLE0_POSITION:return void(paddle0Position=b);case controls.PADDLE1_POSITION:return void(paddle1Position=b)}},this.saveState=function(a){var b={ccp:changeClockPrevLine,lpx:jt.Util.storeInt32BitArrayToStringBase64(linePixels),vs:vSyncOn,vb:vBlankOn,pfe:playfieldEnabled,pfl:playfieldPatternL,pfr:playfieldPatternR,pfc:playfieldColor,pflc:playfieldLeftColor,pfrc:playfieldRightColor,pfb:playfieldBackground,pfrl:playfieldReflected,pfsc:playfieldScoreMode,pfp:playfieldPriority,be:ballEnabled,bx:ballPixel,blp:ballLineSpritePointer,bc:ballColor,p0e:player0Enabled,p0x:player0Pixel,p0lp:player0LineSpritePointer,p0a:player0Alt,p0af:player0AltFrom,p0al:player0AltLength,p0ao:player0AltCopyOffset,p0c:player0Color,p1e:player1Enabled,p1x:player1Pixel,p1lp:player1LineSpritePointer,p1a:player1Alt,p1af:player1AltFrom,p1al:player1AltLength,p1ao:player1AltCopyOffset,p1c:player1Color,m0e:missile0Enabled,m0x:missile0Pixel,m0lp:missile0LineSpritePointer,m0a:missile0Alt,m0af:missile0AltFrom,m0al:missile0AltLength,m0ao:missile0AltCopyOffset,m0c:missile0Color,m1e:missile1Enabled,m1x:missile1Pixel,m1lp:missile1LineSpritePointer,m1a:missile1Alt,m1af:missile1AltFrom,m1al:missile1AltLength,m1ao:missile1AltCopyOffset,m1c:missile1Color,hmh:hMoveHitBlank,hmc:hMoveHitClock,hmlh:hMoveLateHit,hmlb:hMoveLateHitBlank,co:collisions,cop:collisionsPossible,cod:debugNoCollisions,cbl:controlsButtonsLatched,j0p:controlsJOY0ButtonPressed,j1p:controlsJOY1ButtonPressed,pcg:paddleCapacitorsGrounded,pd0:paddle0Position,pd0c:paddle0CapacitorCharge,pd1:paddle1Position,pd1c:paddle1CapacitorCharge,CTRLPF:CTRLPF,COLUPF:COLUPF,COLUBK:COLUBK,PF0:PF0,PF1:PF1,PF2:PF2,ENABL:ENABL,ENABLd:ENABLd,VDELBL:VDELBL,NUSIZ0:NUSIZ0,COLUP0:COLUP0,REFP0:REFP0,GRP0:GRP0,GRP0d:GRP0d,VDELP0:VDELP0,NUSIZ1:NUSIZ1,COLUP1:COLUP1,REFP1:REFP1,GRP1:GRP1,GRP1d:GRP1d,VDELP1:VDELP1,ENAM0:ENAM0,RESMP0:RESMP0,ENAM1:ENAM1,RESMP1:RESMP1,HMP0:HMP0,HMP1:HMP1,HMM0:HMM0,HMM1:HMM1,HMBL:HMBL,AUDC0:AUDC0,AUDC1:AUDC1,AUDF0:AUDF0,AUDF1:AUDF1,AUDV0:AUDV0,AUDV1:AUDV1};return a&&(b.dl=debugLevel),b},this.loadState=function(a){changeClockPrevLine=a.ccp,jt.Util.restoreStringBase64ToInt32BitArray(a.lpx,linePixels),vSyncOn=a.vs,vBlankOn=a.vb,playfieldEnabled=a.pfe,playfieldPatternL=0|a.pfl,playfieldPatternR=0|a.pfr,playfieldColor=0|a.pfc,playfieldLeftColor=0|a.pflc,playfieldRightColor=0|a.pfrc,playfieldBackground=0|a.pfb,playfieldReflected=a.pfrl,playfieldScoreMode=a.pfsc,playfieldPriority=a.pfp,ballEnabled=a.be,ballPixel=0|a.bx,ballLineSpritePointer=0|a.blp,ballColor=0|a.bc,player0Enabled=a.p0e,player0Pixel=0|a.p0x,player0LineSpritePointer=0|a.p0lp,player0Alt=0|a.p0a,player0AltFrom=0|a.p0af,player0AltLength=0|a.p0al,player0AltCopyOffset=0|a.p0ao,jt.Util.arrayFill(player0AltControl,0),player0Color=0|a.p0c,player1Enabled=a.p1e,player1Pixel=0|a.p1x,player1LineSpritePointer=0|a.p1lp,player1Alt=0|a.p1a,player1AltFrom=0|a.p1af,player1AltLength=0|a.p1al,player1AltCopyOffset=0|a.p1ao,jt.Util.arrayFill(player1AltControl,0),player1Color=0|a.p1c,missile0Enabled=a.m0e,missile0Pixel=0|a.m0x,missile0LineSpritePointer=0|a.m0lp,missile0Alt=0|a.m0a,missile0AltFrom=0|a.m0af,missile0AltLength=0|a.m0al,missile0AltCopyOffset=0|a.m0ao,jt.Util.arrayFill(missile0AltControl,0),missile0Color=0|a.m0c,missile1Enabled=a.m1e,missile1Pixel=0|a.m1x,missile1LineSpritePointer=0|a.m1lp,missile1Alt=0|a.m1a,missile1AltFrom=0|a.m1af,missile1AltLength=0|a.m1al,missile1AltCopyOffset=0|a.m1ao,jt.Util.arrayFill(missile1AltControl,0),missile1Color=0|a.m1c,hMoveHitBlank=a.hmh,hMoveHitClock=0|a.hmc,hMoveLateHit=a.hmlh,hMoveLateHitBlank=a.hmlb,collisions=0|a.co,collisionsPossible=0|a.cop,void 0!==a.cod&&(debugNoCollisions=a.cod),void 0!==a.cbl&&(controlsButtonsLatched=a.cbl,controlsJOY0ButtonPressed=a.j0p,controlsJOY1ButtonPressed=a.j1p,paddleCapacitorsGrounded=a.pcg,paddle0Position=a.pd0,paddle0CapacitorCharge=a.pd0c,paddle1Position=a.pd1,paddle1CapacitorCharge=a.pd1c),CTRLPF=0|a.CTRLPF,COLUPF=0|a.COLUPF,COLUBK=0|a.COLUBK,PF0=0|a.PF0,PF1=0|a.PF1,PF2=0|a.PF2,ENABL=0|a.ENABL,ENABLd=0|a.ENABLd,VDELBL=0|a.VDELBL,NUSIZ0=0|a.NUSIZ0,COLUP0=0|a.COLUP0,REFP0=0|a.REFP0,GRP0=0|a.GRP0,GRP0d=0|a.GRP0d,VDELP0=0|a.VDELP0,NUSIZ1=0|a.NUSIZ1,COLUP1=0|a.COLUP1,REFP1=0|a.REFP1,GRP1=0|a.GRP1,GRP1d=0|a.GRP1d,VDELP1=0|a.VDELP1,ENAM0=0|a.ENAM0,RESMP0=0|a.RESMP0,ENAM1=0|a.ENAM1,RESMP1=0|a.RESMP1,HMP0=0|a.HMP0,HMP1=0|a.HMP1,HMM0=0|a.HMM0,HMM1=0|a.HMM1,HMBL=0|a.HMBL,AUDC0=0|a.AUDC0,audioSignal.getChannel0().setControl(15&AUDC0),AUDC1=0|a.AUDC1,audioSignal.getChannel1().setControl(15&AUDC1),AUDF0=0|a.AUDF0,audioSignal.getChannel0().setDivider(1+(31&AUDF0)),AUDF1=0|a.AUDF1,audioSignal.getChannel1().setDivider(1+(31&AUDF1)),AUDV0=0|a.AUDV0,audioSignal.getChannel0().setVolume(15&AUDV0),AUDV1=0|a.AUDV1,audioSignal.getChannel1().setVolume(15&AUDV1),void 0!==a.dl?this.debug(a.dl):debug&&debugSetColors()}\n;var HBLANK_DURATION=68,LINE_WIDTH=228,VBLANK_COLOR=4278190080,HBLANK_COLOR=4261412864,VSYNC_COLOR=4292730333,DEBUG_P0_COLOR=4278190335,DEBUG_P0_RES_COLOR=4280427195,DEBUG_P0_GR_COLOR=4279308663,DEBUG_P1_COLOR=4294901760,DEBUG_P1_RES_COLOR=4290454050,DEBUG_P1_GR_COLOR=4285993233,DEBUG_M0_COLOR=4284901119,DEBUG_M1_COLOR=4294927974,DEBUG_PF_COLOR=4282681412,DEBUG_PF_GR_COLOR=4281589043,DEBUG_BK_COLOR=4281549875,DEBUG_BL_COLOR=4278255615,DEBUG_MARKS_COLOR=4280295456,DEBUG_HBLANK_COLOR=4282664004,DEBUG_VBLANK_COLOR=4280953386,DEBUG_WSYNC_COLOR=4287103112,DEBUG_HMOVE_COLOR=4294967295,DEBUG_ALT_COLOR=4289374720,READ_ADDRESS_MASK=15,WRITE_ADDRESS_MASK=63,P0C=-63489,P1C=-34689,M0C=-17521,M1C=-8781,PFC=-4395,BLC=-2199,cpu=pCpu,pia=pPia,bus,powerOn=!1,clock,changeClock,changeClockPrevLine,renderClock,linePixels=new Uint32Array(LINE_WIDTH),vSyncOn=!1,vBlankOn=!1,vBlankColor=VBLANK_COLOR,hBlankColor=HBLANK_COLOR,playfieldEnabled=!1,playfieldPatternL=0,playfieldPatternR=0,playfieldColor=4278190080,playfieldLeftColor=4278190080,playfieldRightColor=4278190080,playfieldBackground=4278190080,playfieldReflected=!1,playfieldScoreMode=!1,playfieldPriority=!1,ballEnabled=!1,ballPixel=0,ballLineSpritePointer=0,ballColor=4278190080,player0Enabled=!1,player0Pixel=0,player0LineSpritePointer=0,player0Alt=0,player0AltFrom=0,player0AltLength=0,player0AltCopyOffset=0,player0AltControl=new Uint32Array(4096),player0Color=4278190080,player1Enabled=!1,player1Pixel=0,player1LineSpritePointer=0,player1Alt=0,player1AltFrom=0,player1AltLength=0,player1AltCopyOffset=0,player1AltControl=new Uint32Array(4096),player1Color=4278190080,missile0Enabled=!1,missile0Pixel=0,missile0LineSpritePointer=0,missile0Alt=0,missile0AltFrom=0,missile0AltLength=0,missile0AltCopyOffset=0,missile0AltControl=new Uint32Array(32),missile0Color=4278190080,missile1Enabled=!1,missile1Pixel=0,missile1LineSpritePointer=0,missile1Alt=0,missile1AltFrom=0,missile1AltLength=0,missile1AltCopyOffset=0,missile1AltControl=new Uint32Array(32),missile1Color=4278190080,hMoveHitBlank=!1,hMoveHitClock=0,hMoveLateHit=!1,hMoveLateHitBlank=!1,collisions=0,collisionsPossible=0,controlsButtonsLatched=!1,controlsJOY0ButtonPressed=!1,controlsJOY1ButtonPressed=!1,paddleCapacitorsGrounded=!1,paddle0Position=-1,paddle0CapacitorCharge=0,paddle1Position=-1,paddle1CapacitorCharge=0,debug=!1,debugLevel=0,debugNoCollisions=!1,debugPixels=new Uint32Array(LINE_WIDTH),playerLineSprites=new Uint8Array(262144),missileBallLineSprites=new Uint8Array(2048),playerCopyLengthPerShape=new Uint8Array([13,13,13,13,13,22,13,38]),playerScanStartPerShape=new Uint8Array([5,5,5,5,5,6,5,6]),playerPixelSizePerShape=new Uint8Array([1,1,1,1,1,2,1,4]),playerCopyOffsetsReset=new Uint8Array(1280),playerScanOffsetsShape=new Uint8Array(1280),missileCopyOffsetsReset=new Uint8Array(5120),missileScanOffsetsShape=new Uint8Array(5120),objectsLineSpritePointerDeltaToSingleCopy=new Uint16Array([0,64,128,192,256,0,384,0]),missileCenterOffsetsPerPlayerSize=new Uint8Array([5,5,5,5,5,10,5,18]),videoSignal=new jt.VideoSignal,palette,audioSignal=new jt.TiaAudio(audioSocket),INPT0=0,INPT1=0,INPT2=0,INPT3=0,INPT4=0,INPT5=0,CTRLPF=0,COLUPF=0,COLUBK=0,PF0=0,PF1=0,PF2=0,ENABL=0,ENABLd=0,VDELBL=0,NUSIZ0=0,COLUP0=0,REFP0=0,GRP0=0,GRP0d=0,VDELP0=0,NUSIZ1=0,COLUP1=0,REFP1=0,GRP1=0,GRP1d=0,VDELP1=0,ENAM0=0,RESMP0=0,ENAM1=0,RESMP1=0,HMP0=0,HMP1=0,HMM0=0,HMM1=0,HMBL=0,AUDC0=0,AUDC1=0,AUDF0=0,AUDF1=0,AUDV0=0,AUDV1=0;init(),self.eval=function(code){return eval(code)}},jt.Bus=function(a,b,c,d){\"use strict\";this.powerOn=function(){null!=i&&i.powerOn(),h.powerOn(),g.powerOn(),e.powerOn(),f.powerOn()},this.powerOff=function(){f.powerOff(),e.powerOff(),g.powerOff(),h.powerOff()},this.setCartridge=function(a){i=a,i&&(k=0,i.connectBus(this)),j=i&&i.needsBusMonitoring()},this.getCartridge=function(){return i},this.getTia=function(){return f},this.clockPulse=function(){g.clockPulse(),e.clockPulse()},this.read=function(a){return j&&i.monitorBusBeforeRead(a),(a&l)===m?i?k=i.read(a):k:k=(a&n)===o?h.read(a):(a&r)===s?g.read(a):63&k|f.read(a)},this.write=function(a,b){j&&i.monitorBusBeforeWrite(a,b),k=b,(a&p)===q?f.write(a,b):(a&n)===o?h.write(a,b):(a&r)===s?g.write(a,b):i&&i.write(a,b)},this.saveState=function(){return{d:k}},this.loadState=function(a){k=a.d};var e,f,g,h,i,j=!1,k=256*Math.random()|0,l=4096,m=4096,n=4736,o=128,p=4224,q=0,r=4736,s=640;!function(i){e=a,f=b,g=c,h=d,e.connectBus(i),f.connectBus(i),g.connectBus(i)}(this)},jt.AtariConsole=function(mainVideoClock){\"use strict\";function init(){mainComponentsCreate(),socketsCreate()}function videoFrame(){userPaused&&userPauseMoreFrames--<=0||(videoStandardAutoDetectionInProgress&&videoStandardAutoDetectionTry(),tia.frame())}function vSynchToggleMode(){if(-1===vSynchMode)return void self.showOSD(\"V-Synch is DISABLED / UNSUPPORTED\",!0,!0);vSynchMode=vSynchMode?0:1,updateVideoSynchronization(),self.showOSD(\"V-Synch: \"+(vSynchMode?\"ON\":\"OFF\"),!0),Javatari.userPreferences.current.vSynch=vSynchMode,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()}function showVideoStandardMessage(){self.showOSD((videoStandardIsAuto?\"AUTO: \":\"\")+videoStandard.name,!0)}function updateVideoSynchronization(){videoPulldown=1===vSynchMode?videoStandard.pulldowns[videoClockSocket.getVSynchNativeFrequency()]||videoStandard.pulldowns.TIMER:videoStandard.pulldowns.TIMER,videoPulldownStep=0,videoClockUpdateSpeed()}function setDefaults(){setVideoStandardAuto(!0),speedControl=1,alternateSpeed=null,videoClockUpdateSpeed(),tia.debug(0),tia.debugNoCollisions(!1)}function videoClockUpdateSpeed(){videoClockSocket.setVSynch(1===vSynchMode);var a=videoPulldown.frequency*(alternateSpeed||speedControl)|0;videoClockSocket.setFrequency(a,videoPulldown.divider),audioSocket.setFps(a/videoPulldown.divider)}function VideoClockSocket(){this.connectClock=function(b){a=b},this.getVSynchNativeFrequency=function(){return a.getVSynchNativeFrequency()},this.setVSynch=function(b){a.setVSynch(b)},this.setFrequency=function(b,c){a.setFrequency(b,c)};var a}function CartridgeSocket(){this.insert=function(a,b){b&&self.powerIsOn&&self.powerOff(),setCartridge(a),b&&!self.powerIsOn&&self.powerOn(),saveStateSocket.externalStateChange()},this.inserted=function(){return getCartridge()},this.cartridgeInserted=function(a,b){tia.getAudioOutput().cartridgeInserted(a,b),consoleControlsSocket.cartridgeInserted(a,b),saveStateSocket.cartridgeInserted(a,b),tia.getVideoOutput().monitor.cartridgeInserted(a,b)},this.loadCartridgeData=function(a,b,c){},this.saveCartridgeDataFile=function(a){}}function ConsoleControlsSocket(){this.connectControls=function(b){a=b},this.cartridgeInserted=function(b,c){a&&a.cartridgeInserted(b,c)},this.controlStateChanged=function(a,b){self.controlStateChanged(a,b),pia.controlStateChanged(a,b),tia.controlStateChanged(a,b),tia.getVideoOutput().monitor.controlStateChanged(a,b)},this.controlValueChanged=function(a,b){tia.controlValueChanged(a,b)},this.controlsStateReport=function(a){self.controlsStateReport(a),pia.controlsStateReport(a)},this.controlsStatesRedefined=function(){tia.getVideoOutput().monitor.controlsStatesRedefined()},this.firePowerAndUserPauseStateUpdate=function(){a.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused),tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn,userPaused)},this.releaseControllers=function(){a.releaseControllers()},this.controlsClockPulse=function(){a.controlsClockPulse()},this.getControlReport=function(a){switch(a){case jt.ConsoleControls.VIDEO_STANDARD:return{label:videoStandardIsAuto?\"Auto\":videoStandard.name,active:!videoStandardIsAuto};case jt.ConsoleControls.VSYNCH:return{label:-1===vSynchMode?\"DISABL\":vSynchMode?\"ON\":\"OFF\",active:1===vSynchMode};case jt.ConsoleControls.NO_COLLISIONS:return{label:tia.getDebugNoCollisions()?\"ON\":\"OFF\",active:tia.getDebugNoCollisions()};default:return{label:\"Unknown\",active:!1\n}}};var a}function SaveStateSocket(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){a.externalStateChange()},this.saveState=function(c){if(self.powerIsOn){var d=saveState();d.v=b,a.saveState(c,d)?self.showOSD(\"State \"+c+\" saved\",!0):self.showOSD(\"State \"+c+\" save failed\",!0)}},this.loadState=function(c){var d=a.loadState(c);return d?d.v!==b?void self.showOSD(\"State \"+c+\" load failed, wrong version\",!0):(self.powerIsOn||self.powerOn(!0),loadState(d),void self.showOSD(\"State \"+c+\" loaded\",!0)):void self.showOSD(\"State \"+c+\" not found\",!0)},this.saveStateFile=function(){if(self.powerIsOn){var c=cartridgeSocket.inserted()&&cartridgeSocket.inserted().rom.info.l,d=saveState();d.v=b,a.saveStateFile(c,d)?self.showOSD(\"State Cartridge saved\",!0):self.showOSD(\"State file save failed\",!0)}},this.loadStateFile=function(c){var d=a.loadStateFile(c);if(d)return d.v!==b?(self.showOSD(\"State file load failed, wrong version\",!0),!0):(self.powerIsOn||self.powerOn(),loadState(d),self.showOSD(\"State file loaded\",!0),!0)};var a,b=2}function AudioSocket(){this.connectMonitor=function(b){a=b;for(var d=c.length-1;d>=0;d--)a.connectAudioSignal(c[d])},this.connectAudioSignal=function(d){c.indexOf(d)>=0||(jt.Util.arrayAdd(c,d),this.flushAllSignals(),d.setFps(b),a&&a.connectAudioSignal(d))},this.disconnectAudioSignal=function(b){jt.Util.arrayRemoveAllElement(c,b),a&&a.disconnectAudioSignal(b)},this.audioClockPulse=function(){for(var a=c.length-1;a>=0;--a)c[a].audioClockPulse()},this.audioFinishFrame=function(){for(var a=c.length-1;a>=0;--a)c[a].audioFinishFrame()},this.muteAudio=function(){a&&a.mute()},this.unMuteAudio=function(){a&&a.unMute()},this.setFps=function(a){b=a;for(var d=c.length-1;d>=0;--d)c[d].setFps(b)},this.pauseAudio=function(){a&&a.pause()},this.unpauseAudio=function(){a&&a.unpause()},this.flushAllSignals=function(){for(var a=c.length-1;a>=0;--a)c[a].flush()};var a,b,c=[]}var self=this;this.socketsConnected=function(){setDefaults()},this.powerOn=function(a){this.powerIsOn&&this.powerOff(),bus.powerOn(),this.powerIsOn=!0,consoleControlsSocket.controlsStatesRedefined(),updateVideoSynchronization(),videoStandardAutoDetectionStart(),a||consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.powerOff=function(){bus.powerOff(),this.powerIsOn=!1,consoleControlsSocket.controlsStatesRedefined(),userPaused?this.userPause(!1):consoleControlsSocket.firePowerAndUserPauseStateUpdate()},this.userPowerOn=function(){isLoading||(this.powerOn(),bus.getCartridge()||this.showOSD(\"NO CARTRIDGE INSERTED!\",!1,!0))},this.setLoading=function(a){isLoading=a},this.userPause=function(a,b){var c=userPaused;return userPaused!==a&&(userPaused=!!a,userPauseMoreFrames=-1,userPaused&&!b?audioSocket.muteAudio():audioSocket.unMuteAudio(),consoleControlsSocket.firePowerAndUserPauseStateUpdate()),c},this.systemPause=function(a){var b=systemPaused;return systemPaused!==a&&(systemPaused=!!a,systemPaused?audioSocket.pauseAudio():audioSocket.unpauseAudio()),b},this.isSystemPaused=function(){return systemPaused},this.videoClockPulse=function(){this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns())},this.videoClockPulseApplyPulldowns=function(a){if(self.powerIsOn){for(;a-- >0;)videoFrame();userPaused||audioSocket.audioFinishFrame()}},this.videoClockPulseGetNextPulldowns=function(){return 1===videoPulldown.steps?1:(--videoPulldownStep<0&&(videoPulldownStep=videoPulldown.steps-1),videoPulldown.cadence[videoPulldownStep])},this.getCartridgeSocket=function(){return cartridgeSocket},this.getConsoleControlsSocket=function(){return consoleControlsSocket},this.getVideoOutput=function(){return tia.getVideoOutput()},this.getAudioOutput=function(){return tia.getAudioOutput()},this.getSavestateSocket=function(){return saveStateSocket},this.getVideoClockSocket=function(){return videoClockSocket},this.getAudioSocket=function(){return audioSocket},this.showOSD=function(a,b,c){this.getVideoOutput().showOSD(a,b,c)},this.vSynchSetSupported=function(a){var b=Javatari.userPreferences.current.vSynch;vSynchMode=-1!==Javatari.SCREEN_VSYNCH_MODE&&a?Javatari.SCREEN_VSYNCH_MODE>=0?Javatari.SCREEN_VSYNCH_MODE:null!==b&&b>=0?b:1:-1};var setCartridge=function(a){Javatari.cartridge=a;var b=getCartridge();bus.setCartridge(a),cartridgeSocket.cartridgeInserted(a,b)},getCartridge=function(){return bus.getCartridge()},setVideoStandard=function(a){videoStandard!==a&&(videoStandard=a,tia.setVideoStandard(videoStandard),updateVideoSynchronization())},setVideoStandardAuto=function(a){videoStandardIsAuto=a,a&&(self.powerIsOn?videoStandardAutoDetectionStart():setVideoStandard(jt.VideoStandard.NTSC))},videoStandardAutoDetectionStart=function(){if(videoStandardIsAuto&&!videoStandardAutoDetectionInProgress)return bus.getCartridge()?void(tia.getVideoOutput().monitor&&(videoStandardAutoDetectionInProgress=!0,videoStandardAutoDetectionTries=0,tia.getVideoOutput().monitor.videoStandardDetectionStart())):void setVideoStandard(jt.VideoStandard.NTSC)},videoStandardAutoDetectionTry=function(){videoStandardAutoDetectionTries++;var a=tia.getVideoOutput().monitor.getVideoStandardDetected();!a&&videoStandardAutoDetectionTries<VIDEO_STANDARD_AUTO_DETECTION_FRAMES||(a?a!==videoStandard&&(setVideoStandard(a),showVideoStandardMessage()):self.showOSD(\"AUTO: FAILED\",!0,!0),videoStandardAutoDetectionInProgress=!1)},setVideoStandardForced=function(a){videoStandardIsAuto=!1,setVideoStandard(a)},powerFry=function(){ram.powerFry(),saveStateSocket.externalStateChange()},cycleCartridgeFormat=function(){},saveState=function(a){var b={t:tia.saveState(a),p:pia.saveState(),r:ram.saveState(),b:bus.saveState(),c:cpu.saveState(),ca:getCartridge()&&getCartridge().saveState(),vsa:videoStandardIsAuto,vs:videoStandard.name};return a&&(b.pw=self.powerIsOn,b.up=userPaused,b.upf=userPauseMoreFrames),b};this.saveState=saveState;var loadState=function(a){void 0!==a.pw&&self.powerIsOn!==a.pw&&(a.pw?self.powerOn():self.powerOff()),void 0!==a.up&&self.userPause(a.up),void 0!==a.upf&&(userPauseMoreFrames=a.upf),videoClockUpdateSpeed(),tia.loadState(a.t),pia.loadState(a.p),ram.loadState(a.r),a.b&&bus.loadState(a.b),cpu.loadState(a.c),setCartridge(a.ca&&jt.CartridgeCreator.recreateCartridgeFromSaveState(a.ca,getCartridge())),void 0!==a.vsa&&setVideoStandardAuto(a.vsa),setVideoStandard(jt.VideoStandard[a.vs]),consoleControlsSocket.firePowerAndUserPauseStateUpdate(),consoleControlsSocket.controlsStatesRedefined(),saveStateSocket.externalStateChange()};this.loadState=loadState;var mainComponentsCreate=function(){cpu=new jt.M6502,pia=new jt.Pia,tia=new jt.Tia(cpu,pia),self.tia=tia,ram=new jt.Ram,bus=new jt.Bus(cpu,tia,pia,ram)},socketsCreate=function(){videoClockSocket=new VideoClockSocket,consoleControlsSocket=new ConsoleControlsSocket,cartridgeSocket=new CartridgeSocket,saveStateSocket=new SaveStateSocket,audioSocket=new AudioSocket,tia.getAudioOutput().connectAudioSocket(audioSocket)};this.powerIsOn=!1;var isLoading=!1,userPaused=!1,userPauseMoreFrames=0,systemPaused=!1,speedControl=1,alternateSpeed=!1,cpu,pia,tia,ram,bus,videoStandard,videoPulldown,videoPulldownStep,videoClockSocket,consoleControlsSocket,cartridgeSocket,saveStateSocket,audioSocket,videoStandardIsAuto=!1,videoStandardAutoDetectionInProgress=!1,videoStandardAutoDetectionTries=0,vSynchMode=-1,VIDEO_STANDARD_AUTO_DETECTION_FRAMES=90,SPEEDS=[.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.25,1.5,2,3,5,10],SPEED_FAST=10,SPEED_SLOW=.3,controls=jt.ConsoleControls;this.controlStateChanged=function(a,b){if(a===controls.FAST_SPEED)return void(b&&alternateSpeed!==SPEED_FAST?(alternateSpeed=SPEED_FAST,videoClockUpdateSpeed(),self.showOSD(\"FAST FORWARD\",!0)):b||alternateSpeed!==SPEED_FAST||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)))\n;if(a===controls.SLOW_SPEED)return void(b&&alternateSpeed!==SPEED_SLOW?(alternateSpeed=SPEED_SLOW,videoClockUpdateSpeed(),self.showOSD(\"SLOW MOTION\",!0)):b||alternateSpeed!==SPEED_SLOW||(alternateSpeed=null,videoClockUpdateSpeed(),self.showOSD(null,!0)));if(b)switch(a){case controls.POWER:self.powerIsOn?self.powerOff():self.userPowerOn();break;case controls.POWER_OFF:self.powerIsOn&&self.powerOff();break;case controls.POWER_FRY:powerFry();break;case controls.PAUSE:return self.userPause(!userPaused,!1),void self.getVideoOutput().showOSD(userPaused?\"PAUSE\":\"RESUME\",!0);case controls.PAUSE_AUDIO_ON:return self.userPause(!userPaused,!0),void self.getVideoOutput().showOSD(userPaused?\"PAUSE with AUDIO ON\":\"RESUME\",!0);case controls.FRAME:return void(userPaused&&(userPauseMoreFrames=1));case controls.INC_SPEED:case controls.DEC_SPEED:case controls.NORMAL_SPEED:case controls.MIN_SPEED:var c=SPEEDS.indexOf(speedControl);a===controls.INC_SPEED&&c<SPEEDS.length-1?++c:a===controls.DEC_SPEED&&c>0?--c:a===controls.MIN_SPEED?c=0:a===controls.NORMAL_SPEED&&(c=SPEEDS.indexOf(1)),speedControl=SPEEDS[c],self.showOSD(\"Speed: \"+(100*speedControl|0)+\"%\",!0),videoClockUpdateSpeed();break;case controls.SAVE_STATE_0:case controls.SAVE_STATE_1:case controls.SAVE_STATE_2:case controls.SAVE_STATE_3:case controls.SAVE_STATE_4:case controls.SAVE_STATE_5:case controls.SAVE_STATE_6:case controls.SAVE_STATE_7:case controls.SAVE_STATE_8:case controls.SAVE_STATE_9:case controls.SAVE_STATE_10:case controls.SAVE_STATE_11:case controls.SAVE_STATE_12:var d=self.systemPause(!0);saveStateSocket.saveState(255&a),d||self.systemPause(!1);break;case controls.SAVE_STATE_FILE:d=self.systemPause(!0),saveStateSocket.saveStateFile(),d||self.systemPause(!1);break;case controls.LOAD_STATE_0:case controls.LOAD_STATE_1:case controls.LOAD_STATE_2:case controls.LOAD_STATE_3:case controls.LOAD_STATE_4:case controls.LOAD_STATE_5:case controls.LOAD_STATE_6:case controls.LOAD_STATE_7:case controls.LOAD_STATE_8:case controls.LOAD_STATE_9:case controls.LOAD_STATE_10:case controls.LOAD_STATE_11:case controls.LOAD_STATE_12:d=self.systemPause(!0),saveStateSocket.loadState(255&a),d||self.systemPause(!1);break;case controls.VIDEO_STANDARD:videoStandardIsAuto?setVideoStandardForced(jt.VideoStandard.NTSC):videoStandard==jt.VideoStandard.NTSC?setVideoStandardForced(jt.VideoStandard.PAL):setVideoStandardAuto(!0),showVideoStandardMessage();break;case controls.VSYNCH:vSynchToggleMode();break;case controls.CARTRIDGE_FORMAT:cycleCartridgeFormat();break;case controls.DEFAULTS:setDefaults(),self.showOSD(\"Default Settings\",!0)}},this.controlsStateReport=function(a){a[controls.POWER]=self.powerIsOn},this.eval=function(str){return eval(str)},init()},jt.JoystickButtons={J_UP:{button:\"J_UP\",mask:1,n:\"UP\"},J_DOWN:{button:\"J_DOWN\",mask:2,n:\"DOWN\"},J_LEFT:{button:\"J_LEFT\",mask:4,n:\"LEFT\"},J_RIGHT:{button:\"J_RIGHT\",mask:8,n:\"RIGHT\"},J_A:{button:\"J_A\",mask:16,n:\"A\"},J_B:{button:\"J_B\",mask:32,n:\"B\"},J_AB:{button:\"J_AB\",mask:48,n:\"AB\"},J_X:{button:\"J_X\",n:\"X\"},J_Y:{button:\"J_Y\",n:\"Y\"},J_L:{button:\"J_L\",n:\"L\"},J_R:{button:\"J_R\",n:\"R\"},J_BACK:{button:\"J_BACK\",n:\"BACK\"},J_START:{button:\"J_START\",n:\"START\"}},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_BUTTON:41,PADDLE1_BUTTON:42,PADDLE0_POSITION:16384,PADDLE1_POSITION:16896,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:57,POWER_FRY:58,CARTRIDGE_FORMAT:91,DEBUG:101,TRACE:102,SHOW_INFO:103,NO_COLLISIONS:104,PAUSE:105,PAUSE_AUDIO_ON:106,FRAME:107,FAST_SPEED:111,SLOW_SPEED:112,INC_SPEED:113,DEC_SPEED:114,NORMAL_SPEED:115,MIN_SPEED:116,VIDEO_STANDARD:123,VSYNCH:124,DEFAULTS:130,SAVE_STATE_0:256,SAVE_STATE_1:257,SAVE_STATE_2:258,SAVE_STATE_3:259,SAVE_STATE_4:260,SAVE_STATE_5:261,SAVE_STATE_6:262,SAVE_STATE_7:263,SAVE_STATE_8:264,SAVE_STATE_9:265,SAVE_STATE_10:266,SAVE_STATE_11:267,SAVE_STATE_12:268,LOAD_STATE_0:512,LOAD_STATE_1:513,LOAD_STATE_2:514,LOAD_STATE_3:515,LOAD_STATE_4:516,LOAD_STATE_5:517,LOAD_STATE_6:518,LOAD_STATE_7:519,LOAD_STATE_8:520,LOAD_STATE_9:521,LOAD_STATE_10:522,LOAD_STATE_11:523,LOAD_STATE_12:524,SAVE_STATE_FILE:201},jt.ROM=function(a,b,c,d){\"use strict\";this.source=a,this.content=b,this.info=c||jt.CartridgeCreator.produceInfo(this,d),this.saveState=function(a){return{s:this.source,i:this.info,c:a?jt.Util.compressInt8BitArrayToStringBase64(this.content):null}}},jt.ROM.loadState=function(a){\"use strict\";var b=a.c?jt.Util.uncompressStringBase64ToInt8BitArray(a.c):null;return new jt.ROM(a.s,b,a.i)},jt.CartridgeDatabase={uncompress:function(){jt.CartridgeDatabase=JSON.parse(jt.Util.uncompressStringBase64ToString(this.data))},\ndata:\"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\"\n},jt.Cartridge=function(){\"use strict\";this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.getDataDesc=function(){return null},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.reinsertROMContent=function(){this.rom.content||(this.rom.content=this.bytes||[])},this.format=null,this.rom=null,this.bytes=null,this.saveState=function(){},this.loadState=function(a){}},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){\"use strict\";this.read=function(a){return c[a&d]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c};var c,d=4095;a&&function(d){d.rom=a,d.format=b,c=new Array(4096),d.bytes=c;for(var e=a.content.length,f=0;f<c.length;f+=e)jt.Util.arrayCopy(a.content,0,c,f,e)}(this)},jt.Cartridge4K.prototype=jt.Cartridge.base,jt.Cartridge4K.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge4K;return c.loadState(a),c},jt.Cartridge2K_CV=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b<1024?e[b]:d[b]},this.write=function(a,b){var d=c(a);d>=1024&&d<=2047&&(e[d-1024]=b)};var c=function(a){return a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),ra:jt.Util.compressInt8BitArrayToStringBase64(e)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,e)};var d,e=jt.Util.arrayFill(new Array(1024),0),f=4095;a&&function(c){c.rom=a,c.format=b,d=new Array(4096),c.bytes=d;for(var e=a.content.length,f=0;f<d.length;f+=e)jt.Util.arrayCopy(a.content,0,d,f,e)}(this)},jt.Cartridge2K_CV.prototype=jt.Cartridge.base,jt.Cartridge2K_CV.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge2K_CV;return c.loadState(a),c},jt.CartridgeBankedByMaskedRange=function(a,b,c,d,e){\"use strict\";this.read=function(a){var b=f(a);return n&&b>=k&&b<2*k?l[b-k]:g[m+b]},this.write=function(a,b){var c=f(a);c<k&&(n||j)&&(n||(n=!0),l[c]=b)};var f=function(a){var b=a&o;return b>=h&&b<=i&&(m=p*(b-h)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(g),bo:m,bb:h,es:k,tb:i,s:0|n,sa:0|j,e:l&&jt.Util.compressInt8BitArrayToStringBase64(l)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),g=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,g),this.bytes=g,m=a.bo,h=a.bb,k=a.es,i=a.tb,n=!!a.s,j=!!a.sa,l=a.e&&jt.Util.uncompressStringBase64ToInt8BitArray(a.e,l)};var g,h,i,j,k,l,m=0,n=!1,o=4095,p=4096;a&&function(f){f.rom=a,f.format=b,g=a.content,f.bytes=g;var m=g.length/p;h=c,i=h+m-1,k=e,null==d||void 0==d?(n=!1,j=!0):(n=!!d,j=!1),l=!1!==d?jt.Util.arrayFill(new Array(k),0):null}(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.recreateFromSaveState=function(a,b){var c=b||new jt.CartridgeBankedByMaskedRange;return c.loadState(a),c},jt.Cartridge8K_E0=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b<1024?d[e+b]:b<2048?d[f+b-1024]:b<3072?d[g+b-2048]:d[4096+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&h;return b>=4064&&b<=4087&&(b<=4071?e=1024*(b-4064):b<=4079?f=1024*(b-4072):b<=4087&&(g=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),s0:e,s1:f,s2:g}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.s0,f=a.s1,g=a.s2};var d,e=0,f=0,g=0,h=4095;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_E0;return c.loadState(a),c},jt.Cartridge64K_F0=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){var b=a&f;return b==i&&(e+=h)>=g&&(e=0),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=65536,h=4096,i=4080;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_F0;return c.loadState(a),c},jt.Cartridge8K_FE=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return d[e+b]},this.write=function(a,b){c(a)};var c=function(a){return 0!=(8192&a)?0!==e&&(e=0):e!=g&&(e=g),a&f};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo};var d,e=0,f=4095,g=4096;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_FE;return c.loadState(a),c},jt.Cartridge16K_E7=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b>=2304&&b<=2559?g[i+b-2304]:h&&b>=1024&&b<=2047?g[b-1024]:b<l?d[e+b]:d[m+b]},this.write=function(a,b){var d=c(a);d>=2048&&d<=2303?g[i+d-2048]=b:h&&d<=1023&&(g[d]=b)};var c=function(a){var b=a&j;return b>=4064&&b<=4075&&(b<=4070?e=k*(b-4064):4071==b?h=!0:b<=4075&&(i=f+n*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:e,rs:h,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(g)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,e=a.bo,h=a.rs,i=a.ro,g=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,g)};var d,e=0,f=1024,g=jt.Util.arrayFill(new Array(2048),0),h=!1,i=f,j=4095,k=2048,l=2048,m=16384-k-l,n=256;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d}(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge16K_E7;return c.loadState(a),c},jt.Cartridge10K_DPCa=function(a,b){\"use strict\";this.powerOn=function(){x=o,y=0},this.connectBus=function(a){k=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=c(a);return b<=63||b>=2048&&b<=2111?e(255&b):l[q+b]},this.write=function(a,b){var d=c(a);(d>=64&&d<=127||d>=2112&&d<=2175)&&f(255&d,b)},this.audioClockPulse=function(){if((y+x|0)>(0|y))for(var a=5;a<=7;a++)w[a]&&(s[a]--,255==(255&s[a])&&g(a,65280&s[a]|t[a]),i(a),z||(z=!0));y+=x,z&&(d(),k.setVolume(A))};var c=function(a){var b=a&n;return 4088===b?q=0:4089===b&&(q=4096),b},d=function(){A=m[(w[5]?4&v[5]:0)|(w[6]?2&v[6]:0)|(w[7]?1&v[7]:0)],z=!1},e=function(a){var b;return a>=0&&a<=3?(j(),r):a>=4&&a<=7?(z&&d(),A):a>=8&&a<=15?(b=l[p-s[a-8]],h(a-8),b):a>=16&&a<=23?(b=l[p-s[a-16]]&v[a-16],h(a-16),b):a>=24&&a<=31?(b=l[p-s[a-24]]&v[a-24],h(a-24),\nb=240&b|15&b):a>=32&&a<=39?(b=l[p-s[a-32]]&v[a-32],h(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=l[p-s[a-40]]&v[a-40],h(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=l[p-s[a-48]]&v[a-48],h(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?v[a-56]:0},f=function(a,b){if(a>=64&&a<=71){var c=a-64;return t[c]=b,void((255&s[c])===t[c]&&(v[c]=255))}return a>=72&&a<=79?(u[a-72]=b,void(v[a-72]=0)):a>=80&&a<=87?void g(a-80,65280&s[a-80]|255&b):a>=88&&a<=91?void g(a-88,255&s[a-88]|(7&b)<<8):92==a?void g(4,255&s[4]|(7&b)<<8):a>=93&&a<=95?(g(a-88,(255&s[a-88])+((7&b)<<8)),void(w[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(r=0))},g=function(a,b){s[a]=b},h=function(a){var b=s[a]-1;b<0&&(b=2047),g(a,b),i(a)},i=function(a){var b=255&s[a];b==t[a]?v[a]=255:b==u[a]&&(v[a]=0)},j=function(){255===(r=255&(r<<1|1&~(r>>7^r>>5^r>>4^r>>3)))&&(r=0)};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(l),bo:q,rn:r,fp:jt.Util.compressInt8BitArrayToStringBase64(s),fs:jt.Util.compressInt8BitArrayToStringBase64(t),fe:jt.Util.compressInt8BitArrayToStringBase64(u),fm:jt.Util.compressInt8BitArrayToStringBase64(v),a:jt.Util.compressInt8BitArrayToStringBase64(w)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),l=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,l),this.bytes=l,q=a.bo,r=a.rn,s=jt.Util.uncompressStringBase64ToInt8BitArray(a.fp,s),t=jt.Util.uncompressStringBase64ToInt8BitArray(a.fs,t),u=jt.Util.uncompressStringBase64ToInt8BitArray(a.fe,u),v=jt.Util.uncompressStringBase64ToInt8BitArray(a.fm,v),w=jt.Util.uncompressStringBase64ToInt8BitArray(a.a,w)};var k,l,m=[0,5,5,10,5,10,10,15],n=4095,o=.62,p=10239,q=0,r=0,s=jt.Util.arrayFill(new Array(8),0),t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=o,y=0,z=!0,A=0;a&&function(c){c.rom=a,c.format=b,l=a.content,c.bytes=l}(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge10K_DPCa;return c.loadState(a),c},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){\"use strict\";var d=this;this.connectBus=function(a){k=a},this.connectSaveStateSocket=function(a){l=a},this.read=function(a){var b,c=e(a);if(b=c>=256&&c<512?r[c-256]:m[p+c],c!==x)return b;if(0===t){var d=r[y];if(1===d||2===d)return f(d),64|b}return 0===t?191&b:(i(),0!==t?64|b:191&b)},this.write=function(a,b){var c=e(a);c<256&&(r[c]=b)};var e=function(a){var b=a&v;return b>=q&&b<=n&&(p=o+w*(b-q)),b},f=function(a){t=a,s=0,1===a?g():2===a&&h()},g=function(){if(k.getTia().getVideoOutput().showOSD(\"Reading from Cartridge Flash Memory...\",!0),l){var a=l.getMedia().loadResource(j());a&&(u=jt.Util.uncompressStringBase64ToInt8BitArray(a,u))}jt.Util.arrayCopy(u,0,r)},h=function(){k.getTia().getVideoOutput().showOSD(\"Writing to Cartridge Flash Memory...\",!0),jt.Util.arrayCopy(r,0,u),l&&l.getMedia().saveResource(j(),jt.Util.compressInt8BitArrayToStringBase64(u))},i=function(){++s>140&&(s=0,t=0,r[y]=0,k.getTia().getVideoOutput().showOSD(\"Done.\",!0),l&&l.externalStateChange())},j=function(){return\"hfm\"+d.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(m),rs:o,bo:p,tb:n,e:jt.Util.compressInt8BitArrayToStringBase64(r),ho:t,ht:s}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,m),this.bytes=m,o=a.rs||0,p=a.bo,n=a.tb,r=jt.Util.uncompressStringBase64ToInt8BitArray(a.e,r),t=a.ho||0,s=a.ht||0};var k,l,m,n,o=0,p=0,q=4085,r=jt.Util.arrayFill(new Array(256),0),s=0,t=0,u=jt.Util.arrayFill(new Array(256),0),v=4095,w=4096,x=4084,y=255;a&&function(d){d.rom=a,d.format=b,m=a.content,d.bytes=m,o=c||0,p=o;var e=(m.length-o)/w;n=q+e-1}(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge24K_28K_32K_FA2;return c.loadState(a),c},jt.CartridgeBankedByBusMonitoring=function(a,b){\"use strict\";this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){\"use strict\";this.read=function(a){var b=a&g;return b>=i?c[e+b]:c[f+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=d&&(f=c*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:f,sm:d,fo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,f=a.bo,d=a.sm,e=a.fo};var c,d,e,f=0,g=4095,h=2048,i=2048;a&&function(f){f.rom=a,f.format=b,c=a.content,f.bytes=c,d=(c.length-h)/h-1,e=c.length-2*h}(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3F;return c.loadState(a),c},jt.Cartridge8K_512K_3E=function(a,b){\"use strict\";this.read=function(a){var b=c(a);return b>=m?d[f+b]:i>=0&&b<1024?j[i+b]||0:d[h+b]},this.write=function(a,b){if(!(i<0)){var d=c(a);d>=1024&&d<=2047&&(j[i+d-1024]=b)}};var c=function(a){return a&k};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=e&&(h=c*l,i=-1))}if(62===a){i=(255&b)*g}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(d),bo:h,sm:e,fo:f,ro:i,ra:jt.Util.compressInt8BitArrayToStringBase64(j)}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,d),this.bytes=d,h=a.bo,e=a.sm,f=a.fo,i=a.ro,j=jt.Util.uncompressStringBase64ToInt8BitArray(a.ra,j)};var d,e,f,g=1024,h=0,i=-1,j=jt.Util.arrayFill(new Array(g),0),k=4095,l=2048,m=2048;a&&function(c){c.rom=a,c.format=b,d=a.content,c.bytes=d,e=(d.length-l)/l-1,f=d.length-2*l}(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_512K_3E;return c.loadState(a),c},jt.Cartridge8K_256K_SB=function(a,b){\"use strict\";this.read=function(a){return c[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048==(6144&a)){var b=127&a;b>d||(e=b*g)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:e,m:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,e=a.bo,d=a.m};var c,d,e=0,f=4095,g=4096;a&&function(e){e.rom=a,e.format=b,c=a.content,e.bytes=c,d=c.length/g-1}(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_256K_SB;return c.loadState(a),c},jt.Cartridge8K_64K_AR=function(a,b){\"use strict\";this.powerOn=function(){g(0),D=0},this.connectBus=function(a){c=a},this.read=function(a){return f<M?d[o+f]:d[p+f-M]},this.write=function(a,b){p===N&&f>=K&&f<K+256&&h(f-K)},this.performBankSwitchOnMonitoredAccess=function(a){return f=a&Q,8184===(a&=8191)?void g(q):t>0?void(a!==s&&(s=a,0==--t&&(a&R)===S&&(f<M?d[o+f]=q:p<N&&(d[p+f-M]=q)))):void((a&R)===S&&f<=255&&(q=f,r&&(s=a,t=5)))};var c,d,e,f,g=function(a){switch(a>>2&7){case 0:o=2*M,p=N;break;case 1:\no=0*M,p=N;break;case 2:o=2*M,p=0*M;break;case 3:o=0*M,p=2*M;break;case 4:o=2*M,p=N;break;case 5:o=1*M,p=N;break;case 6:o=2*M,p=1*M;break;case 7:o=1*M,p=2*M;break;default:throw new Error(\"Invalid bank configuration\")}t=0,r=0!=(2&a),u=0==(1&a)},h=function(b){for(var d=!1;;){if(D>a.content.length-1){if(d)return 0===b?c.getTia().getVideoOutput().showOSD(\"Could not load Tape from Start. Not a Start Tape ROM!\",!0):c.getTia().getVideoOutput().showOSD(\"Could not find next Part to load in Tape!\",!0),void m(!1);D=0,d=!0}if(jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,D)===b)return 0===b?c.getTia().getVideoOutput().showOSD(\"Loaded Tape from Start\",!0):c.getTia().getVideoOutput().showOSD(\"Loaded next Part from Tape\",!0),void i();D+=O}},i=function(){j(),k(),l()},j=function(){jt.Util.arrayCopy(a.content,D+4*M,E,0,E.length),v=E[1]<<8|255&E[0],w=E[2],x=E[3],y=E[4],z=E[5],A=E[7]<<8|255&E[6],e=jt.Util.arrayFill(new Array(x),0),jt.Util.arrayCopy(E,16,e,0,x)},k=function(){jt.Util.arrayFillSegment(d,7*L,8*L-1,0);for(var b=D,c=0,f=e.length;c<f;c++){var g=e[c],h=(3&g)*M,i=(g>>2)*L;h+i+255<N&&jt.Util.arrayCopy(a.content,b,d,h+i,L),b+=L}D+=O},l=function(){d[N+G-63488]=w,d[N+F-63488]=z,d[N+I-63488]=B[C++],C>30&&(C=0),d[N+H-63488]=255&v,d[N+H+1-63488]=v>>8&255,m(!0)},m=function(a){d[N+J-63488]=a?1:0},n=function(){var a=jt.Util.uncompressStringBase64ToInt8BitArray(P);jt.Util.arrayCopy(a,0,d,N,M)},o=0,p=0,q=0,r=!1,s=-1,t=0,u=!1,v=0,w=0,x=0,y=0,z=0,A=0,B=new Array(31),C=0,D=0,E=jt.Util.arrayFill(new Array(256),0),F=64256,G=64257,H=64258,I=64260,J=64261,K=3072,L=256,M=8*L,N=3*M,O=4*M+256,P=\"7dSxCsIwEAbgv6niGkeddPVZ8kCOXc43yCIokkGIUN+gLxAoZHTxHRxjYq2xk7vSIPS75bb7uYNTuOJWu/bod3iU42BzUTiBe9sTzSjToBnNBVxfQz/nQ+2NhA2a05KYmhhjmxhoQZymxGil8gpeesOdyioW5DN25yxsiri3chQOUO1WeCSI/hPx9AJ/m/576KROMUhlfdE4dQ+AfJoPNBikgOZdLw==\",Q=4095,R=4096,S=4096;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(!0),b:jt.Util.compressInt8BitArrayToStringBase64(d),b0o:o,b1o:p,vw:q,we:r,la:s,ac:t,bp:u,rs:v,rc:w,rp:x,rk:y,rm:z,rb:A,ro:e,to:D,rnd:jt.Util.storeInt8BitArrayToStringBase64(B),rnc:C}},this.loadState=function(b){this.format=jt.CartridgeFormats[b.f],this.rom=a=jt.ROM.loadState(b.r),d=jt.Util.uncompressStringBase64ToInt8BitArray(b.b,d),this.bytes=d,o=b.b0o,p=b.b1o,q=b.vw,r=b.we,s=b.la,t=b.ac,u=b.bp,v=b.rs,w=b.rc,x=b.rp,y=b.rk,z=b.rm,A=b.rb,e=b.ro,D=b.to,jt.Util.restoreStringBase64ToInt8BitArray(b.rnd,B),C=b.rnc},a&&function(c){c.rom=a,c.format=b,d=jt.Util.arrayFill(new Array(4*M)),c.bytes=d,n();for(var e=0;e<31;++e)B[e]=256*Math.random()|0}(this)},jt.Cartridge8K_64K_AR.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_64K_AR.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_64K_AR;return c.loadState(a),c},jt.Cartridge8K_64K_AR.HEADER_SIZE=256,jt.Cartridge8K_64K_AR.PAGE_SIZE=256,jt.Cartridge8K_64K_AR.BANK_SIZE=8*jt.Cartridge8K_64K_AR.PAGE_SIZE,jt.Cartridge8K_64K_AR.PART_SIZE=4*jt.Cartridge8K_64K_AR.BANK_SIZE+jt.Cartridge8K_64K_AR.HEADER_SIZE,jt.Cartridge8K_64K_AR.peekPartNoOnTape=function(a,b){return a[b+4*jt.Cartridge8K_64K_AR.BANK_SIZE+5]},jt.Cartridge8K_64K_AR.checkTape=function(a){return 0===jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,0)||(jt.Util.warning(\"Wrong Supercharger Tape Part ROM! Please load a Full Tape ROM file\"),!1)},jt.Cartridge64K_X07=function(a,b){\"use strict\";this.read=function(a){return c[d+(a&e)]},this.performBankSwitchOnMonitoredAccess=function(a){2061==(6159&a)?d=((240&a)>>4)*f:d>=g&&0==(6272&a)&&(d=(0==(64&a)?14:15)*f)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.bo};var c,d=0,e=4095,f=4096,g=14*f;a&&function(d){d.rom=a,d.format=b,c=a.content,d.bytes=c}(this)},jt.Cartridge64K_X07.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge64K_X07.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge64K_X07;return c.loadState(a),c},jt.Cartridge8K_0840=function(a,b){\"use strict\";this.read=function(a){return c[d+(a&e)]},this.performBankSwitchOnMonitoredAccess=function(a){var b=6208&a;2048===b?0!==d&&(d=0):2112===b&&d!==f&&(d=f)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.bo};var c,d=0,e=4095,f=4096;a&&function(d){d.rom=a,d.format=b,c=a.content,d.bytes=c}(this)},jt.Cartridge8K_0840.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_0840.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_0840;return c.loadState(a),c},jt.Cartridge8K_UA=function(a,b){\"use strict\";this.read=function(a){return c[d+(a&e)]},this.performBankSwitchOnMonitoredAccess=function(a){544===a?0!==d&&(d=0):576===a&&d!==f&&(d=f)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:jt.Util.compressInt8BitArrayToStringBase64(c),bo:d}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),c=jt.Util.uncompressStringBase64ToInt8BitArray(a.b,c),this.bytes=c,d=a.bo};var c,d=0,e=4095,f=4096;a&&function(d){d.rom=a,d.format=b,c=a.content,d.bytes=c}(this)},jt.Cartridge8K_UA.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_UA.recreateFromSaveState=function(a,b){var c=b||new jt.Cartridge8K_UA;return c.loadState(a),c},jt.CartridgeFormats={\"4K\":{name:\"4K\",desc:\"4K Atari\",priority:101,tryFormat:function(a){if(a.content.length>=8&&a.content.length<=4096&&4096%a.content.length==0)return this},createCartridgeFromRom:function(a){return new jt.Cartridge4K(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge4K.recreateFromSaveState(a,b)}},CV:{name:\"CV\",desc:\"2K Commavid +RAM\",priority:102,tryFormat:function(a){if(2048===a.content.length||4096===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge2K_CV(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge2K_CV.recreateFromSaveState(a,b)}},E0:{name:\"E0\",desc:\"8K Parker Bros.\",priority:102,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_E0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_E0.recreateFromSaveState(a,b)}},F0:{name:\"F0\",desc:\"64K Dynacom Megaboy\",priority:101,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_F0(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_F0.recreateFromSaveState(a,b)}},FE:{name:\"FE\",desc:\"8K Robotank/Decathlon\",priority:103,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_FE(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_FE.recreateFromSaveState(a,b)}},E7:{name:\"E7\",desc:\"16K M-Network\",priority:102,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge16K_E7(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge16K_E7.recreateFromSaveState(a,b)}},F8:{name:\"F8\",desc:\"8K Atari (+RAM)\",priority:101,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F6:{name:\"F6\",desc:\"16K Atari (+RAM)\",priority:101,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){\nreturn new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},F4:{name:\"F4\",desc:\"32K Atari (+RAM)\",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},FA2cu:{name:\"FA2cu\",desc:\"32K CBS RAM+ CU Image\",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)},cuMagicWord:[30,171,173,16]},FA2:{name:\"FA2\",desc:\"24K/28K/32K CBS RAM+\",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(a,b)}},FA:{name:\"FA\",desc:\"12K CBS RAM Plus\",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},EF:{name:\"EF\",desc:\"8K-64K H. Runner (+RAM)\",priority:114,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},recreateCartridgeFromSaveState:function(a,b){return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(a,b)}},DPC:{name:\"DPC\",desc:\"10K DPC Pitfall 2 (Enhanced)\",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge10K_DPCa.recreateFromSaveState(a,b)}},\"3F\":{name:\"3F\",desc:\"8K-512K Tigervision\",priority:112,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3F.recreateFromSaveState(a,b)}},\"3E\":{name:\"3E\",desc:\"8K-512K Tigervision (+RAM)\",priority:111,tryFormat:function(a){if(a.content.length%2048==0&&a.content.length>=2048&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_512K_3E.recreateFromSaveState(a,b)}},X07:{name:\"X07\",desc:\"64K AtariAge\",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge64K_X07.recreateFromSaveState(a,b)}},\"0840\":{name:\"0840\",desc:\"8K Econobanking\",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_0840.recreateFromSaveState(a,b)}},UA:{name:\"UA\",desc:\"8K UA Limited\",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_UA.recreateFromSaveState(a,b)}},SB:{name:\"SB\",desc:\"8K-256K Superbanking\",priority:113,tryFormat:function(a){if(a.content.length%4096==0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_256K_SB.recreateFromSaveState(a,b)}},AR:{name:\"AR\",desc:\"8K-64K Arcadia/Supercharger\",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE==0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8&&jt.Cartridge8K_64K_AR.checkTape(a))return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},recreateCartridgeFromSaveState:function(a,b){return jt.Cartridge8K_64K_AR.recreateFromSaveState(a,b)}}},jt.CartridgeFormatsUserOptions=[\"4K\",\"CV\",\"E0\",\"F0\",\"FE\",\"E7\",\"F8\",\"F6\",\"F4\",\"FA2cu\",\"FA2\",\"FA\",\"EF\",\"DPC\",\"3F\",\"3E\",\"X07\",\"0840\",\"UA\",\"SB\",\"AR\"],jt.CartridgeCreatorImpl=function(){\"use strict\";this.createCartridgeFromRom=function(b){var c=a.getForROM(b);if(c){var d=jt.CartridgeFormats[c];if(d.tryFormat(b))return jt.Util.log(\"USER Format selected: \"+d.desc),d.createCartridgeFromRom(b)}var e=this.getBestFormatOption(b);if(e)return jt.Util.log(\"AUTO Format selected: \"+e.name+\": \"+e.desc+\", priority: \"+e.priority+(e.priorityBoosted?\" (\"+e.priorityBoosted+\")\":\"\")),e.createCartridgeFromRom(b)},this.recreateCartridgeFromSaveState=function(a,b){var c=jt.CartridgeFormats[a.f];if(!c)throw new Error(\"Unsupported ROM Format: \"+a.f);return b&&b.format!==c&&(b=null),c.recreateCartridgeFromSaveState(a,b)},this.changeCartridgeFormat=function(a,b){return b.createCartridgeFromRom(a.rom)},this.getBestFormatOption=function(a){var c=b(a);return 0===c.length?void 0:c[0]},this.getUserFormatOptionNames=function(a){for(var b=[],c=0,d=jt.CartridgeFormatsUserOptions.length;c<d;++c){var e=jt.CartridgeFormatsUserOptions[c];jt.CartridgeFormats[e].tryFormat(a)&&b.push(e)}return b},this.produceInfo=function(a,b){var e=a.content.length,f=jt.MD5(a.content);a.content.length>e&&a.content.splice(e);var g=jt.CartridgeDatabase[f];return g?jt.Util.log(g.n+\" (\"+f+\")\"):(g=c(a.source),jt.Util.log(\"Unknown ROM: \"+g.n+\" (\"+f+\")\")),d(g,a.source,f,b),g},this.setUserROMFormats=function(b){a=b};var a,b=function(a){var b,c,d=[];for(var f in jt.CartridgeFormats)try{if(!(b=jt.CartridgeFormats[f].tryFormat(a)))continue;e(b,a.info),d.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}return d.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),d},c=function(a){var b={n:\"Unknown\"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf(\"/\"),e=c.lastIndexOf(\"\\\\\"),f=c.lastIndexOf(\"?\"),g=Math.max(d,Math.max(e,f));g>=0&&g<c.length-1&&(c=c.substring(g+1));var h=c.lastIndexOf(\".\");return h>=0&&(c=c.substring(0,h)),b.n=c.trim()||\"Unknown\",b},d=function(a,b,c,d){a.h=c,a.l||(a.l=f(a.n));var e=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!e.match(l+\"JOYSTICK(S)?\"+m)))if(e.match(l+\"PADDLE(S)?\"+m))a.p=1;else for(var n=0;n<j.length;n++)if(e.match(j[n])){a.p=1;break a}a:if(!a.c)if(e.match(l+\"CRT(_|-)?MODE\"+m))a.c=1;else for(n=0;n<k.length;n++)if(e.match(k[n])){a.c=1;break a}if(d){d=d.trim().toUpperCase();for(var o in jt.CartridgeFormats)if(o.toUpperCase()===d){a.f=o;break}}a:if(!a.f){var p=b.toUpperCase();for(o in jt.CartridgeFormats)if(g(o,e)||g(o,p)){a.f=o;break a}for(o in i)if(h(o,e)){a.f=o;break a}}},e=function(a,b){b.f&&a.name===b.f?a.priorityBoosted=a.priority-n:a.priorityBoosted=void 0},f=function(a){return a.split(/(\\(|\\[)/)[0].trim()},g=function(a,b){return b.match(l+a+m)},h=function(a,b){var c=i[a];if(!c)return!1;for(var d=0;d<c.length;d++)if(b.match(c[d]))return!0;return!1},i={\nE0:[\"^.*MONTEZUMA.*$\",\"^.*MONTZREV.*$\",\"^.*GYRUS.*$\",\"^.*TOOTH.*PROTECTORS.*$\",\"^.*TOOTHPRO.*$\",\"^.*DEATH.*STAR.*BATTLE.*$\",\"^.*DETHSTAR.*$\",\"^.*JAMES.*BOND.*$\",\"^.*JAMEBOND.*$\",\"^.*SUPER.*COBRA.*$\",\"^.*SPRCOBRA.*$\",\"^.*TUTANKHAM.*$\",\"^.*TUTANK.*$\",\"^.*POPEYE.*$\",\"^.*(SW|STAR.?WARS).*ARCADE.*GAME.*$\",\"^.*SWARCADE.*$\",\"^.*Q.*BERT.*QUBES.*$\",\"^.*QBRTQUBE.*$\",\"^.*FROGGER.?(2|II).*$\",\"^.*DO.*CASTLE.*$\"],FE:[\"^.*ROBOT.*TANK.*$\",\"^.*ROBOTANK.*$\",\"^.*DECATHLON.*$\",\"^.*DECATHLN.*$\"],E7:[\"^.*BUMP.*JUMP.*$\",\"^.*BNJ.*$\",\"^.*BURGER.*TIME.*$\",\"^.*BURGTIME.*$\",\"^.*POWER.*HE.?MAN.*$\",\"^.*HE_MAN.*$\"],\"3F\":[\"^.*POLARIS.*$\",\"^.*RIVER.*PATROL.*$\",\"^.*RIVERP.*$\",\"^.*SPRINGER.*$\",\"^.*MINER.*2049.*$\",\"^.*MNR2049R.*$\",\"^.*MINER.*2049.*VOLUME.*$\",\"^.*MINRVOL2.*$\",\"^.*ESPIAL.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],\"3E\":[\"^.*BOULDER.*DASH.*$\",\"^.*BLDRDASH.*$\"],DPC:[\"^.*PITFALL.*II.*$\"]},j=[\"^.*PADDLES.*$\",\"^.*BREAKOUT.*$\",\"^.*SUPER.*BREAKOUT.*$\",\"^.*SUPERB.*$\",\"^.*WARLORDS.*$\",\"^.*STEEPLE.*CHASE.*$\",\"^.*STEPLCHS.*$\",\"^.*VIDEO.*OLYMPICS.*$\",\"^.*VID(|_)OLYM(|P).*$\",\"^.*CIRCUS.*ATARI.*$\",\"^.*CIRCATRI.*$\",\"^.*KABOOM.*$\",\"^.*BUGS((?!BUNNY).)*\",\"^.*BACHELOR.*PARTY.*$\",\"^.*BACHELOR.*$\",\"^.*BACHELORETTE.*PARTY.*$\",\"^.*BACHLRTT.*$\",\"^.*BEAT.*EM.*EAT.*EM.*$\",\"^.*BEATEM.*$\",\"^.*PHILLY.*FLASHER.*$\",\"^.*PHILLY.*$\",\"^.*JEDI.*ARENA.*$\",\"^.*JEDIAREN.*$\",\"^.*EGGOMANIA.*$\",\"^.*EGGOMANA.*$\",\"^.*PICNIC.*$\",\"^.*PIECE.*O.*CAKE.*$\",\"^.*PIECECKE.*$\",\"^.*BACKGAMMON.*$\",\"^.*BACKGAM.*$\",\"^.*BLACKJACK.*$\",\"^.*BLACK(|_)J.*$\",\"^.*CANYON.*BOMBER.*$\",\"^.*CANYONB.*$\",\"^.*CASINO.*$\",\"^.*DEMONS.*DIAMONDS.*$\",\"^.*DEMONDIM.*$\",\"^.*DUKES.*HAZZARD.*2.*$\",\"^.*STUNT.?2.*$\",\"^.*ENCOUNTER.*L.?5.*$\",\"^.*ENCONTL5.*$\",\"^.*G.*I.*JOE.*COBRA.*STRIKE.*$\",\"^.*GIJOE.*$\",\"^.*GUARDIAN.*$\",\"^.*MARBLE.*CRAZE.*$\",\"^.*MARBCRAZ.*$\",\"^.*MEDIEVAL.*MAYHEM.*$\",\"^.*MONDO.*PONG.*$\",\"^.*NIGHT.*DRIVER.*$\",\"^.*NIGHTDRV.*$\",\"^.*PARTY.*MIX.*$\",\"^.*POKER.*PLUS.*$\",\"^.*PONG.*SPORTS.*$\",\"^.*SCSICIDE.*$\",\"^.*SECRET.*AGENT.*$\",\"^.*SOLAR.*STORM.*$\",\"^.*SOLRSTRM.*$\",\"^.*SPEEDWAY.*$\",\"^.*STREET.*RACER.*$\",\"^.*STRTRACE.*$\",\"^.*STUNT.*CYCLE.*$\",\"^.*STUNT.?1.*$\",\"^.*TAC.?SCAN.*$\",\"^.*MUSIC.*MACHINE.*$\",\"^.*MUSCMACH.*$\",\"^.*VONG.*$\",\"^.*WARPLOCK.*$\"],k=[\"^.*STAR.*CASTLE.*$\",\"^.*SEAWEED.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],l=\"^(|.*?(\\\\W|_|%20))\",m=\"(|(\\\\W|_|%20).*)$\",n=50},jt.CartridgeCreator=new jt.CartridgeCreatorImpl,jt.Images={embedded:!1,count:5,urls:{logo:Javatari.IMAGES_PATH+\"logo.png\",loading:Javatari.IMAGES_PATH+\"loading.gif\",mouseCursor:Javatari.IMAGES_PATH+\"mouse-cursor.png\",panel:Javatari.IMAGES_PATH+\"panel.jpg\",panelSprites:Javatari.IMAGES_PATH+\"panel-sprites.jpg\",controllers:Javatari.IMAGES_PATH+\"controllers.jpg\",iconSprites:Javatari.IMAGES_PATH+\"icon-sprites.png\"}},jt.Clock=function(clockPulse){\"use strict\";this.connect=function(a){a.connectClock(this)},this.go=function(){running||(useRequestAnimationFrame=vSynch&&cyclesPerSecond===this.getVSynchNativeFrequency(),running=!0,useRequestAnimationFrame?animationFrame=requestAnimationFrame(pulse):interval=setInterval(pulse,cycleTimeMs))},this.pause=function(){running=!1,animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),interval&&(clearInterval(interval),interval=null)},this.setFrequency=function(a,b){running?(this.pause(),internalSetFrequency(a,b),this.go()):internalSetFrequency(a,b)},this.setVSynch=function(a){running?(this.pause(),vSynch=a,this.go()):vSynch=a},this.getVSynchNativeFrequency=function(){return vSynchAltNativeFrequency||vSynchNativeFrequency},this.setVSynchAltNativeFrequency=function(a){vSynchAltNativeFrequency=a};var internalSetFrequency=function(a,b){cyclesPerSecond=a,cycleTimeMs=1e3/a,divider=b>=1?b:1,dividerCounter>divider&&(dividerCounter=divider)},pulse=function(){animationFrame=null,divider>1?--dividerCounter<=0&&(dividerCounter=divider,clockPulse()):clockPulse(),useRequestAnimationFrame&&!animationFrame&&(animationFrame=requestAnimationFrame(pulse))};this.detectHostNativeFPSAndCallback=function(a){function b(){vSynchNativeFrequency=-1,jt.Util.error(\"Could not detect video native frequency. V-Synch DISABLED!\"),a&&a(vSynchNativeFrequency)}if(-1===Javatari.SCREEN_VSYNCH_MODE)return jt.Util.warning(\"Video native V-Synch disabled in configuration\"),void(a&&a(vSynchNativeFrequency));if(-1!==Javatari.SCREEN_FORCE_HOST_NATIVE_FPS)return jt.Util.warning(\"Host video frequency forced in configuration: \"+Javatari.SCREEN_FORCE_HOST_NATIVE_FPS),void(a&&a(vSynchNativeFrequency));if(!window.requestAnimationFrame)return b();var c=0,d=0,e=0,f=0,g=0,h=0,i=function(){if(e>=12||f>=18||g>=14||h>=18)return vSynchNativeFrequency=e>=12?60:f>=18?50:g>=14?120:100,jt.Util.log(\"Video native frequency detected: \"+vSynchNativeFrequency+\"Hz\"),void(a&&a(vSynchNativeFrequency));if(!(++c<=70))return b();var j=jt.Util.performanceNow(),k=1e3/(j-d);d=j,k>=47&&k<=53&&f++,k>=56.4&&k<=63.6&&e++,k>=112.8&&k<=127.2&&g++,k>=94&&k<=106&&h++,requestAnimationFrame(i)};i()},this.eval=function(str){return eval(str)};var running=!1,cyclesPerSecond=1,cycleTimeMs=1e3,divider=1,dividerCounter=1,useRequestAnimationFrame,animationFrame=null,interval=null,vSynch=!0,vSynchNativeFrequency=-1===Javatari.SCREEN_VSYNCH_MODE?-1:Javatari.SCREEN_FORCE_HOST_NATIVE_FPS,vSynchAltNativeFrequency=void 0},jt.RecentStoredROMs=function(){function a(){if(!e){try{e=JSON.parse(localStorage.javataristoredromsdata)}catch(a){}e||b()}return e}function b(){d=[],localStorage.javataristoredromsicatalog=JSON.stringify(d),e=[],localStorage.javataristoredromsdata=JSON.stringify(e)}this.getCatalog=function(){if(!d){try{d=JSON.parse(localStorage.javataristoredromsicatalog)}catch(a){}d||b()}return d},this.storeROM=function(b){this.getCatalog();var c=d.find(function(a){return a&&a.h===b.info.h});if(c&&c.n==b.info.l&&c.f==b.info.f)this.lastROMLoadedIndex=d.indexOf(c);else{if(a(),c){var g=d.indexOf(c);d.splice(g,1),e.splice(g,1)}else d.length>=f&&(d=d.slice(0,f-1),e=e.slice(0,f-1));d.unshift({n:b.info.l,h:b.info.h,f:b.info.f});for(var h=0;h<d.length;++h)d[h].i=h;localStorage.javataristoredromsicatalog=JSON.stringify(d),e.unshift(b.saveState(!0)),localStorage.javataristoredromsdata=JSON.stringify(e),this.lastROMLoadedIndex=0,jt.Util.log(\"New ROM stored: \"+b.info.n+\", \"+b.info.h)}localStorage.javataristoredromslastindex=this.lastROMLoadedIndex},this.getROM=function(b){this.lastROMLoadedIndex=b,localStorage.javataristoredromslastindex=b;var c=a()[b];return c?jt.ROM.loadState(c):null};var c=localStorage.javataristoredromslastindex;this.lastROMLoadedIndex=void 0!==c?Number.parseInt(c):-1;var d,e,f=10},jt.FileLoader=function(a,b,c){\"use strict\";function d(a,b,c,d,f,g,h){for(var i=0;i<a.length;i++)if(e(a[i],b,c,d,f,g,h))return!0;return!1}function e(a,b,c,d,g,h,i,j){try{i&&!a.content&&(a.content=a.asUint8Array());var k=a.content;if(!j){var l=jt.Util.checkContentIsZIP(k);if(l){for(var m=jt.Util.getZIPFilesSorted(l),n=0;n<m.length;n++)if(e(m[n],b,c,d,g,h,!0,!0))return!0;return!1}}var o=jt.Util.checkContentIsGZIP(k);if(o)return e({name:a.name,content:o},b,c,d,g,h,!1,!0)}catch(a){return jt.Util.error(a),!1}return f(a.name,k,b,c,d,g,h)}function f(a,b,c,d,e,f,g){if(((c=c||y.AUTO)===y.STATE||c===y.AUTO)&&o.loadStateFile(b))return!0;if((c===y.CART_DATA||c===y.AUTO)&&n.loadCartridgeData(d,a,b))return!0;if(c===y.ROM||c===y.AUTO){var h=new jt.ROM(a,b,null,g);return l.loadROM(h,d,e,f)}return!1}function g(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),this.files&&0!==this.files.length){var b=jt.Util.asNormalArray(this.files);try{p.value=\"\"}catch(a){}var c=m.systemPause(!0),d=function(a){c||m.systemPause(!1)};return b&&b.length>0&&(1===b.length?l.readFromFile(b[0],r,s,t,u,d):l.readFromFiles(b,r,s,t,u,d)),!1}}function h(a){a.returnValue=!1,a.preventDefault(),a.stopPropagation(),\na.dataTransfer&&(Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect=\"none\":a.ctrlKey?a.dataTransfer.dropEffect=\"copy\":a.altKey&&(a.dataTransfer.dropEffect=\"link\")),v=a.buttons>0?a.buttons:w}function i(a){if(a.returnValue=!1,a.preventDefault(),a.stopPropagation(),a.target.focus(),a.dataTransfer&&!c.mediaChangeDisabledWarning()){var b=m.systemPause(!0),d=a.shiftKey?1:0,e=v&x,f=a.ctrlKey,g=y.AUTO,h=a.dataTransfer&&a.dataTransfer.files,i=function(a){b||m.systemPause(!1)};if(h&&h.length>0)1===h.length?l.readFromFile(h[0],g,d,e,f,i):l.readFromFiles(h,g,d,e,f,i);else{var j=a.dataTransfer.getData(\"text\");j&&j.length>0?l.readFromURL(j,g,d,e,f,i):i()}}}function j(a){jt.Util.message(\"Could not load file(s):\\n\\n\"+a+\"\\n\")}function k(){p=document.createElement(\"input\"),p.id=\"jt-file-loader-input\",p.type=\"file\",p.multiple=!0,p.accept=z.AUTO,p.style.display=\"none\",p.addEventListener(\"change\",g),q.appendChild(p)}var l=this;this.connect=function(a){m=a,n=m.getCartridgeSocket(),o=m.getSavestateSocket()},this.registerForDnD=function(a){a.addEventListener(\"dragover\",h,!1),a.addEventListener(\"drop\",i,!1)},this.registerForFileInputElement=function(a){q=a},this.openFileChooserDialog=function(a,b,c,d){p||k(),p.multiple=A[y[a]||y.AUTO],p.accept=z[y[a]||y.AUTO],r=a,s=c?1:0,t=b,u=d,p.click()},this.openURLChooserDialog=function(a,b,c,d){var e,f=c?1:0;try{e=localStorage&&localStorage[C]}catch(a){}var g=m.systemPause(!0);if(e=prompt(\"Load file from URL:\",e||\"\"),e=e&&e.toString().trim()){try{localStorage[C]=e}catch(a){}this.readFromURL(e,a,f,b,d,function(){g||m.systemPause(!1)})}else g||m.systemPause(!1)},this.readFromFile=function(a,b,c,d,e,f){jt.Util.log(\"Reading file: \"+a.name);var g=new FileReader;g.onload=function(g){var h=new Uint8Array(g.target.result),i={name:a.name,content:h,lastModifiedDate:a.lastModified?new Date(a.lastModified):a.lastModifiedDate};l.loadFromFile(i,b,c,d,e),f&&f(!0)},g.onerror=function(a){j(\"File reading error: \"+a.target.error.name+D),f&&f(!1)},g.readAsArrayBuffer(a)},this.readFromURL=function(a,b,c,d,e,f){new jt.MultiDownloader([{url:a}],function(g){var h={name:a,content:g[0].content,lastModifiedDate:null};l.loadFromFile(h,b,c,d,e),f&&f(!0)},function(a){j(\"URL reading error: \"+a[0].error),f&&f(!1)}).start()},this.readFromFiles=function(a,b,c,d,e,f){new jt.MultiFileReader(a,function(a){l.loadFromFiles(a,b,c,d,e),f&&f(!0)},function(a,b,c){c||(b+=D),j(\"File reading error: \"+b),f&&f(!1)}).start()},this.loadFromContent=function(a,b,c,d,e,f,g){return this.loadFromFile({name:a,content:b},c,d,e,f,g)},this.loadFromFile=function(a,b,c,e,f,g){var h;if(h=jt.Util.checkContentIsZIP(a.content))try{if(d(jt.Util.getZIPFilesSorted(h),b,c,e,f,g,!0))return}catch(a){jt.Util.error(a)}else if(d([a],b,c,e,f,g,!1))return;j(\"No valid \"+B[b]+\" found.\")},this.loadFromFiles=function(a,b,c,e,f){a=jt.Util.asNormalArray(a).slice(0),a.sort(function(a,b){return a.name<b.name?-1:a.name>b.name?1:0}),d(a,b,c,e,f,null,!1)||j(\"No valid \"+B[b]+\" found.\")},this.loadROM=function(a,c,d,e){var f=jt.CartridgeCreator.createCartridgeFromRom(a);return!!f&&(n.insert(f,!d),b.storeROM(a),!0)};var m,n,o,p,q,r,s=0,t=!1,u=!1,v=1,w=1,x=2,y=jt.FileLoader.OPEN_TYPE;this.OPEN_TYPE=y;var z={ROM:\".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\",STATE:\".jst,.JST\",CART_DATA:\".dat,.DAT,.sram,.SRAM\",AUTO:\".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\"},A={ROM:!1,STATE:!1,CART_DATA:!1,AUTO:!1},B={ROM:\"ROM\",STATE:\"Savestate\",CART_DATA:\"Cartridge Data\",AUTO:\"ROM\"},C=\"javatarilasturl\",D=\"\\n\\nIMPORTANT: Directories are not supported for loading!\";Javatari.fileLoader=this},jt.FileLoader.OPEN_TYPE={AUTO:\"AUTO\",ROM:\"ROM\",STATE:\"STATE\",CART_DATA:\"CART_DATA\"},jt.FileDownloader=function(){\"use strict\";function a(){if(\"NONE\"===c)return alert(\"Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage.\"),!0}function b(){\"NONE\"!==(c=jt.Util.isIOSDevice()?jt.Util.isBrowserStandaloneMode()?\"NONE\":\"DATA\":\"SAFARI\"===jt.Util.browserInfo().name?\"DATA\":\"BLOB\")&&(d=document.createElement(\"a\"),d.style.display=\"none\",d.target=\"_blank\",d.href=\"#\",e.appendChild(d))}this.connectPeripherals=function(a){f=a},this.registerForDownloadElement=function(a){e=a},this.startDownloadBinary=function(e,g,h){try{if(c||b(),a())return;var i;if(\"BLOB\"===c){d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href);var j=new Blob([g],{type:\"data:application/octet-stream\"});i=(window.URL||window.webkitURL).createObjectURL(j)}else i=\"data:application/octet-stream;base64,\"+btoa(\"string\"==typeof g?g:jt.Util.int8BitArrayToByteString(g));d.download=e&&e.trim(),d.href=i,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}},this.startDownloadURL=function(e,g,h){try{if(c||b(),a())return;\"BLOB\"===c&&d.href&&(window.URL||window.webkitURL).revokeObjectURL(d.href),d.download=e&&e.trim(),d.href=g,d.click(),f.showOSD(h+\" saved\",!0)}catch(a){f.showOSD(h+\" save FAILED!\",!0,!0),jt.Util.error(a)}};var c,d,e,f},jt.DOMKeys={},jt.DOMKeys.MOD_SHIFT=16,jt.DOMKeys.LOC_SHIFT=24,jt.DOMKeys.SHIFT=65536,jt.DOMKeys.CONTROL=131072,jt.DOMKeys.ALT=262144,jt.DOMKeys.META=524288,jt.DOMKeys.LOCNONE=0,jt.DOMKeys.LOCLEFT=16777216,jt.DOMKeys.LOCRIGHT=33554432,jt.DOMKeys.LOCNUM=50331648,jt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK=~(jt.DOMKeys.SHIFT|jt.DOMKeys.CONTROL|jt.DOMKeys.ALT|jt.DOMKeys.META),function(a,b,c,d){a.VK_F1={c:112,n:\"F1\"},a.VK_F2={c:113,n:\"F2\"},a.VK_F3={c:114,n:\"F3\"},a.VK_F4={c:115,n:\"F4\"},a.VK_F5={c:116,n:\"F5\"},a.VK_F6={c:117,n:\"F6\"},a.VK_F7={c:118,n:\"F7\"},a.VK_F8={c:119,n:\"F8\"},a.VK_F9={c:120,n:\"F9\"},a.VK_F10={c:121,n:\"F10\"},a.VK_F11={c:122,n:\"F11\"},a.VK_F12={c:123,n:\"F12\"},a.VK_1={c:49,n:\"1\"},a.VK_2={c:50,n:\"2\"},a.VK_3={c:51,n:\"3\"},a.VK_4={c:52,n:\"4\"},a.VK_5={c:53,n:\"5\"},a.VK_6={c:54,n:\"6\"},a.VK_7={c:55,n:\"7\"},a.VK_8={c:56,n:\"8\"},a.VK_9={c:57,n:\"9\"},a.VK_0={c:48,n:\"0\"},a.VK_Q={c:81,n:\"Q\"},a.VK_W={c:87,n:\"W\"},a.VK_E={c:69,n:\"E\"},a.VK_R={c:82,n:\"R\"},a.VK_T={c:84,n:\"T\"},a.VK_Y={c:89,n:\"Y\"},a.VK_U={c:85,n:\"U\"},a.VK_I={c:73,n:\"I\"},a.VK_O={c:79,n:\"O\"},a.VK_P={c:80,n:\"P\"},a.VK_A={c:65,n:\"A\"},a.VK_S={c:83,n:\"S\"},a.VK_D={c:68,n:\"D\"},a.VK_F={c:70,n:\"F\"},a.VK_G={c:71,n:\"G\"},a.VK_H={c:72,n:\"H\"},a.VK_J={c:74,n:\"J\"},a.VK_K={c:75,n:\"K\"},a.VK_L={c:76,n:\"L\"},a.VK_Z={c:90,n:\"Z\"},a.VK_X={c:88,n:\"X\"},a.VK_C={c:67,n:\"C\"},a.VK_V={c:86,n:\"V\"},a.VK_B={c:66,n:\"B\"},a.VK_N={c:78,n:\"N\"},a.VK_M={c:77,n:\"M\"},a.VK_ESCAPE={c:27,n:\"Esc\"},a.VK_ENTER={c:13,n:\"Enter\"},a.VK_SPACE={c:32,n:\"Space\"},a.VK_TAB={c:9,n:\"Tab\"},a.VK_BACKSPACE={c:8,n:\"BackSpc\"},a.VK_CONTEXT={c:93,n:\"Context\"},a.VK_LSHIFT={c:16|b,n:\"L-Shift\"},a.VK_LCONTROL={c:17|b,n:\"L-Control\"},a.VK_LALT={c:18|b,n:\"L-Alt\"},a.VK_LMETA={c:91|b,n:\"L-Meta\"},a.VK_RSHIFT={c:16|c,n:\"R-Shift\"},a.VK_RCONTROL={c:17|c,n:\"R-Control\"},a.VK_RALT={c:18|c,n:\"R-Alt\"},a.VK_RMETA={c:91|c,n:\"R-Meta\"},a.VK_CAPS_LOCK={c:20,n:\"CapsLock\"},a.VK_PRINT_SCREEN={c:44,n:\"PrtScr\"},a.VK_SCROLL_LOCK={c:145,n:\"ScrLck\"},a.VK_PAUSE={c:19,n:\"Pause\"},a.VK_BREAK={c:3,n:\"Break\"},a.VK_INSERT={c:45,n:\"Ins\"},a.VK_DELETE={c:46,n:\"Del\"},a.VK_HOME={c:36,n:\"Home\"},a.VK_END={c:35,n:\"End\"},a.VK_PAGE_UP={c:33,n:\"PgUp\"},a.VK_PAGE_DOWN={c:34,n:\"PgDown\"},a.VK_NUM_INSERT={c:45|d,n:\"Num Ins\"},a.VK_NUM_DELETE={c:46|d,n:\"Num Del\"},a.VK_NUM_HOME={c:36|d,n:\"Num Home\"},a.VK_NUM_END={c:35|d,n:\"Num End\"},a.VK_NUM_PAGE_UP={c:33|d,n:\"Num PgUp\"},a.VK_NUM_PAGE_DOWN={c:34|d,n:\"Num PgDown\"},a.VK_UP={c:38,n:\"Up\"},a.VK_DOWN={c:40,n:\"Down\"},a.VK_LEFT={c:37,n:\"Left\"},a.VK_RIGHT={c:39,n:\"Right\"},a.VK_NUM_UP={c:38|d,n:\"Num Up\"},a.VK_NUM_DOWN={c:40|d,n:\"Num Down\"},a.VK_NUM_LEFT={c:37|d,n:\"Num Left\"},a.VK_NUM_RIGHT={c:39|d,n:\"Num Right\"},a.VK_NUMLOCK={c:144,n:\"NumLock\"},a.VK_NUM_COMMA={c:110|d,n:\"Num ,\"},a.VK_NUM_DIVIDE={c:111|d,n:\"Num /\"},a.VK_NUM_MULTIPLY={c:106|d,n:\"Num *\"},a.VK_NUM_MINUS={c:109|d,n:\"Num -\"},a.VK_NUM_PLUS={\nc:107|d,n:\"Num +\"},a.VK_NUM_PERIOD={c:194|d,n:\"Num .\"},a.VK_NUM_0={c:96|d,n:\"Num 0\"},a.VK_NUM_1={c:97|d,n:\"Num 1\"},a.VK_NUM_2={c:98|d,n:\"Num 2\"},a.VK_NUM_3={c:99|d,n:\"Num 3\"},a.VK_NUM_4={c:100|d,n:\"Num 4\"},a.VK_NUM_5={c:101|d,n:\"Num 5\"},a.VK_NUM_6={c:102|d,n:\"Num 6\"},a.VK_NUM_7={c:103|d,n:\"Num 7\"},a.VK_NUM_8={c:104|d,n:\"Num 8\"},a.VK_NUM_9={c:105|d,n:\"Num 9\"},a.VK_NUM_CLEAR={c:12|d,n:\"Num Clear\"},a.VK_NUM_ENTER={c:13|d,n:\"Num Enter\"},a.VK_QUOTE={c:222,n:\"'\"},a.VK_BACKQUOTE={c:192,n:\"`\"},a.VK_MINUS={c:189,n:\"-\"},a.VK_EQUALS={c:187,n:\"=\"},a.VK_OPEN_BRACKET={c:219,n:\"[\"},a.VK_CLOSE_BRACKET={c:221,n:\"]\"},a.VK_COMMA={c:188,n:\",\"},a.VK_PERIOD={c:190,n:\".\"},a.VK_SEMICOLON={c:186,n:\";\"},a.VK_SLASH={c:191,n:\"/\"},a.VK_BACKSLASH={c:220,n:\"\\\\\"},a.VK_ALTERNATE_ESC={c:a.VK_F1.c|jt.DOMKeys.ALT,n:[\"Alt\",\"F1\"]},a.VK_FF_MINUS={c:173,n:\"-\"},a.VK_FF_EQUALS={c:61,n:\"=\"},a.VK_FF_SEMICOLON={c:59,n:\";\"},a.VK_BR_QUOTE={c:192,n:\"'\"},a.VK_BR_OPEN_BRACKET={c:221,n:\"[\"},a.VK_BR_CLOSE_BRACKET={c:220,n:\"]\"},a.VK_BR_SEMICOLON={c:191,n:\";\"},a.VK_BR_SLASH={c:193,n:\"/\"},a.VK_BR_BACKSLASH={c:226,n:\"\\\\\"},a.VK_BR_CEDILLA={c:186,n:\"Ç\"},a.VK_BR_TILDE={c:222,n:\"~\"},a.VK_BR_ACUTE={c:219,n:\"´\"},a.VK_FF_BR_TILDE={c:176,n:\"~\"},a.VK_VOID={c:-1,n:\"\"}}(jt.DOMKeys,jt.DOMKeys.LOCLEFT,jt.DOMKeys.LOCRIGHT,jt.DOMKeys.LOCNUM),jt.DOMKeys.forcedNames={27:\"Esc\",13:\"Enter\",32:\"Space\",9:\"Tab\",8:\"BkSpc\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",91:\"Meta\",93:\"Context\",20:\"Caps\",44:\"PrtScr\",145:\"ScrLck\",19:\"Pause\",3:\"Break\",45:\"Ins\",46:\"Del\",36:\"Home\",35:\"End\",33:\"PgUp\",34:\"PgDown\",38:\"Up\",40:\"Down\",37:\"Left\",39:\"Right\"},jt.DOMKeys.isModifierKeyCode=function(a){return 16===a||17===a||18===a||91===a},jt.DOMKeys.codeForKeyboardEvent=function(a){var b=a.keyCode;return this.isModifierKeyCode(b)?b&this.IGNORE_ALL_MODIFIERS_MASK|a.location<<this.LOC_SHIFT:b|a.location<<this.LOC_SHIFT|(a.shiftKey?this.SHIFT:0)|(a.ctrlKey?this.CONTROL:0)|(a.altKey?this.ALT:0)|(a.metaKey?this.META:0)},jt.DOMKeys.nameForKeyboardEvent=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return(a.shiftKey||a.ctrlKey||a.altKey||a.metaKey)&&(c=[c],a.metaKey&&c.unshift(\"Meta\"),a.altKey&&c.unshift(\"Alt\"),a.ctrlKey&&c.unshift(\"Ctrl\"),a.shiftKey&&c.unshift(\"Shift\")),c},jt.DOMKeys.nameForKeyboardEventSingle=function(a){var b=a.keyCode,c=this.forcedNames[b]||a.key,d=c&&c.toUpperCase();switch(d&&\"UNIDENTIFIED\"!==d&&\"UNDEFINED\"!==d&&\"UNKNOWN\"!==d?\"DEAD\"===d&&(c=\"Dead#\"+b):c=\"#\"+b,1===c.length?c=c.toUpperCase():c.length>12&&(c=c.substr(0,12)),a.location){case 1:c=\"L-\"+c;break;case 2:c=\"R-\"+c;break;case 3:c=\"Num \"+c}return c},jt.GamepadButtons={GB_1:{b:0,n:\"1\"},GB_2:{b:1,n:\"2\"},GB_3:{b:2,n:\"3\"},GB_4:{b:3,n:\"4\"},GB_L1:{b:4,n:\"L1\"},GB_R1:{b:5,n:\"R1\"},GB_L2:{b:6,n:\"L2\"},GB_R2:{b:7,n:\"R2\"},GB_BACK:{b:8,n:\"BACK\"},GB_START:{b:9,n:\"START\"},GB_S1:{b:10,n:\"S1\"},GB_S2:{b:11,n:\"S2\"},GB_UP:{b:12,n:\"&#9650;\"},GB_DOWN:{b:13,n:\"&#9660;\"},GB_LEFT:{b:14,n:\"&#9668;\"},GB_RIGHT:{b:15,n:\"&#9658;\"},GB_LOGO:{b:16,n:\"LOGO\"},GB_VOID:{b:-1,n:\"Unbound\"}},jt.TouchControls={buttons:[\"T_B\",\"T_A\"]},jt.GamepadConsoleControls=function(a){\"use strict\";function b(a,b){this.index=a,this.update=function(b){return!!(c=b[a])},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return\"object\"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)<l?a=0:a*=f,(b<0?-b:b)<l?b=0:b*=g,0===a&&0===b)return-1;var h=(1-Math.atan2(a,b)/Math.PI)/2;return h+=1/16,h>=1&&(h-=1),8*h|0},this.getPaddlePosition=function(){var a=c.axes[h]*i*j+k|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.paddleAxis,i=b.paddleAxisSig,j=-190*b.paddleSens,k=-190*b.paddleCenter+190-5,l=b.deadzone,m=Number.MIN_VALUE}this.connect=function(a){h=a},this.connectScreen=function(a){i=a},this.powerOn=function(){(r=!!navigator.getGamepads)&&(this.applyPreferences(),e())},this.powerOff=function(){r=!1},this.toggleMode=function(){if(!r)return void i.showOSD(\"Joysticks unavailable (not supported by browser)\",!0,!0);++u,u>0&&(u=-2),-2===u?j=k=null:-1===u&&(s=60,this.controlsClockPulse()),w=0===u,this.applyPreferences(),e(),i.showOSD(\"Gamepads \"+this.getModeDesc(),!0)},this.setPaddleMode=function(a){r&&(v=a,l.xPosition=m.xPosition=-1)},this.setP1ControlsMode=function(a){x=a,this.applyPreferences()},this.controlsClockPulse=function(){if(r&&-2!==u&&(++s>=60&&(s=0),j||k||0===s)){var a=navigator.getGamepads();j?j.update(a)?j.hasMoved()&&f(j,l,n,p):(j=null,c(!0,!1)):0===s&&(j=d(n,o,a))&&c(!0,!0),k?k.update(a)?k.hasMoved()&&f(k,m,o,q):(k=null,c(!1,!1)):0===s&&(k=d(o,n,a))&&c(!1,!0)}};var c=function(a,b){i.showOSD((a^x^w?\"P1\":\"P2\")+\" Gamepad \"+(b?\"connected\":\"disconnected\"),a)},d=function(a,c,d){if(d&&0!==d.length){var e=a.device;if(e>=0)return d[e]&&d[e].buttons.length>0?new b(e,a):null;for(var f=0,g=d.length;f<g;f++)if(d[f]&&d[f].buttons.length>0&&!(f===c.device||j&&j.index===f||k&&k.index===f))return new b(f,a)}},e=function(){l=g(),m=g()},f=function(b,c,d,e){if(v&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,a.processControlValue(d.player?t.PADDLE1_POSITION:t.PADDLE0_POSITION,f))}var g=b.getDPadDirection();if(-1!==g||v&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var h=!1,i=!1,j=!1,k=!1;switch(g){case 0:h=!0;break;case 1:h=i=!0;break;case 2:i=!0;break;case 3:j=i=!0;break;case 4:j=!0;break;case 5:j=k=!0;break;case 6:k=!0;break;case 7:h=k=!0}a.processKey(e.up.c,h),a.processKey(e.right.c,i),a.processKey(e.down.c,j),a.processKey(e.left.c,k),c.direction=g}var l=b.getButtonDigital(d.button);l!==c.button&&(a.processKey(e.button.c,l),c.button=l),(l=b.getButtonDigital(d.buttonT))!==c.buttonT&&(a.processKey(e.buttonT.c,l),c.buttonT=l);var m=b.getButtonDigital(d.select);m!==c.select&&(a.processControlState(t.SELECT,m),c.select=m);var n=b.getButtonDigital(d.reset);n!==c.reset&&(a.processControlState(t.RESET,n),c.reset=n);var o=b.getButtonDigital(d.pause);o!==c.pause&&(a.processControlState(t.PAUSE,o),c.pause=o);var p=b.getButtonDigital(d.fastSpeed);p!==c.fastSpeed&&(a.processControlState(t.FAST_SPEED,p),c.fastSpeed=p);var q=b.getButtonDigital(d.slowSpeed);q!==c.slowSpeed&&(a.processControlState(t.SLOW_SPEED,q),c.slowSpeed=q)},g=function(){return{direction:-1,button:!1,buttonT:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}};this.getModeDesc=function(){switch(u){case-1:return\"AUTO\";case 0:return\"AUTO (swapped)\";default:return r?\"DISABLED\":\"NOT SUPPORTED\"}},this.applyPreferences=function(){var a=w?1:0,b=a?0:1;n=y.joystickGamepads[a],n.player=x^w?1:0,o=y.joystickGamepads[b],o.player=x^w?0:1,p=y.joystickKeys[a],q=y.joystickKeys[b]};var h,i,j,k,l,m,n,o,p,q,r=!1,s=-1,t=jt.ConsoleControls,u=-1,v=!1,w=!1,x=!1,y=Javatari.userPreferences.current},jt.DOMTouchControls=function(a){\"use strict\";function b(){w.classList.toggle(\"jt-poweroff\",!J),w.classList.toggle(\"jt-paused\",K)}function c(){var a=A>0;document.documentElement.classList.toggle(\"jt-touch-active\",a),document.documentElement.classList.toggle(\"jt-dir-big\",C),t.touchControlsActiveUpdate(a,C)}function d(a){if(jt.Util.blockEvent(a),null===E){void 0===u&&i();var b=a.changedTouches[0];E=b.identifier,g(b.pageX,b.pageY)}}function e(a){jt.Util.blockEvent(a),null!==E&&(E=null,h(-1))}function f(a){if(jt.Util.blockEvent(a),\nnull!==E)for(var b=a.changedTouches,c=0;c<b.length;++c)if(b[c].identifier===E)return void g(b[c].pageX,b[c].pageY)}function g(a,b){var c=-1,d=a-u,e=b-v;Math.sqrt(d*d+e*e)>G&&(c=(1-Math.atan2(d,e)/Math.PI)/2,c+=1/16,c>=1&&(c-=1),c=8*c|0),h(c)}function h(b){if(F!==b){b>=0&&a.hapticFeedback();var c=!1,d=!1,e=!1,f=!1;switch(b){case 0:c=!0;break;case 1:c=d=!0;break;case 2:d=!0;break;case 3:e=d=!0;break;case 4:e=!0;break;case 5:e=f=!0;break;case 6:f=!0;break;case 7:c=f=!0}a.processKey(x.up.c,c),a.processKey(x.right.c,d),a.processKey(x.down.c,e),a.processKey(x.left.c,f),F=b}}function i(){var a=D.getBoundingClientRect();G=.14*(a.right-a.left)|0,u=((a.left+a.right)/2|0)+window.pageXOffset,v=((a.top+a.bottom)/2|0)+window.pageYOffset}function j(a){jt.Util.blockEvent(a),l(a.target.jtControl,!0)}function k(a){jt.Util.blockEvent(a),l(a.target.jtControl,!1)}function l(b,c){b&&(c&&a.hapticFeedback(),a.processKey(x[b].c,c))}function m(b){jt.Util.blockEvent(b),a.hapticFeedback(),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!0)}function n(b){jt.Util.blockEvent(b),a.processControlState(J?jt.ConsoleControls.PAUSE:jt.ConsoleControls.POWER,!1)}function o(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!0)}function p(b){jt.Util.blockEvent(b),a.processControlState(K?jt.ConsoleControls.FRAME:jt.ConsoleControls.FAST_SPEED,!1)}function q(){I.reset(),u=v=void 0,E=null,h(-1)}function r(){this.reset=function(){this.portValue=63},this.reset()}this.connect=function(a){s=a},this.connectScreen=function(a){t=a},this.powerOn=function(){this.applyPreferences(),q(),c()},this.powerOff=function(){},this.releaseControllers=function(){q()},this.updateConsolePanelSize=function(a,b,c,d,e){if(w&&d){var f=!e&&(a-b-10)/2<M;w.classList.toggle(\"jt-center\",f),f?w.style.bottom=jt.ScreenGUI.BAR_HEIGHT+c+3+\"px\":w.style.removeProperty(\"bottom\")}},this.toggleMode=function(){if(!y)return void t.showOSD(\"Touch Controls unavailable. Not a touch device!\",!0,!0);A++,A>2&&(A=0),q(),this.applyPreferences(),c(),t.showOSD(\"Touch Controls \"+this.getModeDesc(),!0)},this.setP1ControlsMode=function(a){B=a,this.applyPreferences()},this.getModeDesc=function(){switch(A){case-1:return\"AUTO\";case 0:return\"DISABLED\";case 1:return\"ENABLED\";case 2:return\"ENABLED (swapped)\"}},this.toggleTouchDirBig=function(){C=!C,L.touch.directionalBig=C,Javatari.userPreferences.setDirty(),c()},this.isDirBig=function(){return C},this.setupTouchControlsIfNeeded=function(a){function c(a,b){var c=document.createElement(\"div\");c.id=\"jt-touch-\"+b,c.classList.add(\"jt-touch-button\"),c.classList.add(\"jt-touch-button-joy\"),c.classList.add(\"jt-touch-button-joy-\"+b),c.jtControl=b,c.addEventListener(\"touchstart\",j),c.addEventListener(\"touchmove\",jt.Util.blockEvent),c.addEventListener(\"touchend\",k),c.addEventListener(\"touchcancel\",k),c.addEventListener(\"mousedown\",j),c.addEventListener(\"mouseup\",k),H[b]=c,a.appendChild(c)}if(!(D||A<=0)){w=document.createElement(\"div\"),w.id=\"jt-touch-speed\";var g=document.createElement(\"div\");g.id=\"jt-touch-pause\",g.addEventListener(\"touchstart\",m),g.addEventListener(\"touchend\",n),w.appendChild(g);var h=document.createElement(\"div\");h.id=\"jt-touch-fast\",h.addEventListener(\"touchstart\",o),h.addEventListener(\"touchend\",p),w.appendChild(h),a.appendChild(w);var i=document.createElement(\"div\");i.id=\"jt-touch-left\",D=function(){function a(a){var c=document.createElement(\"div\");c.classList.add(\"jt-touch-dir-\"+a),b.appendChild(c);var d=document.createElement(\"div\");d.classList.add(\"jt-arrow-\"+a),b.appendChild(d)}var b=document.createElement(\"div\");return b.classList.add(\"jt-touch-dir\"),b.classList.add(\"jt-touch-dir-joy\"),a(\"left\"),a(\"right\"),a(\"up\"),a(\"down\"),b}(),D.addEventListener(\"touchstart\",d),D.addEventListener(\"touchmove\",f),D.addEventListener(\"touchend\",e),D.addEventListener(\"touchcancel\",e),i.appendChild(D),a.appendChild(i),i=document.createElement(\"div\"),i.id=\"jt-touch-right\",c(i,\"buttonT\"),c(i,\"button\"),a.appendChild(i),b()}},this.consolePowerAndUserPauseStateUpdate=function(a,c){J=a,K=c,w&&b()},this.applyPreferences=function(){C=!!L.touch.directionalBig;var a=2===A?1:0;x=L.joystickKeys[a]};var s,t,u,v,w,x,y=jt.Util.isTouchDevice(),z=jt.Util.isMobileDevice(),A=Javatari.TOUCH_MODE>=0?Javatari.TOUCH_MODE:y&&z?1:0,B=!1,C=!1,D=null,E=null,F=-1,G=0,H={},I=new r,J=!1,K=!1,L=Javatari.userPreferences.current,M=84;this.saveState=function(){return{}},this.loadState=function(a){q()}},jt.DOMConsoleControls=function(a,b){\"use strict\";function c(a){E=a,F=E?60/I[E]|0:0,H=F/2|0,G=0}function d(a,b){a.returnValue=!1,a.preventDefault(),a.stopPropagation();var c=jt.DOMKeys.codeForKeyboardEvent(a);return j.processKey(c,b),!1}function e(b,c){if(!B||(b=l(b),!m(b,c))){if(2===a.netPlayMode&&Ca.has(b))return a.showOSD(\"Function not available in NetPlay Client mode\",!0,!0);1===a.netPlayMode&&Ca.has(b)||R.push(b<<4|c),2!==a.netPlayMode&&f(b,c)}}function f(a,b){q.controlStateChanged(a,b)}function g(b,c){R.push(b+(c+10)),2!==a.netPlayMode&&h(b,c)}function h(a,b){q.controlValueChanged(a,b)}function i(){r.controlsModeStateUpdate()}var j=this;this.connect=function(a){q=a,q.connectControls(this),v.connect(a),w.connect(a)},this.connectPeripherals=function(a){r=a,v.connectScreen(a),w.connectScreen(a)},this.addKeyInputElement=function(a){a.addEventListener(\"keydown\",this.keyDown),a.addEventListener(\"keyup\",this.keyUp)},this.setupTouchControlsIfNeeded=function(a){w.setupTouchControlsIfNeeded(a)},this.powerOn=function(){k(),v.powerOn(),w.powerOn(),0===S?n(!1,!1):1===S&&n(!0,!1)},this.powerOff=function(){n(!1,!1),v.powerOff(),w.powerOff()},this.releaseControllers=function(){for(var a in t)t[a]&&(e(a,!1),t[a]=!1);L=M=P=Q=!1,y[x.JOY0_BUTTON]=y[x.JOY1_BUTTON]=!1,w.releaseControllers()},this.getTouchControls=function(){return w},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!A),o(),i()},this.setP1ControlsMode=function(a){A=a,v.setP1ControlsMode(a),w.setP1ControlsMode(a),this.releaseControllers(),p()},this.isP1ControlsMode=function(){return A},this.togglePaddleMode=function(){n(!B,!0),i()},this.isPaddleMode=function(){return B},this.setP1ControlsAndPaddleMode=function(a,b){this.setP1ControlsMode(a),n(b,!1),i()},this.toggleGamepadMode=function(){v.toggleMode(),i()},this.getGamepadModeDesc=function(){return v.getModeDesc()},this.toggleTouchControlsMode=function(){w.toggleMode(),i()},this.toggleTouchDirBig=function(){w.toggleTouchDirBig()},this.toggleTurboFireSpeed=function(){c((E+1)%11),r.showOSD(\"Turbo Fire\"+(E?\" speed: \"+this.getTurboFireSpeedDesc():\": OFF\"),!0),z.turboFireSpeed=E,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save()},this.getTurboFireSpeedDesc=function(){return E?E+\"x\":\"OFF\"},this.getControlReport=function(a){switch(a){case jt.PeripheralControls.P1_CONTROLS_TOGGLE:return{label:A?\"ON\":\"OFF\",active:A};case jt.PeripheralControls.PADDLES_TOGGLE_MODE:return{label:B?\"ON\":\"OFF\",active:B};case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:return{label:w.isDirBig()?\"ON\":\"OFF\",active:w.isDirBig()};case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:return{label:D?\"ON\":\"OFF\",active:!!D};case jt.PeripheralControls.TURBO_FIRE_TOGGLE:return{label:this.getTurboFireSpeedDesc(),active:!!E}}return{label:\"Unknown\",active:!1}},this.consolePowerAndUserPauseStateUpdate=function(a,b){w.consolePowerAndUserPauseStateUpdate(a,b)},this.keyDown=function(a){return d(a,!0)},this.keyUp=function(a){return d(a,!1)},this.controlsClockPulse=function(){if(F){if(--G===H||0===G){var a=G>0;y[x.JOY0_BUTTON]&&e(x.JOY0_BUTTON,a),y[x.JOY1_BUTTON]&&e(x.JOY1_BUTTON,a)}G<=0&&(G=F)}v.controlsClockPulse(),B&&(M?L||(J-=K,J<0&&(J=0),g(x.PADDLE0_POSITION,J)):L&&(J+=K,J>380&&(J=380),g(x.PADDLE0_POSITION,J)),Q?P||(N-=O,N<0&&(N=0),g(x.PADDLE1_POSITION,N)):P&&(N+=O,N>380&&(N=380),g(x.PADDLE1_POSITION,N)))},this.toggleHapticFeedback=function(){C?(D=!D,z.hapticFeedback=D,\nJavatari.userPreferences.setDirty()):r.showOSD(\"Haptic Feedback not available\",!0,!0)},this.hapticFeedback=function(){D&&navigator.vibrate(8)},this.hapticFeedbackOnTouch=function(a){!D||\"touchstart\"!==a.type&&\"touchend\"!==a.type&&\"touchmove\"!==a.type||navigator.vibrate(8)},this.cartridgeInserted=function(a){if(a&&!(S>=0)){var b=1===a.rom.info.p;B!==b&&n(b,!1)}},this.processKey=function(a,c){var d=u[a];if(d){if(c===y[d])return;c&&(G=H),y[d]=c}else{if(!(d=s[a]))return b.processKey(a,c);if(c===t[d])return;t[d]=c}e(d,c)},this.applyPreferences=function(){p(),c(z.turboFireSpeed),w.applyPreferences(),v.applyPreferences()},this.processControlState=e,this.processControlValue=g;var k=function(){window.onhelp=function(){return!1}},l=function(a){switch(a){case x.JOY0_BUTTON:return x.PADDLE0_BUTTON;case x.JOY1_BUTTON:return x.PADDLE1_BUTTON;default:return a}},m=function(a,b){if(b)switch(a){case x.JOY0_LEFT:return L=!0,!0;case x.JOY0_RIGHT:return M=!0,!0;case x.JOY0_UP:return K<10&&K++,r.showOSD(\"P1 Paddle speed: \"+K,!0),!0;case x.JOY0_DOWN:return K>1&&K--,r.showOSD(\"P1 Paddle speed: \"+K,!0),!0;case x.JOY1_LEFT:return P=!0,!0;case x.JOY1_RIGHT:return Q=!0,!0;case x.JOY1_UP:return O<10&&O++,r.showOSD(\"P2 Paddle speed: \"+O,!0),!0;case x.JOY1_DOWN:return O>1&&O--,r.showOSD(\"P2 Paddle speed: \"+O,!0),!0}else switch(a){case x.JOY0_LEFT:return L=!1,!0;case x.JOY0_RIGHT:return M=!1,!0;case x.JOY1_LEFT:return P=!1,!0;case x.JOY1_RIGHT:return Q=!1,!0}return!1},n=function(b,c){B!==b&&j.releaseControllers(),B=b,K=O=2,J=N=B?190:-1,2!==a.netPlayMode&&(g(x.PADDLE0_POSITION,J),g(x.PADDLE1_POSITION,N)),v.setPaddleMode(B),c&&o()},o=function(){r.showOSD(\"Controllers: \"+(B?\"Paddles\":\"Joysticks\")+(A?\", Swapped\":\"\"),!0)},p=function(){var a=jt.DOMKeys;s={},t={},u={},s[T]=x.POWER,s[T|a.ALT]=x.POWER,s[T|a.SHIFT]=x.POWER_FRY,s[T|a.SHIFT|a.ALT]=x.POWER_FRY,s[U]=x.BLACK_WHITE,s[U|a.ALT]=x.BLACK_WHITE,s[V]=x.SELECT,s[V|a.ALT]=x.SELECT,s[W]=x.RESET,s[W|a.ALT]=x.RESET,s[X]=x.DIFFICULTY0,s[X|a.ALT]=x.DIFFICULTY0,s[Y]=x.DIFFICULTY1,s[Y|a.ALT]=x.DIFFICULTY1,s[Z]=x.FAST_SPEED,s[Z|a.ALT]=x.FAST_SPEED,s[Z|a.SHIFT]=x.SLOW_SPEED,s[Z|a.SHIFT|a.ALT]=x.SLOW_SPEED,s[$|a.SHIFT|a.ALT]=x.INC_SPEED,s[_|a.SHIFT|a.ALT]=x.DEC_SPEED,s[aa|a.SHIFT|a.ALT]=x.NORMAL_SPEED,s[ba|a.SHIFT|a.ALT]=x.MIN_SPEED,s[ca|a.ALT]=x.PAUSE,s[ca|a.SHIFT|a.ALT]=x.PAUSE_AUDIO_ON,s[da|a.ALT]=x.FRAME,s[ea|a.ALT]=x.FRAME,s[ga|a.ALT]=x.TRACE,s[ha|a.ALT]=x.SHOW_INFO,s[fa|a.ALT]=x.DEBUG,s[ia|a.ALT]=x.NO_COLLISIONS,s[ja|a.ALT]=x.VIDEO_STANDARD,s[ka|a.ALT]=x.VIDEO_STANDARD,s[la|a.ALT]=x.VSYNCH,s[ma|a.CONTROL]=x.SAVE_STATE_0,s[na|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.CONTROL]=x.SAVE_STATE_8,s[va|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.CONTROL]=x.SAVE_STATE_11,s[za|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.ALT]=x.LOAD_STATE_0,s[na|a.ALT]=x.LOAD_STATE_0,s[oa|a.ALT]=x.LOAD_STATE_1,s[pa|a.ALT]=x.LOAD_STATE_2,s[qa|a.ALT]=x.LOAD_STATE_3,s[ra|a.ALT]=x.LOAD_STATE_4,s[sa|a.ALT]=x.LOAD_STATE_5,s[ta|a.ALT]=x.LOAD_STATE_6,s[ua|a.ALT]=x.LOAD_STATE_7,s[va|a.ALT]=x.LOAD_STATE_8,s[wa|a.ALT]=x.LOAD_STATE_9,s[xa|a.ALT]=x.LOAD_STATE_10,s[ya|a.ALT]=x.LOAD_STATE_11,s[za|a.ALT]=x.LOAD_STATE_11,s[Aa|a.ALT]=x.LOAD_STATE_12,s[Ba|a.ALT]=x.LOAD_STATE_12,s[ma|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL]=x.SAVE_STATE_0,s[ma|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[na|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_0,s[oa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_1,s[oa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_1,s[pa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_2,s[pa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_2,s[qa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_3,s[qa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_3,s[ra|a.SHIFT|a.CONTROL]=x.SAVE_STATE_4,s[ra|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_4,s[sa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_5,s[sa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_5,s[ta|a.SHIFT|a.CONTROL]=x.SAVE_STATE_6,s[ta|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_6,s[ua|a.SHIFT|a.CONTROL]=x.SAVE_STATE_7,s[ua|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_7,s[va|a.SHIFT|a.CONTROL]=x.SAVE_STATE_8,s[va|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_8,s[wa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_9,s[wa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_9,s[xa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_10,s[xa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_10,s[ya|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL]=x.SAVE_STATE_11,s[ya|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[za|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_11,s[Aa|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL]=x.SAVE_STATE_12,s[Aa|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[Ba|a.SHIFT|a.CONTROL|a.ALT]=x.SAVE_STATE_12,s[ma|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[na|a.SHIFT|a.ALT]=x.LOAD_STATE_0,s[oa|a.SHIFT|a.ALT]=x.LOAD_STATE_1,s[pa|a.SHIFT|a.ALT]=x.LOAD_STATE_2,s[qa|a.SHIFT|a.ALT]=x.LOAD_STATE_3,s[ra|a.SHIFT|a.ALT]=x.LOAD_STATE_4,s[sa|a.SHIFT|a.ALT]=x.LOAD_STATE_5,s[ta|a.SHIFT|a.ALT]=x.LOAD_STATE_6,s[ua|a.SHIFT|a.ALT]=x.LOAD_STATE_7,s[va|a.SHIFT|a.ALT]=x.LOAD_STATE_8,s[wa|a.SHIFT|a.ALT]=x.LOAD_STATE_9,s[xa|a.SHIFT|a.ALT]=x.LOAD_STATE_10,s[ya|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[za|a.SHIFT|a.ALT]=x.LOAD_STATE_11,s[Aa|a.SHIFT|a.ALT]=x.LOAD_STATE_12,s[Ba|a.SHIFT|a.ALT]=x.LOAD_STATE_12;var b=A?1:0,c=A?0:1;s[z.joystickKeys[b].left.c]=x.JOY0_LEFT,s[z.joystickKeys[b].up.c]=x.JOY0_UP,s[z.joystickKeys[b].right.c]=x.JOY0_RIGHT,s[z.joystickKeys[b].down.c]=x.JOY0_DOWN,s[z.joystickKeys[b].button.c]=x.JOY0_BUTTON,s[z.joystickKeys[c].left.c]=x.JOY1_LEFT,s[z.joystickKeys[c].up.c]=x.JOY1_UP,s[z.joystickKeys[c].right.c]=x.JOY1_RIGHT,s[z.joystickKeys[c].down.c]=x.JOY1_DOWN,s[z.joystickKeys[c].button.c]=x.JOY1_BUTTON,u[z.joystickKeys[b].buttonT.c]=x.JOY0_BUTTON,u[z.joystickKeys[c].buttonT.c]=x.JOY1_BUTTON};this.netGetControlsToSend=function(){return R.length?R:void 0},this.netClearControlsToSend=function(){R.length=0},this.netServerProcessControlsChanges=function(a){for(var b=0,c=a.length;b<c;++b){var d=a[b];d<16e3?(Ca.has(d>>4)||R.push(d),f(d>>4,1&d)):h(-16384&d,(16383&d)-10)}},this.netClientApplyControlsChanges=function(a){for(var b=0,c=a.length;b<c;++b){var d=a[b];d<16e3?f(d>>4,1&d):h(-16384&d,(16383&d)-10)}};var q,r,s,t,u,v,w,x=jt.ConsoleControls,y={},z=Javatari.userPreferences.current,A=!1,B=!1,C=!!navigator.vibrate,D=C&&!!z.hapticFeedback,E=0,F=0,G=0,H=0,I=[0,1,2,2.4,3,4,5,6,7.5,10,12],J=0,K=3,L=!1,M=!1,N=0,O=3,P=!1,Q=!1,R=new Array(100);R.length=0\n;var S=Javatari.PADDLES_MODE,T=jt.DOMKeys.VK_F1.c,U=jt.DOMKeys.VK_F2.c,V=jt.DOMKeys.VK_F11.c,W=jt.DOMKeys.VK_F12.c,X=jt.DOMKeys.VK_F4.c,Y=jt.DOMKeys.VK_F9.c,Z=jt.DOMKeys.VK_TAB.c,$=jt.DOMKeys.VK_UP.c,_=jt.DOMKeys.VK_DOWN.c,aa=jt.DOMKeys.VK_RIGHT.c,ba=jt.DOMKeys.VK_LEFT.c,ca=jt.DOMKeys.VK_P.c,da=jt.DOMKeys.VK_O.c,ea=jt.DOMKeys.VK_F.c,fa=jt.DOMKeys.VK_D.c,ga=jt.DOMKeys.VK_VOID,ha=jt.DOMKeys.VK_I.c,ia=jt.DOMKeys.VK_C.c,ja=jt.DOMKeys.VK_V.c,ka=jt.DOMKeys.VK_Q.c,la=jt.DOMKeys.VK_W.c,ma=jt.DOMKeys.VK_QUOTE.c,na=jt.DOMKeys.VK_BACKQUOTE.c,oa=jt.DOMKeys.VK_1.c,pa=jt.DOMKeys.VK_2.c,qa=jt.DOMKeys.VK_3.c,ra=jt.DOMKeys.VK_4.c,sa=jt.DOMKeys.VK_5.c,ta=jt.DOMKeys.VK_6.c,ua=jt.DOMKeys.VK_7.c,va=jt.DOMKeys.VK_8.c,wa=jt.DOMKeys.VK_9.c,xa=jt.DOMKeys.VK_0.c,ya=jt.DOMKeys.VK_MINUS.c,za=jt.DOMKeys.VK_FF_MINUS.c,Aa=jt.DOMKeys.VK_EQUALS.c,Ba=jt.DOMKeys.VK_FF_EQUALS.c,Ca=new Set([x.SAVE_STATE_0,x.SAVE_STATE_1,x.SAVE_STATE_2,x.SAVE_STATE_3,x.SAVE_STATE_4,x.SAVE_STATE_5,x.SAVE_STATE_6,x.SAVE_STATE_7,x.SAVE_STATE_8,x.SAVE_STATE_9,x.SAVE_STATE_10,x.SAVE_STATE_11,x.SAVE_STATE_12,x.SAVE_STATE_FILE,x.LOAD_STATE_0,x.LOAD_STATE_1,x.LOAD_STATE_2,x.LOAD_STATE_3,x.LOAD_STATE_4,x.LOAD_STATE_5,x.LOAD_STATE_6,x.LOAD_STATE_7,x.LOAD_STATE_8,x.LOAD_STATE_9,x.LOAD_STATE_10,x.LOAD_STATE_11,x.LOAD_STATE_12,x.POWER_FRY,x.VSYNCH,x.TRACE,x.CARTRIDGE_FORMAT]);!function(){v=new jt.GamepadConsoleControls(j),w=new jt.DOMTouchControls(j),j.applyPreferences()}(),jt.DOMConsoleControls.hapticFeedback=this.hapticFeedback,jt.DOMConsoleControls.hapticFeedbackOnTouch=this.hapticFeedbackOnTouch},jt.ScreenGUI=jt.Util.isMobileDevice()?{BAR_HEIGHT:29,BAR_MENU_WIDTH:150,BAR_MENU_ITEM_HEIGHT:33,BAR_MENU_ITEM_FONT_SIZE:14,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80}:{BAR_HEIGHT:29,BAR_MENU_WIDTH:140,BAR_MENU_ITEM_HEIGHT:29,BAR_MENU_ITEM_FONT_SIZE:13,LOGO_SCREEN_WIDTH:618,LOGO_SCREEN_HEIGHT:455,TOUCH_CONTROLS_LEFT_WIDTH:119,TOUCH_CONTROLS_LEFT_WIDTH_BIG:143,TOUCH_CONTROLS_RIGHT_WIDTH:80},jt.ScreenGUI.html=function(){return'<div id=\"jt-screen-fs\" tabindex=\"0\"> <div id=\"jt-screen-fs-center\" tabindex=\"-1\"> <div id=\"jt-screen-canvas-outer\"> <canvas id=\"jt-screen-canvas\" tabindex=\"-1\"></canvas> <img id=\"jt-canvas-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <div id=\"jt-unmute-message\"></div> <div id=\"jt-logo\"> <div id=\"jt-logo-center\"> <img id=\"jt-logo-loading-icon\" draggable=\"false\" src=\"'+jt.Images.urls.loading+'\"> <img id=\"jt-logo-image\" draggable=\"false\" src=\"'+jt.Images.urls.logo+'\"> <div id=\"jt-logo-message\"> <div id=\"jt-logo-message-text\"></div> <div id=\"jt-logo-message-ok\"> <div id=\"jt-logo-message-ok-text\"></div> </div> </div> </div> </div> <div id=\"jt-osd\"></div> </div> <div id=\"jt-bar\"> <div id=\"jt-bar-inner\"></div> </div> <div id=\"jt-console-panel\" class=\"jt-console-panel\" tabindex=\"-1\"> </div> </div> <div id=\"jt-screen-scroll-message\"> Swipe up/down on the Screen <br>to hide the browser bars! </div> </div>'},jt.ScreenGUI.htmlConsolePanel='<div id=\"jt-console-panel-p0-diff-label\" class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-p1-diff-label\" class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power-labels\" class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-reset-labels\" class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power\" class=\"jt-console-panel-power jt-console-panel-lever\"></div> <div id=\"jt-console-panel-color\" class=\"jt-console-panel-color jt-console-panel-lever\"></div> <div id=\"jt-console-panel-select\" class=\"jt-console-panel-select jt-console-panel-lever\"></div> <div id=\"jt-console-panel-reset\" class=\"jt-console-panel-reset jt-console-panel-lever\"></div> <div id=\"jt-console-panel-p0-diff\" class=\"jt-console-panel-p0-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-p1-diff\" class=\"jt-console-panel-p1-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-cart-image\" class=\"jt-console-panel-cart-image\"></div> <div id=\"jt-console-panel-cart-load\" class=\"jt-console-panel-cart-load\"></div> <div id=\"jt-console-panel-cart-file\" class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-url\" class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-label\" class=\"jt-console-panel-cart-label\"></div>',jt.ScreenGUI.css=function(){\nreturn\"html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: \"+Math.max(1280,1.4*Math.max(screen.width,screen.height)|0)+\"px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #\"+Javatari.SCREEN_ELEMENT_ID+\" { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646;    /* one behind fsElement */ } html.jt-started #\"+Javatari.SCREEN_ELEMENT_ID+\" { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center {      /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: \"+this.BAR_HEIGHT+'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible;                    /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url(\"'+jt.Images.urls.iconSprites+'\"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { .jt-bar-button { image-rendering: optimizequality; } } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 3px 0 6px; } #jt-bar-netplay.jt-hidden { display: none; } #jt-bar-select { margin: 0 2px 0 9px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: '+this.BAR_HEIGHT+\"px; font-size: \"+this.BAR_MENU_ITEM_FONT_SIZE+\"px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: \"+this.BAR_MENU_WIDTH+\"px; height: \"+this.BAR_MENU_ITEM_HEIGHT+\"px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: \"+this.BAR_MENU_ITEM_HEIGHT+'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: \"\"; position: absolute; width: 6px; height: 19px; top: '+((this.BAR_MENU_ITEM_HEIGHT-21)/2|0)+\"px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -\"+(jt.ConsolePanel.DEFAULT_HEIGHT+2)+\"px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: \"+(jt.ScreenGUI.BAR_HEIGHT+2)+'px; border: none; transform-origin: center bottom; } .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } .jt-select-dialog.jt-show { display: block; } .jt-select-dialog > .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .jt-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .jt-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px;       /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .jt-select-dialog > ul li.jt-visible { display: block; } .jt-select-dialog > ul li.jt-selected { color: white; background: hsl(358, 67%, 46%); } .jt-select-dialog > ul li.jt-droptarget { color: white; border-color: lightgray; } .jt-select-dialog > ul li.jt-toggle::after { content: \"\"; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .jt-select-dialog > ul li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-cartridge-format.jt-select-dialog > ul { width: 100%; height: 226px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #jt-cartridge-format.jt-select-dialog > ul li { width: 280px; margin: 7px 0 2px 0; } #jt-cartridge-format.jt-select-dialog > ul li:first-child { margin-top: 0; } #jt-cartridge-format ::-webkit-scrollbar { width: 12px; } #jt-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #jt-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #jt-cartridge-format ul.jt-quick-options-list { width: 230px; margin: 18px 0 0 52px; } #jt-cartridge-format ul.jt-quick-options-list li div { height: 24px; line-height: 24px; } #jt-cartridge-format .jt-control { width: 60px; line-height: 24px; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #jt-cartridge-format.jt-select-dialog > ul { width: 304px; } } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-unmute-message::before { content: \"\"; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url(\"'+jt.Images.urls.muteIcon+'\"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #jt-unmute-message::after { content: \"Audio is muted. Click to unmute\"; } #jt-unmute-message.jt-show { display: inline-block; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up    { border-bottom-color: inherit; } .jt-arrow-down  { border-top-color: inherit; } .jt-arrow-left  { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 345px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: \"Quick Options\"; display: block; } #jt-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-netplay.jt-show { display: block; } #jt-netplay::before { content: \"Net Play!\"; display: block; } #jt-netplay-status-box { position: relative; margin-top: 17px; } #jt-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #jt-netplay-status-box.jt-active #jt-netplay-status { padding: 0 16px 0 12px; } #jt-netplay-status-box.jt-active #jt-netplay-status::after { content: \"\"; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(248, 33, 28); } #jt-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #jt-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #jt-netplay-status-box.jt-active #jt-netplay-link { display: block; } .jt-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #jt-netplay-session-box { margin-top: 18px; } #jt-netplay-session-label, #jt-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #jt-netplay-session-label::before { content: \"Session Name\"; } #jt-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #jt-netplay-nick-label { margin-top: 10px; } #jt-netplay-nick-label::before { content: \"User Nickname\"; } .jt-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #jt-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #jt-netplay-session-box.jt-disabled div { color: rgb(130, 130, 130); } input#jt-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: \"\"; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: \"\"; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: \"\"; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow:  inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: \"\"; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button  { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: \"\"; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused  #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:'+jt.ConsolePanel.DEFAULT_WIDTH+\"px; height:\"+jt.ConsolePanel.DEFAULT_HEIGHT+'px; background: black url(\"'+jt.Images.urls.panel+'\") no-repeat; background-size: 460px 134px; box-shadow: '+jt.ConsolePanel.sameBoxShadowAsScreen()+'; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url(\"'+jt.Images.urls.iconSprites+'\") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: \"\"; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: \"\"; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url(\"'+jt.Images.urls.panelSprites+'\") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) {    /* Landscape */ #jt-touch-left { left: calc(-6px - '+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { left: calc(-6px - \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH+\"px; right: \"+this.TOUCH_CONTROLS_RIGHT_WIDTH+\"px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: \"+this.TOUCH_CONTROLS_LEFT_WIDTH_BIG+\"px; } } @media only screen and (orientation: portrait) {    /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: \"+(this.BAR_HEIGHT+12)+\"px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) {    /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) {    /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } \"\n},jt.Monitor=function(a){\"use strict\";function b(a){var b=a<.5?.5:a>2.5?2.5:a;return Math.round(10*b)/10}function c(a){var b=a<.5?.5:a;return Math.round(10*b)/10}var d=this;this.connect=function(a){r=a,r.connectMonitor(this)},this.nextLine=function(a,b){var c=!1;return H<t?H>=A&&H<A+x&&q.set(a,(H-A)*s):c=f(),H++,E||K++,b&&(E||g(),c|=e()),c};var e=function(){return!(H<u)&&(M&&a.showOSD(G.name+\"  \"+H+\" lines\",!0),H=0,I++,!0)},f=function(){return H>v&&e()};this.setVideoStandard=function(a){G=a,s=a.totalWidth,t=a.totalHeight,u=t-Q,v=t+Q+R,J&&(y=G.defaultHeightPct,B=G.defaultOriginYPct),j(w,y),i(z,B)};var g=function(){var a=K;K=0,(a>=250&&a<=281||a>=300&&a<=325)&&++F>=5&&h(a)},h=function(a){E=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=L,c=a-E.totalHeight;(c=c>2?(c>6?6:c)-2:0)!=b&&(L=c,d.setVideoStandard(E))};this.videoSignalOff=function(){H=0,a.videoSignalOff()};var i=function(a,b){z=a,z<0?z=0:z>s-w&&(z=s-w),B=b,B<0?B=0:B/100*t>t-x&&(B=(t-x)/t*100),(A=B/100*t+L/2|0)+x>t&&(A=t-x)},j=function(a,b){w=a,w<10?w=10:w>s&&(w=s),y=b,y<10?y=10:y>100&&(y=100),x=y/100*(t+L)|0,x>t&&(x=t),n.width=w,n.height=x,i(z,B),k()},k=function(){a&&a.displayMetrics(w,x)},l=function(){J=!0,z=P,B=G.defaultOriginYPct,j(N,G.defaultHeightPct)},m=function(){n=document.createElement(\"canvas\"),n.width=N,n.height=O,o=n.getContext(\"2d\",{alpha:!1,antialias:!1}),o.globalCompositeOperation=\"copy\",o.globalAlpha=1,p=o.createImageData(jt.VideoStandard.PAL.totalWidth,jt.VideoStandard.PAL.totalHeight),q=new Uint32Array(p.data.buffer)};this.currentLine=function(){return H},this.refresh=function(){o.putImageData(p,-z,0,z,0,w,x),a.refresh(n,w,x)},this.videoStandardDetectionStart=function(){E=null,F=0,K=0},this.getVideoStandardDetected=function(){return E},this.toggleShowInfo=function(){(M=!M)||a.showOSD(null,!0)},this.signalOff=function(){a.videoSignalOff()},this.showOSD=function(b,c,d){a.showOSD(b,c,d)},this.setDefaults=function(){l(),a.crtModeSetDefault(),a.crtFilterSetDefault(),a.requestReadjust(!0)},this.setDebugMode=function(b){a.setDebugMode(b)},this.crtModeToggle=function(){a.crtModeToggle()},this.crtFilterToggle=function(){a.crtFilterToggle()},this.fullscreenToggle=function(){a.displayToggleFullscreen()},this.displayAspectDecrease=function(){this.displayScale(b(C-S),D),this.showOSD(\"Display Aspect: \"+C.toFixed(2)+\"x\",!0)},this.displayAspectIncrease=function(){this.displayScale(b(C+S),D),this.showOSD(\"Display Aspect: \"+C.toFixed(2)+\"x\",!0)},this.displayScaleDecrease=function(){this.displayScale(C,c(D-S)),this.showOSD(\"Display Size: \"+D.toFixed(2)+\"x\",!0)},this.displayScaleIncrease=function(){this.displayScale(C,c(D+S)),this.showOSD(\"Display Size: \"+D.toFixed(2)+\"x\",!0)},this.viewportOriginDecrease=function(){J=!1,i(z,B+T),this.showOSD(\"Viewport Origin: \"+A,!0)},this.viewportOriginIncrease=function(){J=!1,i(z,B-T),this.showOSD(\"Viewport Origin: \"+A,!0)},this.viewportSizeDecrease=function(){l(),this.showOSD(\"Viewport Size: Standard\",!0)},this.viewportSizeIncrease=function(){J=!1,j(s,100),this.showOSD(\"Viewport Size: Full Signal\",!0)},this.displayScale=function(b,c){C=b,D=c,a.displayScale(C,D)},this.controlStateChanged=function(b,c){a.controlStateChanged(b,c)},this.controlsStatesRedefined=function(){a.controlsStatesRedefined()},this.consolePowerAndUserPauseStateUpdate=function(b,c){a.consolePowerAndUserPauseStateUpdate(b,c)},this.cartridgeInserted=function(b){a.cartridgeInserted(b)};var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G=jt.VideoStandard.NTSC,H=0,I=0,J=!0,K=0,L=0,M=!1,N=160,O=213,P=68,Q=16,R=5,S=.1,T=.4;!function(){m(),l(),d.setVideoStandard(G)}()},jt.ConsolePanel=function(a,b){\"use strict\";function c(){k(),l(),q()}function d(b){jt.Util.blockEvent(b),J||(s.hapticFeedbackOnTouch(b),a.closeAllOverlays(),b.target.jtPressed=!0,s.processControlState(b.target.jtControl,!0))}function e(a){jt.Util.blockEvent(a),a.target.jtPressed=!1,J||(s.hapticFeedbackOnTouch(a),s.processControlState(a.target.jtControl,!1))}function f(a){a.target.jtPressed&&e(a)}function g(b,c,d){d||s.hapticFeedbackOnTouch(b),c||(a.closeAllOverlays(),t.controlActivated(b.target.jtControl))}this.connectPeripherals=function(a,c,d){s=c,t=d,a.registerForDnD(b)},this.connect=function(a){u=a},this.setActive=function(a){H=a,H&&(w||c(),i(),j()),document.documentElement.classList.toggle(\"jt-console-panel-active\",H)},this.setLogoMessageActive=function(a){J=a},this.updateScale=function(a,c,d){var e=0,f=0;if(H){a=c?d?.85*a:a-36:.85*a;var g=Math.min(1,a/jt.ConsolePanel.DEFAULT_WIDTH);b.style.transform=g<1?\"translateX(-50%) scale(\"+g.toFixed(8)+\")\":\"translateX(-50%)\",e=Math.ceil(g*jt.ConsolePanel.DEFAULT_HEIGHT),f=Math.ceil(g*jt.ConsolePanel.DEFAULT_WIDTH)}return s&&s.getTouchControls().updateConsolePanelSize(a,f,e,c,d),e};var h=function(){o(w,!I[r.POWER]),o(x,I[r.BLACK_WHITE]),o(y,I[r.SELECT]),o(z,I[r.RESET]),o(A,I[r.DIFFICULTY0]),o(B,I[r.DIFFICULTY1]),i()},i=function(){if(o(C,v),o(G,v),G.innerHTML=v&&v.rom.info.l||L,v&&v.rom.info.lc){var a=v.rom.info.lc.trim().split(/\\s+/);G.style.color=a[0]||M,G.style.background=a[1]||N,G.style.borderColor=a[2]||O}else G.style.color=M,G.style.background=N,G.style.borderColor=O},j=function(){u.controlsStateReport(I),h()},k=function(){b.innerHTML=jt.ScreenGUI.htmlConsolePanel,delete jt.ScreenGUI.htmlConsolePanel,jt.Util.isMobileDevice()&&b.classList.add(\"jt-hide-labels\")},l=function(){w=document.getElementById(\"jt-console-panel-power\"),m(w,r.POWER,!0),x=document.getElementById(\"jt-console-panel-color\"),m(x,r.BLACK_WHITE,!0),y=document.getElementById(\"jt-console-panel-select\"),m(y,r.SELECT,!0),z=document.getElementById(\"jt-console-panel-reset\"),m(z,r.RESET,!0),A=document.getElementById(\"jt-console-panel-p0-diff\"),m(A,r.DIFFICULTY0,!0),B=document.getElementById(\"jt-console-panel-p1-diff\"),m(B,r.DIFFICULTY1,!0),C=document.getElementById(\"jt-console-panel-cart-image\"),D=document.getElementById(\"jt-console-panel-cart-load\"),n(D,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),E=document.getElementById(\"jt-console-panel-cart-file\"),F=document.getElementById(\"jt-console-panel-cart-url\"),Javatari.CARTRIDGE_CHANGE_DISABLED?(p(E),p(F)):(n(E,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT),n(F,jt.PeripheralControls.AUTO_LOAD_URL))},m=function(a,b,c){a.jtControl=b,c?(a.jtPressed=!1,jt.Util.addEventsListener(a,\"mousedown touchstart\",d),jt.Util.addEventsListener(a,\"mouseup touchend touchcancel\",e),jt.Util.addEventsListener(a,\"mouseleave\",f)):jt.Util.onTapOrMouseDown(a,d)},n=function(a,b){a.jtControl=b,a.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(a,g)},o=function(a,b){a.style.opacity=b?1:0},p=function(a,b){a.style.display=\"none\"},q=function(){var a=(Javatari.CARTRIDGE_LABEL_COLORS||\"\").trim().split(/\\s+/);a[0]&&(M=a[0]),a[1]&&(N=a[1]),a[2]&&(O=a[2]),G=document.getElementById(\"jt-console-panel-cart-label\"),n(G,jt.PeripheralControls.CARTRIDGE_LOAD_RECENT)},r=jt.ConsoleControls;this.controlStateChanged=function(a,b){H&&K[a]&&j()},this.controlsStatesRedefined=function(){H&&j()},this.cartridgeInserted=function(a){v=a,H&&i()};var s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H=!1,I={},J=!1,K={};K[r.POWER]=1,K[r.BLACK_WHITE]=1,K[r.SELECT]=1,K[r.RESET]=1,K[r.DIFFICULTY0]=1,K[r.DIFFICULTY1]=1;var L=\"JAVATARI\",M=\"#fa2525\",N=\"#101010\",O=\"transparent\"},jt.ConsolePanel.DEFAULT_WIDTH=460,jt.ConsolePanel.DEFAULT_HEIGHT=134,jt.ConsolePanel.shouldStartActive=function(){return!Javatari.SCREEN_CONSOLE_PANEL_DISABLED&&(-1===Javatari.CONSOLE_PANEL_ELEMENT_ID||document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID))},jt.ConsolePanel.sameBoxShadowAsScreen=function(){var a=document.getElementById(Javatari.SCREEN_ELEMENT_ID);return a?window.getComputedStyle(a,null).getPropertyValue(\"box-shadow\"):\"none\"},jt.CanvasDisplay=function(room,mainElement){\"use strict\";function init(){jt.Util.insertCSS(jt.ScreenGUI.css()),delete jt.ScreenGUI.css,setupMain(),setupBar(),setupFullscreen(),consolePanel=new jt.ConsolePanel(self,consolePanelElement),\nmonitor=new jt.Monitor(self)}function consolePanelUpdateForOrientation(){setConsolePanelActive(isFullscreen&&isLandscape?consolePanelActiveLandscape:consolePanelActivePortrait)}function setConsolePanelActive(a){consolePanelActive!==a&&(consolePanelActive=a,consolePanel.setActive(consolePanelActive),updateScale(),consolePanelActive?showBar():cursorHideFrameCountdown=CURSOR_HIDE_FRAMES)}function hideOSD(){osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,osdShowing=!1}function releaseControllersOnLostFocus(){consoleControlsSocket.releaseControllers()}function hideCursorAndBar(){hideCursor(),hideBar(),cursorHideFrameCountdown=-1}function showCursorAndBar(a){showCursor(),!a&&mousePointerLocked||showBar(),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES}function showCursor(){cursorShowing||(fsElement.style.cursor=cursorType,cursorShowing=!0)}function hideCursor(){cursorShowing&&(fsElement.style.cursor=\"none\",cursorShowing=!1)}function fullscreenByAPIChanged(){var a=isFullscreen,b=isFullScreenByAPI();b||fullScreenAPIExitUserRequested||!isBrowserStandalone?setFullscreenState(b):self.requestReadjust(),a&&!b&&!fullScreenAPIExitUserRequested&&isMobileDevice&&(isBrowserStandalone?setEnterFullscreenByAPIOnFirstTouch():(atariConsole.systemPause(!0),showLogoMessage(\"<br>Emulation suspended\",\"RESUME\",!0,function(){self.setFullscreen(!0),atariConsole.systemPause(!1)}))),fullScreenAPIExitUserRequested=!1}function isFullScreenByAPI(){return!!document[fullScreenAPIQueryProp]}function enterFullScreenByAPI(){if(fullscreenAPIEnterMethod)try{fullscreenAPIEnterMethod.call(fsElement)}catch(a){}}function exitFullScreenByAPI(){if(fullScreenAPIExitMethod)try{fullScreenAPIExitUserRequested=!0,fullScreenAPIExitMethod.call(document)}catch(a){}}function updateScale(){var a=Math.round(targetWidth*scaleY*aspectX*2),b=Math.round(targetHeight*scaleY);canvas.style.width=a+\"px\",canvas.style.height=b+\"px\",updateBarWidth(a),signalIsOn||updateLogoScale(),settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),updateConsolePanelScale(a)}function updateBarWidth(a){var b=buttonsBarDesiredWidth>0?buttonsBarDesiredWidth:a;buttonsBar.style.width=-1===buttonsBarDesiredWidth?\"100%\":b+\"px\",buttonsBar.classList.toggle(\"jt-narrow\",b<NARROW_WIDTH)}function updateConsolePanelScale(a){var b=consolePanel.updateScale(a,isFullscreen,isLandscape);mainElement.style.marginBottom=!isFullscreen&&b>0?Math.ceil(b+3)+\"px\":\"initial\"}function updateCanvasContentSize(){var a=crtFilterEffective>0?CANVAS_SIZE_FACTOR:1;canvas.width=targetWidth*a,canvas.height=targetHeight*a,canvasContext=null}function setCRTFilter(a){crtFilter=a,crtFilterEffective=-2===crtFilter?null:-1===crtFilter?crtFilterAutoValue():a,updateCanvasContentSize()}function crtFilterAutoValue(){return isMobileDevice&&!isIOSDevice&&\"FIREFOX\"===browserName?0:1}function setCRTMode(a){crtMode=a,crtModeEffective=-1===crtMode?crtModeAutoValue():crtMode,canvasContext=null}function crtModeAutoValue(){return isMobileDevice?0:1}function updateLogo(){signalIsOn||(updateLogoScale(),showCursorAndBar(!0),canvasContext&&canvasContext.clearRect(0,0,canvas.width,canvas.height)),logo.classList.toggle(\"jt-show\",!signalIsOn)}function updateLoading(){var a=isLoading?\"block\":\"none\";logoLoadingIcon.style.display=a,canvasLoadingIcon.style.display=a}function createCanvasContext(){canvasContext=canvas.getContext(\"2d\",{alpha:!1,antialias:!1}),setImageComposition(),setImageSmoothing()}function setImageComposition(){crtModeEffective>0&&!debugMode?(canvasContext.globalCompositeOperation=\"source-over\",canvasContext.globalAlpha=.8):(canvasContext.globalCompositeOperation=\"copy\",canvasContext.globalAlpha=1)}function setImageSmoothing(){if(canvas.style.imageRendering=0===crtFilterEffective||2===crtFilterEffective?canvasImageRenderingValue:\"initial\",null!==crtFilterEffective){var a=crtFilterEffective>=2;void 0!==canvasContext.imageSmoothingEnabled?canvasContext.imageSmoothingEnabled=a:(canvasContext.webkitImageSmoothingEnabled=a,canvasContext.mozImageSmoothingEnabled=a,canvasContext.msImageSmoothingEnabled=a)}}function suppressContextMenu(a){a.addEventListener(\"contextmenu\",jt.Util.blockEvent)}function preventDrag(a){a.ondragstart=jt.Util.blockEvent}function setupMain(){switch(mainElement.innerHTML=jt.ScreenGUI.html(),mainElement.tabIndex=-1,delete jt.ScreenGUI.html,fsElement=document.getElementById(\"jt-screen-fs\"),fsElementCenter=document.getElementById(\"jt-screen-fs-center\"),canvasOuter=document.getElementById(\"jt-screen-canvas-outer\"),canvas=document.getElementById(\"jt-screen-canvas\"),canvasLoadingIcon=document.getElementById(\"jt-canvas-loading-icon\"),osd=document.getElementById(\"jt-osd\"),logo=document.getElementById(\"jt-logo\"),logoCenter=document.getElementById(\"jt-logo-center\"),logoImage=document.getElementById(\"jt-logo-image\"),logoLoadingIcon=document.getElementById(\"jt-logo-loading-icon\"),logoMessage=document.getElementById(\"jt-logo-message\"),logoMessageText=document.getElementById(\"jt-logo-message-text\"),logoMessageOK=document.getElementById(\"jt-logo-message-ok\"),logoMessageOKText=document.getElementById(\"jt-logo-message-ok-text\"),scrollMessage=document.getElementById(\"jt-screen-scroll-message\"),unmuteMessage=document.getElementById(\"jt-unmute-message\"),consolePanelElement=document.getElementById(\"jt-console-panel\"),suppressContextMenu(mainElement),preventDrag(logoImage),preventDrag(logoLoadingIcon),preventDrag(canvasLoadingIcon),updateCanvasContentSize(),browserName){case\"CHROME\":case\"EDGE\":case\"OPERA\":canvasImageRenderingValue=\"pixelated\";break;case\"FIREFOX\":canvasImageRenderingValue=\"-moz-crisp-edges\";break;case\"SAFARI\":canvasImageRenderingValue=\"-webkit-optimize-contrast\";break;default:canvasImageRenderingValue=\"pixelated\"}setupMainEvents()}function setupMainEvents(){(isMobileDevice?canvasOuter:fsElement).addEventListener(\"mousemove\",function(){showCursorAndBar()}),\"onblur\"in document?fsElement.addEventListener(\"blur\",releaseControllersOnLostFocus,!0):fsElement.addEventListener(\"focusout\",releaseControllersOnLostFocus,!0),window.addEventListener(\"orientationchange\",function(){closeAllOverlays(),signalIsOn?hideCursorAndBar():showCursorAndBar(),self.requestReadjust()}),mainElement.addEventListener(\"drop\",closeAllOverlays,!0),logoMessageOK.jtNeedsUIG=logoMessageOKText.jtNeedsUIG=!0,jt.Util.onTapOrMouseDownWithBlockUIG(logoMessageOK,self.closeLogoMessage),jt.Util.addEventsListener(fsElementCenter,\"touchstart touchend mousedown\",function(a){\"touchend\"!==a.type?(closeAllOverlays(),showCursorAndBar()):a.cancelable&&a.preventDefault()})}function setupBar(){buttonsBar=document.getElementById(\"jt-bar\"),buttonsBarInner=document.getElementById(\"jt-bar-inner\"),BAR_AUTO_HIDE&&(document.documentElement.classList.add(\"jt-bar-auto-hide\"),fsElement.addEventListener(\"mouseleave\",hideBar),hideBar());var a=[{label:\"Power\",clickModif:0,control:jt.PeripheralControls.CONSOLE_POWER_TOGGLE},{label:\"Fry Console\",control:jt.PeripheralControls.CONSOLE_POWER_FRY},{label:\"\",divider:!0},{label:\"Net Play!\",control:jt.PeripheralControls.SCREEN_OPEN_NETPLAY},{label:\"\",divider:!0},{label:\"Select Cartridge\",control:jt.PeripheralControls.CARTRIDGE_LOAD_RECENT},{label:\"Set ROM Format\",clickModif:KEY_SHIFT_MASK,control:jt.PeripheralControls.CARTRIDGE_CHOOSE_FORMAT},{label:\"\",divider:!0},{label:\"Open File\",clickModif:KEY_CTRL_MASK,control:jt.PeripheralControls.AUTO_LOAD_FILE,needsUIG:!0},{label:\"Open URL\",clickModif:KEY_CTRL_MASK|KEY_ALT_MASK,control:jt.PeripheralControls.AUTO_LOAD_URL,needsUIG:!0},{label:\"\",divider:!0},{label:\"Load State\",control:jt.PeripheralControls.CONSOLE_LOAD_STATE_MENU},{label:\"Save State\",control:jt.PeripheralControls.CONSOLE_SAVE_STATE_MENU}];powerButton=addBarButton(\"jt-bar-power\",-5,-26,\"System Power\",null,!1,a,\"System\"),barMenuSystem=a,self.consolePowerAndUserPauseStateUpdate(!1,!1),\nnetplayButton=addBarButton(\"jt-bar-netplay\",-192,-1,\"NetPlay!\",jt.PeripheralControls.SCREEN_OPEN_NETPLAY),netplayButton.classList.add(\"jt-hidden\"),isMobileDevice?settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Quick Options\",jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS,!1):(a=[{label:\"Help & Settings\",clickModif:0,control:jt.PeripheralControls.SCREEN_OPEN_SETTINGS},{label:\"Quick Options\",control:jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS},{label:\"Defaults\",control:jt.PeripheralControls.SCREEN_DEFAULTS}],settingsButton=addBarButton(\"jt-bar-settings\",-33,-26,\"Settings\",null,!1,a,\"Settings\")),gameSelectButton=addBarButton(\"jt-bar-select\",-78,-51,\"Game Select\",jt.ConsoleControls.SELECT,!0),gameResetButton=addBarButton(\"jt-bar-reset\",-33,-51,\"Game Reset\",jt.ConsoleControls.RESET,!0),-2!==FULLSCREEN_MODE&&(fullscreenButton=addBarButton(\"jt-bar-full-screen\",-103,-1,\"Full Screen\",jt.PeripheralControls.SCREEN_FULLSCREEN,!1),fullscreenButton.jtNeedsUIG=!0,isMobileDevice&&fullscreenButton.classList.add(\"jt-mobile\")),Javatari.SCREEN_RESIZE_DISABLED||isMobileDevice||(scaleUpButton=addBarButton(\"jt-bar-scale-plus\",-80,-1,\"Increase Screen\",jt.PeripheralControls.SCREEN_SCALE_PLUS,!1),scaleUpButton.classList.add(\"jt-full-screen-hidden\"),scaleDownButton=addBarButton(\"jt-bar-scale-minus\",-58,-1,\"Decrease Screen\",jt.PeripheralControls.SCREEN_SCALE_MINUS,!1),scaleDownButton.classList.add(\"jt-full-screen-hidden\")),addBarButton(\"jt-bar-console-panel\",-61,-25,\"Toggle Console Panel\",jt.PeripheralControls.SCREEN_CONSOLE_PANEL_TOGGLE,!1).classList.add(\"jt-full-screen-only\"),logoButton=addBarButton(\"jt-bar-logo\",-99,-26,\"About Javatari\",jt.PeripheralControls.SCREEN_OPEN_ABOUT,!1),logoButton.classList.add(\"jt-full-screen-hidden\"),jt.Util.onTapOrMouseDownWithBlockUIG(buttonsBar,barElementTapOrMouseDown),jt.Util.addEventsListener(buttonsBar,\"touchmove\",barElementTouchMove),jt.Util.addEventsListener(buttonsBar,\"mouseup touchend\",barElementTouchEndOrMouseUp)}function addBarButton(a,b,c,d,e,f,g,h){var i=document.createElement(\"div\");return i.id=a,i.classList.add(\"jt-bar-button\"),i.jtBarElementType=1,i.jtControl=e,i.jtIsConsoleControl=f,i.style.backgroundPosition=b+\"px \"+c+\"px\",i.jtBX=b,g&&(i.jtMenu=g,g.jtTitle=h,g.jtRefElement=i,g.jtMenuIndex=barMenus.length,barMenus.push(g)),d&&(i.title=d),i.addEventListener(\"mouseenter\",function(a){barButtonHoverOver(a.target,a)}),f&&i.addEventListener(\"mouseleave\",barButtonMouseLeft),buttonsBarInner.appendChild(i),i}function barButtonTapOrMousedown(a,b,c,d){if(d||consoleControls.hapticFeedbackOnTouch(b),!logoMessageActive&&!c){var e=barMenuActive;if(closeAllOverlays(),a.jtControl)return void(b.button||(a.jtIsConsoleControl?(barConsoleControlPressed=a.jtControl,consoleControls.processControlState(barConsoleControlPressed,!0)):peripheralControls.controlActivated(a.jtControl)));var f=a.jtMenu;if(f){var g=0|(b.altKey&&KEY_ALT_MASK)|(b.ctrlKey&&KEY_CTRL_MASK)|(b.shiftKey&&KEY_SHIFT_MASK);if(0===g&&!b.button)return void(e!==f&&(showBarMenu(f),\"touchstart\"===b.type&&barButtonLongTouchStart(b)));for(var h=0;h<f.length;++h)if(f[h].clickModif===g)return void peripheralControls.controlActivated(f[h].control,1===b.button,f[h].secSlot);if(g&KEY_SHIFT_MASK)for(g&=~KEY_SHIFT_MASK,h=0;h<f.length;++h)if(f[h].clickModif===g)return void peripheralControls.controlActivated(f[h].control,1===b.button,!0)}}}function barButtonLongTouchStart(a){barButtonLongTouchTarget=a.target,barButtonLongTouchSelectTimeout=window.setTimeout(function(){if(barMenuActive)for(var a=barMenu.jtItems,b=0;b<a.length;++b){var c=a[b].jtMenuOption;if(c&&0===c.clickModif)return void barMenuItemSetActive(a[b],!0)}},450)}function barButtonLongTouchCancel(){barButtonLongTouchSelectTimeout&&(clearTimeout(barButtonLongTouchSelectTimeout),barButtonLongTouchSelectTimeout=null)}function barButtonHoverOver(a,b){barMenuActive&&a.jtMenu&&barMenuActive!==a.jtMenu&&(consoleControls.hapticFeedbackOnTouch(b),showBarMenu(a.jtMenu))}function barButtonMouseLeft(){barConsoleControlPressed&&(cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,consoleControls.processControlState(barConsoleControlPressed,!1),barConsoleControlPressed=null)}function barButtonTouchEndOrMouseUp(a){if(!logoMessageActive)return barConsoleControlPressed?(consoleControls.hapticFeedbackOnTouch(a),consoleControls.processControlState(barConsoleControlPressed,!1),void(barConsoleControlPressed=null)):void(!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey))}function barMenuItemTapOrMouseDown(a,b,c){c||barMenuItemSetActive(a,\"touchstart\"===b.type)}function barMenuItemHoverOver(a,b){barMenuItemSetActive(a,\"touchmove\"===b.type)}function barMenuItemHoverOut(){barMenuItemSetActive(null)}function barMenuItemTouchEndOrMouseUp(a){logoMessageActive||!barMenuItemActive||a.button>1||barMenuItemFireActive(a.shiftKey,1===a.button||a.ctrlKey)}function barMenuItemFireActive(a,b){var c=barMenuItemActive.jtMenuOption;barMenuItemSetActive(null),c&&!c.disabled&&(c.extension?extensionsSocket.toggleExtension(c.extension,b,a):c.control&&(a|=c.secSlot,closeAllOverlays(),peripheralControls.controlActivated(c.control,b,a)))}function barMenuItemSetActive(a,b){a!==barMenuItemActive&&(barMenuItemActive&&barMenuItemActive.classList.remove(\"jt-hover\"),a&&a.jtMenuOption?(barMenuItemActive=a,b&&consoleControls.hapticFeedback(),barMenuItemActive.classList.add(\"jt-hover\")):barMenuItemActive=null)}function barElementTapOrMouseDown(a,b,c){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES;var d=a.target;1===d.jtBarElementType?barButtonTapOrMousedown(d,a,b,c):2===d.jtBarElementType?barMenuItemTapOrMouseDown(d,a,c):hideBarMenu()}function barElementTouchMove(a){jt.Util.blockEvent(a);var b=a.changedTouches[0],c=b&&document.elementFromPoint(b.clientX,b.clientY);barButtonLongTouchTarget&&c!==barButtonLongTouchTarget&&barButtonLongTouchCancel(),2!==c.jtBarElementType&&c!==barButtonLongTouchTarget&&barMenuItemSetActive(null),1===c.jtBarElementType?barButtonHoverOver(c,a):2===c.jtBarElementType&&barMenuItemHoverOver(c,a)}function barElementTouchEndOrMouseUp(a){cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,jt.Util.blockEvent(a),barButtonLongTouchCancel();var b=a.target;1===b.jtBarElementType?barButtonTouchEndOrMouseUp(a):2===b.jtBarElementType&&barMenuItemTouchEndOrMouseUp(a)}function setupFullscreen(){fullscreenAPIEnterMethod=fsElement.requestFullscreen||fsElement.webkitRequestFullscreen||fsElement.webkitRequestFullScreen||fsElement.mozRequestFullScreen,fullScreenAPIExitMethod=document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen,\"fullscreenElement\"in document?fullScreenAPIQueryProp=\"fullscreenElement\":\"webkitFullscreenElement\"in document?fullScreenAPIQueryProp=\"webkitFullscreenElement\":\"mozFullScreenElement\"in document&&(fullScreenAPIQueryProp=\"mozFullScreenElement\"),fullscreenAPIEnterMethod||!isMobileDevice||isBrowserStandalone||(fullScreenScrollHack=!0),\"onfullscreenchange\"in document?document.addEventListener(\"fullscreenchange\",fullscreenByAPIChanged):\"onwebkitfullscreenchange\"in document?document.addEventListener(\"webkitfullscreenchange\",fullscreenByAPIChanged):\"onmozfullscreenchange\"in document&&document.addEventListener(\"mozfullscreenchange\",fullscreenByAPIChanged),fullscreenAPIEnterMethod||(scrollMessage.jtScroll=canvas.jtScroll=logo.jtScroll=logoCenter.jtScroll=logoImage.jtScroll=logoMessage.jtScroll=logoMessageText.jtScroll=logoMessageOK.jtScroll=logoMessageOKText.jtScroll=!0,fsElement.addEventListener(\"touchmove\",function(a){if(isFullscreen){if(!fullScreenScrollHack||!a.target.jtScroll)return jt.Util.blockEvent(a);scrollMessageActive&&setScrollMessage(!1)}}))}function setEnterFullscreenByAPIOnFirstTouch(){if(fullscreenAPIEnterMethod){var a=!1,b=function(){a||(a=!0,jt.Util.removeEventsListener(fsElement,\"touchend mousedown\",b,!0),enterFullScreenByAPI())};jt.Util.addEventsListener(fsElement,\"touchend mousedown\",b,!0)}\n}function setFullscreenState(a){isFullscreen=a,a?(setViewport(),document.documentElement.classList.add(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.add(\"jt-full-screen-scroll-hack\"),consoleControls.setupTouchControlsIfNeeded(fsElementCenter),fullScreenScrollHack&&setScrollMessage(!0),fullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()):(restoreViewport(),document.documentElement.classList.remove(\"jt-full-screen\"),fullScreenScrollHack&&document.documentElement.classList.remove(\"jt-full-screen-scroll-hack\"),fullscreenAPIEnterMethod||tryToFixSafariBugOnFullScreenChange()),closeAllOverlays(),self.requestReadjust()}function tryToFixSafariBugOnFullScreenChange(){var a=document.getElementById(\"jt-dummy-element\");a?mainElement.removeChild(a):(a=document.createElement(\"div\"),a.id=\"jt-dummy-element\",mainElement.appendChild(a))}function showBar(){buttonsBar.classList.remove(\"jt-hidden\")}function hideBar(){!BAR_AUTO_HIDE&&!isFullscreen||barMenuActive||consolePanelActive||barConsoleControlPressed||(hideBarMenu(),buttonsBar.classList.add(\"jt-hidden\"))}function showBarMenu(a,b){if(a&&barMenuActive!==a){if(!barMenu)return setupBarMenu(),void setTimeout(function(){showBarMenu(a,b)},1);refreshBarMenu(a),barMenuItemSetActive(b?barMenu.jtDefaultItem:null);var c=a.jtRefElement,d=c&&c.offsetLeft-15||0;d+jt.ScreenGUI.BAR_MENU_WIDTH>c.parentElement.clientWidth?(barMenu.style.right=0,barMenu.style.left=\"auto\",barMenu.style.transformOrigin=\"bottom right\"):(d<0&&(d=0),barMenu.style.left=d+\"px\",barMenu.style.right=\"auto\",barMenu.style.transformOrigin=\"bottom left\"),showCursorAndBar(!0),barMenuActive=a,barMenu.style.display=\"inline-block\",barMenu.jtTitle.focus()}}function refreshBarMenu(a){barMenu.jtTitle.innerHTML=a.jtTitle,barMenu.jtDefaultItem=null;for(var b,c=0,d=Math.min(a.length,BAR_MENU_MAX_ITEMS),e=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT+3,f=0;f<d;++f){var g=a[f];void 0!==g.label&&(b=barMenu.jtItems[c],b.firstChild.textContent=g.label,b.jtMenuOption=null,g.hidden||isFullscreen&&g.fullScreenHidden||!isFullscreen&&g.fullScreenOnly?b.style.display=\"none\":(b.style.display=\"block\",g.divider?b.classList.add(\"jt-bar-menu-item-divider\"):(b.classList.remove(\"jt-bar-menu-item-divider\"),e+=jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT,b.classList.toggle(\"jt-bar-menu-item-toggle\",void 0!==g.toggle),g.disabled?b.classList.add(\"jt-bar-menu-item-disabled\"):(b.classList.remove(\"jt-bar-menu-item-disabled\"),b.jtMenuOption=g,0===g.clickModif&&(barMenu.jtDefaultItem=b),b.jtNeedsUIG=g.needsUIG,void 0!==g.toggle&&b.classList.toggle(\"jt-bar-menu-item-toggle-checked\",!!g.checked)))),++c)}for(var h=c;h<BAR_MENU_MAX_ITEMS;++h)b=barMenu.jtItems[h],b.firstChild.textContent=\"\",b.style.display=\"none\",b.jtMenuOption=null;var i=fsElementCenter.clientHeight-jt.ScreenGUI.BAR_HEIGHT-12,j=e<i?1:i/e;barMenu&&(barMenu.style.transform=\"scale(\"+j.toFixed(4)+\")\")}function hideBarMenu(){barMenuActive&&(barMenuActive=null,barMenu.style.display=\"none\",barMenuItemSetActive(null),cursorHideFrameCountdown=CURSOR_HIDE_FRAMES,self.focus())}function setupBarMenu(){barMenu=document.createElement(\"div\"),barMenu.id=\"jt-bar-menu\";var a=document.createElement(\"div\");a.id=\"jt-bar-menu-inner\",barMenu.appendChild(a);var b=document.createElement(\"div\");b.id=\"jt-bar-menu-title\",b.tabIndex=-1,b.innerHTML=\"Menu Title\",a.appendChild(b),barMenu.jtTitle=b,barMenu.jtItems=new Array(BAR_MENU_MAX_ITEMS);for(var c=0;c<BAR_MENU_MAX_ITEMS;++c){var d=document.createElement(\"div\");d.classList.add(\"jt-bar-menu-item\"),d.style.display=\"none\",d.innerHTML=\"Menu Item \"+c,d.jtBarElementType=2,d.jtItemIndex=c,d.addEventListener(\"mouseenter\",function(a){barMenuItemHoverOver(a.target,a)}),d.addEventListener(\"mouseleave\",barMenuItemHoverOut),a.appendChild(d),barMenu.jtItems[c]=d}barMenu.addEventListener(\"keydown\",function(a){if(MENU_CLOSE_KEYS[a.keyCode])hideBarMenu();else if(barMenuItemActive&&MENU_EXEC_KEYS[a.keyCode&~KEY_SHIFT_MASK&~KEY_CTRL_MASK])barMenuItemFireActive(a.shiftKey,a.ctrlKey);else if(MENU_SELECT_KEYS[a.keyCode]){if(!barMenuActive)return;var b=(barMenus.length+barMenuActive.jtMenuIndex+MENU_SELECT_KEYS[a.keyCode])%barMenus.length;showBarMenu(barMenus[b],!0)}else if(MENU_ITEM_SELECT_KEYS[a.keyCode]){var c=barMenu.jtItems,d=barMenuItemActive?barMenuItemActive.jtItemIndex:-1,e=BAR_MENU_MAX_ITEMS+1;do{d=(d+c.length+MENU_ITEM_SELECT_KEYS[a.keyCode])%c.length}while(--e>=0&&!c[d].jtMenuOption);e>=0&&barMenuItemSetActive(c[d])}return jt.Util.blockEvent(a)}),buttonsBar.appendChild(barMenu)}function closeAllOverlays(){hideBarMenu(),saveStateDialog&&saveStateDialog.hide(),quickOtionsDialog&&quickOtionsDialog.hide(),netPlayDialog&&netPlayDialog.hide(),cartFormatDialog&&cartFormatDialog.hide(),settingsDialog&&settingsDialog.hide(),recentROMsDialog&&recentROMsDialog.hide()}function showLogoMessage(a,b,c,d){consolePanel.setLogoMessageActive(!0),logoMessageActive||(closeAllOverlays(),d&&(afterMessageAction=d),logoMessageText.innerHTML=a,logoMessageOK.classList.toggle(\"jt-higher\",!!c),logoMessageOKText.innerHTML=b||\"OK\",fsElement.classList.add(\"jt-logo-message-active\"),logoMessageActive=!0,signalIsOn=!1,updateLogo())}function updateLogoScale(){var a=canvasOuter.clientWidth,b=Math.min(a/jt.ScreenGUI.LOGO_SCREEN_WIDTH,1);logoCenter.style.transform=b<1?\"translate(-50%, -50%) scale(\"+b.toFixed(4)+\")\":\"translate(-50%, -50%)\"}function setScrollMessage(a){console.error(\"Scroll Message: \"+a),fsElement.classList.toggle(\"jt-scroll-message\",a),scrollMessageActive=a,a&&setTimeout(function(){setScrollMessage(!1)},5e3)}function readjustAll(a){if(isReadjustScreeSizeChanged(a)){if(isFullscreen){buttonsBarDesiredWidth=isLandscape?0:-1;var b=readjustScreenSize.h;isLandscape||(b-=jt.ScreenGUI.BAR_HEIGHT+2),monitor.displayScale(aspectX,displayOptimalScaleY(readjustScreenSize.w,b))}else buttonsBarDesiredWidth=-1,monitor.displayScale(Javatari.SCREEN_DEFAULT_ASPECT,self.displayDefaultScale());self.focus(),consolePanelUpdateForOrientation(),consoleControlsSocket.releaseControllers()}readjustInterval&&jt.Util.performanceNow()-readjustRequestTime>=1e3&&(clearInterval(readjustInterval),readjustInterval=null)}function isReadjustScreeSizeChanged(a){var b=mainElement.parentElement.clientWidth,c=fsElementCenter.clientWidth,d=fsElementCenter.clientHeight;return!(!a&&readjustScreenSize.pw===b&&readjustScreenSize.w===c&&readjustScreenSize.h===d)&&(readjustScreenSize.pw=b,readjustScreenSize.w=c,readjustScreenSize.h=d,isLandscape=c>d,!0)}function displayOptimalScaleY(a,b){var c=2*aspectX,d=b/targetHeight;return targetWidth*c*d>a&&(d=a/(targetWidth*c)),d}function setViewport(){if(isMobileDevice){if(void 0===viewPortOriginalContent&&(viewPortOriginalTag=document.querySelector(\"meta[name=viewport]\"),viewPortOriginalContent=viewPortOriginalTag&&viewPortOriginalTag.content||null),viewportTag||(viewportTag=document.createElement(\"meta\"),viewportTag.name=\"viewport\",viewportTag.content=\"width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes\",document.head.appendChild(viewportTag)),viewPortOriginalTag)try{document.head.removeChild(viewPortOriginalTag)}catch(a){}viewPortOriginalTag=null}}function restoreViewport(){if(isMobileDevice){if(!viewPortOriginalTag&&viewPortOriginalContent&&(viewPortOriginalTag=document.createElement(\"meta\"),viewPortOriginalTag.name=\"viewport\",viewPortOriginalTag.content=viewPortOriginalContent,document.head.appendChild(viewPortOriginalTag)),viewportTag)try{document.head.removeChild(viewportTag)}catch(a){}viewportTag=null}}function setPageVisibilityHandling(){function a(){logoMessageActive||(document.hidden?b=!atariConsole.systemPause(!0):b&&atariConsole.systemPause(!1))}var b;document.addEventListener(\"visibilitychange\",a)}var self=this;this.connect=function(a){atariConsole=a,monitor.connect(atariConsole.getVideoOutput()),\nconsoleControlsSocket=atariConsole.getConsoleControlsSocket(),cartridgeSocket=atariConsole.getCartridgeSocket(),consolePanel.connect(consoleControlsSocket)},this.connectPeripherals=function(a,b,c,d,e,f){recentROMs=a,fileLoader=b,b.registerForDnD(fsElement),b.registerForFileInputElement(fsElement),fileDownloader=c,fileDownloader.registerForDownloadElement(fsElement),peripheralControls=e,consoleControls=d,consoleControls.addKeyInputElement(fsElement),stateMedia=f,consolePanel.connectPeripherals(b,consoleControls,peripheralControls)},this.powerOn=function(){monitor.setDefaults(),updateLogo(),document.documentElement.classList.add(\"jt-started\"),setPageVisibilityHandling(),this.focus(),JavatariFullScreenSetup.shouldStartInFullScreen()&&(setFullscreenState(!0),setEnterFullscreenByAPIOnFirstTouch())},this.powerOff=function(){document.documentElement.classList.remove(\"jt-started\")},this.start=function(a){function b(){self.setFullscreen(!0),a()}!isMobileDevice||isBrowserStandalone||isFullscreen?a():jt.Util.isOfficialHomepage()?showLogoMessage(\"For \"+(fullscreenAPIEnterMethod?\"the best\":\"a full-screen\")+' experience, use<br>the \"Add to Home Screen\" function<br>then launch from the Installed App',\"NICE!\",!1,b):showLogoMessage(\"For the best experience,<br>Javatari will go full-screen\",\"GO!\",!0,b)},this.refresh=function(a,b,c){cursorHideFrameCountdown>0&&--cursorHideFrameCountdown<=0&&hideCursorAndBar(),signalIsOn||(signalIsOn=!0,updateLogo()),canvasContext||createCanvasContext(),canvasContext.drawImage(a,0,0,canvas.width,canvas.height)},this.videoSignalOff=function(){signalIsOn=!1,showCursorAndBar(),updateLogo()},this.mousePointerLocked=function(a){mousePointerLocked=a,mousePointerLocked?hideCursorAndBar():showCursorAndBar()},this.openHelp=function(){return self.openSettings(\"GENERAL\"),!1},this.openAbout=function(){return self.openSettings(\"ABOUT\"),!1},this.openSettings=function(a){closeAllOverlays(),settingsDialog||(settingsDialog=new jt.SettingsDialog(fsElementCenter,consoleControls)),settingsDialog.show(a)},this.openSaveStateDialog=function(a){closeAllOverlays(),saveStateDialog||(saveStateDialog=new jt.SaveStateDialog(fsElementCenter,consoleControls,peripheralControls,stateMedia)),saveStateDialog.show(a)},this.openQuickOptionsDialog=function(){closeAllOverlays(),quickOtionsDialog||(quickOtionsDialog=new jt.QuickOptionsDialog(fsElementCenter,consoleControls,consoleControlsSocket,peripheralControls)),quickOtionsDialog.show()},this.openNetPlayDialog=function(){closeAllOverlays(),netPlayDialog||(netPlayDialog=new jt.NetPlayDialog(room,fsElementCenter)),netPlayDialog.show()},this.openCartridgeFormatDialog=function(a){closeAllOverlays(),cartFormatDialog||(cartFormatDialog=new jt.CartridgeFormatDialog(this,fsElementCenter,atariConsole,cartridgeSocket)),cartFormatDialog.show(a)},this.openLoadFileDialog=function(a,b){fileLoader.openFileChooserDialog(jt.FileLoader.OPEN_TYPE.AUTO,a,b,!1)},this.openRecentROMsDialog=function(){closeAllOverlays(),recentROMsDialog||(recentROMsDialog=new jt.RecentROMsDialog(fsElementCenter,this,recentROMs,fileLoader)),recentROMsDialog.show()},this.openCartridgeChooserDialog=function(a,b,c){logoMessageActive&&self.closeLogoMessage(),a||0!==recentROMs.getCatalog().length?this.openRecentROMsDialog():this.openLoadFileDialog(b,c)},this.toggleConsolePanel=function(){isFullscreen&&isLandscape?consolePanelActiveLandscape=!consolePanelActiveLandscape:consolePanelActivePortrait=!consolePanelActivePortrait,consolePanelUpdateForOrientation()},this.getControlReport=function(a){return{label:-2===crtFilter?\"Browser\":-1===crtFilter?\"Auto\":0===crtFilter?\"OFF\":\"Level \"+crtFilter,active:crtFilter>=0}},this.toggleMenuByKey=function(){barMenuActive?hideBarMenu():(closeAllOverlays(),showBarMenu(barMenuSystem,!0))},this.getScreenCapture=function(){if(signalIsOn)return canvas.toDataURL(\"image/png\")},this.saveScreenCapture=function(){var a=this.getScreenCapture();a&&fileDownloader.startDownloadURL(\"Javatari Screen\",a,\"Screen Capture\")},this.displayMetrics=function(a,b){targetWidth===a&&targetHeight===b||(targetWidth=a,targetHeight=b,updateCanvasContentSize(),isFullscreen?this.requestReadjust(!0):updateScale())},this.displayScale=function(a,b){aspectX=a,scaleY=b,updateScale()},this.getMonitor=function(){return monitor},this.showOSD=function(a,b,c){if(osdTimeout&&clearTimeout(osdTimeout),!a)return osd.style.transition=\"all 0.15s linear\",osd.style.top=\"-29px\",osd.style.opacity=0,void(osdShowing=!1);!b&&osdShowing||(osd.innerHTML=a,osd.style.color=c?\"rgb(255, 60, 40)\":\"rgb(0, 255, 0)\"),osd.style.transition=\"none\",osd.style.top=\"15px\",osd.style.opacity=1,osdShowing=!0;var d=canvasOuter.clientWidth-30,e=osd.clientWidth,f=e<d?1:d/e;osd.style.transform=\"scale(\"+f.toFixed(4)+\")\",osdTimeout=setTimeout(hideOSD,OSD_TIME)},this.displayDefaultScale=function(){if(Javatari.SCREEN_DEFAULT_SCALE>0)return Javatari.SCREEN_DEFAULT_SCALE;var a=Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);return a>=640?2:a>=540?1.65:a>=420?1.25:a>=355?1.05:a>=340?1:a>=300?.9:.8},this.setDebugMode=function(a){debugMode=!!a,canvasContext=null},this.crtFilterToggle=function(){var a=crtFilter+1;a>3&&(a=-2),setCRTFilter(a);var b=null===crtFilterEffective?\"browser default\":crtFilterEffective<1?\"OFF\":\"level \"+crtFilterEffective;this.showOSD(\"CRT filter: \"+(-1===crtFilter?\"AUTO (\"+b+\")\":b),!0),Javatari.userPreferences.current.crtFilter!==crtFilter&&(Javatari.userPreferences.current.crtFilter=crtFilter,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save())},this.crtFilterSetDefault=function(){var a=Javatari.userPreferences.current.crtFilter;setCRTFilter(-3!==Javatari.SCREEN_FILTER_MODE?Javatari.SCREEN_FILTER_MODE:null!==a&&a>-3?a:-1)},this.crtModeToggle=function(){var a=crtMode+1;a>1&&(a=-1),setCRTMode(a);var b=1===crtModeEffective?\"Phosphor\":\"OFF\";this.showOSD(\"CRT mode: \"+(-1===crtMode?\"AUTO (\"+b+\")\":b),!0)},this.crtModeSetDefault=function(){setCRTMode(Javatari.SCREEN_CRT_MODE)},this.displayToggleFullscreen=function(){if(-2!==FULLSCREEN_MODE)return fullscreenAPIEnterMethod&&!isFullScreenByAPI()?void enterFullScreenByAPI():void this.setFullscreen(!isFullscreen)},this.setFullscreen=function(a){fullscreenAPIEnterMethod?a?enterFullScreenByAPI():exitFullScreenByAPI():setFullscreenState(a)},this.focus=function(){canvas.focus()},this.consolePowerAndUserPauseStateUpdate=function(a,b){isLoading&&(a=!1),powerButton.style.backgroundPosition=powerButton.jtBX+\"px \"+mediaButtonBackYOffsets[a?2:1]+\"px\",powerButton.jtMenu[0].label=\"Power \"+(a?\"OFF\":\"ON\");var c=2===room.netPlayMode;powerButton.jtMenu[1].disabled=powerButton.jtMenu[12].disabled=c||!a,powerButton.jtMenu[6].disabled=c||!(cartridgeSocket&&cartridgeSocket.inserted()),powerButton.jtMenu[5].disabled=powerButton.jtMenu[8].disabled=powerButton.jtMenu[9].disabled=powerButton.jtMenu[11].disabled=c},this.cartridgeInserted=function(a){consolePanel.cartridgeInserted(a),powerButton.jtMenu[6].disabled=!a||2===room.netPlayMode},this.controlsModeStateUpdate=function(){settingsDialog&&settingsDialog.controlsModeStateUpdate(),quickOtionsDialog&&quickOtionsDialog.controlsModeStateUpdate()},this.touchControlsActiveUpdate=function(a,b){touchControlsActive===a&&touchControlsDirBig===b||(touchControlsActive=a,touchControlsDirBig=b,isFullscreen&&(touchControlsActive&&consoleControls.setupTouchControlsIfNeeded(fsElementCenter),this.requestReadjust(!0)))},this.roomNetPlayStatusChangeUpdate=function(a){netPlayDialog&&netPlayDialog.isVisible()||closeAllOverlays(),netPlayDialog&&netPlayDialog.roomNetPlayStatusChangeUpdate(a),netplayButton.classList.toggle(\"jt-hidden\",room.netPlayMode<1)},this.controlStateChanged=function(a,b){consolePanel.controlStateChanged(a,b),quickOtionsDialog&&quickOtionsDialog.controlStateChanged(a,b)},this.controlsStatesRedefined=function(){consolePanel.controlsStatesRedefined()},this.speakerUnlockStateUpdate=function(a){\nif(unmuteMessage.classList.toggle(\"jt-show\",!a),!a){var b=canvasOuter.clientWidth-30,c=unmuteMessage.clientWidth,d=c<b?1:b/c;unmuteMessage.style.transform=\"translate(-50%, 0) scale(\"+d.toFixed(4)+\")\"}},this.setLoading=function(a){isLoading=a,updateLoading()},this.requestReadjust=function(a){settingsDialog&&settingsDialog.isVisible()&&settingsDialog.position(),a?readjustAll(!0):(readjustRequestTime=jt.Util.performanceNow(),readjustInterval||(readjustInterval=setInterval(readjustAll,50)))},this.closeAllOverlays=closeAllOverlays,this.closeLogoMessage=function(a,b,c){if(c||consoleControls.hapticFeedbackOnTouch(a),!b&&(consolePanel.setLogoMessageActive(!1),fsElement.classList.remove(\"jt-logo-message-active\"),logoMessageActive=!1,afterMessageAction)){var d=afterMessageAction;afterMessageAction=null,d()}};var afterMessageAction,atariConsole,consoleControlsSocket,monitor,peripheralControls,fileLoader,fileDownloader,consoleControls,cartridgeSocket,stateMedia,recentROMs,readjustInterval=0,readjustRequestTime=0,readjustScreenSize={w:0,wk:0,h:0,pw:0,l:!1},isFullscreen=!1,isLandscape=!1,isTouchDevice=jt.Util.isTouchDevice(),isMobileDevice=jt.Util.isMobileDevice(),isIOSDevice=jt.Util.isIOSDevice(),isBrowserStandalone=jt.Util.isBrowserStandaloneMode(),browserName=jt.Util.browserInfo().name,fullscreenAPIEnterMethod,fullScreenAPIExitMethod,fullScreenAPIQueryProp,fullScreenAPIExitUserRequested=!1,fullScreenScrollHack=!1,viewportTag,viewPortOriginalTag,viewPortOriginalContent,consolePanel,consolePanelElement,settingsDialog,saveStateDialog,recentROMsDialog,quickOtionsDialog,netPlayDialog,cartFormatDialog,fsElement,fsElementCenter,canvas,canvasOuter,canvasLoadingIcon,canvasContext,canvasImageRenderingValue,touchControlsActive=!1,touchControlsDirBig=!1,consolePanelActive=!1,consolePanelActiveLandscape=!1,consolePanelActivePortrait=jt.ConsolePanel.shouldStartActive(),buttonsBar,buttonsBarInner,buttonsBarDesiredWidth=-1,barButtonLongTouchTarget,barButtonLongTouchSelectTimeout,barMenu,barMenus=[],barMenuActive,barMenuItemActive,barMenuSystem,barConsoleControlPressed,osd,osdTimeout,osdShowing=!1,cursorType=\"auto\",cursorShowing=!0,cursorHideFrameCountdown=-1,signalIsOn=!1,crtFilter=-2,crtFilterEffective=null,crtMode=-1,crtModeEffective=0,debugMode=!1,isLoading=!1,aspectX=Javatari.SCREEN_DEFAULT_ASPECT,scaleY=1,mousePointerLocked=!1,targetWidth=160,targetHeight=213,logo,logoCenter,logoImage,logoMessage,logoMessageText,logoMessageOK,logoMessageOKText,logoMessageActive=!1,logoLoadingIcon,scrollMessage,scrollMessageActive=!1,unmuteMessage,powerButton,netplayButton,logoButton,scaleDownButton,scaleUpButton,fullscreenButton,settingsButton,gameSelectButton,gameResetButton,mediaButtonBackYOffsets=[-51,-26,-1],CANVAS_SIZE_FACTOR=Javatari.SCREEN_CANVAS_SIZE,OSD_TIME=3e3,CURSOR_HIDE_FRAMES=180,FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE,BAR_AUTO_HIDE=0===Javatari.SCREEN_CONTROL_BAR,BAR_MENU_MAX_ITEMS=13,NARROW_WIDTH=336,k=jt.DOMKeys,KEY_CTRL_MASK=k.CONTROL,KEY_ALT_MASK=k.ALT,KEY_SHIFT_MASK=k.SHIFT,MENU_CLOSE_KEYS={};MENU_CLOSE_KEYS[k.VK_ESCAPE.c]=1,MENU_CLOSE_KEYS[k.VK_CONTEXT.c]=1;var MENU_EXEC_KEYS={};MENU_EXEC_KEYS[k.VK_ENTER.c]=1,MENU_EXEC_KEYS[k.VK_SPACE.c]=1;var MENU_SELECT_KEYS={};MENU_SELECT_KEYS[k.VK_LEFT.c]=-1,MENU_SELECT_KEYS[k.VK_RIGHT.c]=1;var MENU_ITEM_SELECT_KEYS={};MENU_ITEM_SELECT_KEYS[k.VK_UP.c]=-1,MENU_ITEM_SELECT_KEYS[k.VK_DOWN.c]=1,init(),this.eval=function(str){return eval(str)}},jt.RecentROMsDialog=function(a,b,c,d){\"use strict\";function e(){j.style.height=42+33*(l.length+1)+\"px\";for(var a=0;a<11;++a){var b=n[a],c=l[a];b.classList.toggle(\"jt-visible\",a<=l.length),b.classList.toggle(\"jt-toggle\",a<l.length),b.classList.toggle(\"jt-toggle-checked\",a<l.length),b.jtNeedsUIG=a===l.length,b.innerHTML=c?c.n:\"&nbsp;&nbsp;Open ROM File...\"}f()}function f(){for(var a=0;a<n.length;++a)n[a].classList.toggle(\"jt-selected\",a===m)}function g(){j=document.createElement(\"div\"),j.id=\"jt-recent-roms\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"350px\",j.tabIndex=-1,j.appendChild(document.createTextNode(\"Select Cartridge\")),k=document.createElement(\"ul\"),k.style.width=\"85%\";for(var b=0;b<11;++b){var c=document.createElement(\"li\");c.style.textAlign=\"center\",c.innerHTML=\"\",c.jtItem=b,n.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a,c){a.target.jtItem>=0&&(c&&jt.DOMConsoleControls.hapticFeedbackOnTouch(a),m=a.target.jtItem,f(),c||setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===q?a():r.indexOf(c.keyCode)>=0?b():s[c.keyCode]&&(m+=s[c.keyCode],m<0?m=0:m>l.length&&(m=l.length),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);l=c.getCatalog().slice(0),l.sort(function(a,b){return a.n>b.n});var d=c.lastROMLoadedIndex;d=l.indexOf(l.find(function(a){return a.i===d})),m=d<0||d>=l.length?l.length:d,o=!0,e(),j.classList.add(\"jt-show\"),j.focus(),jt.Util.scaleToFitParentHeight(j,a,jt.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(o&&(j.classList.remove(\"jt-show\"),o=!1,Javatari.room.screen.focus(),a))if(m===l.length)b.openLoadFileDialog();else{var e=c.getROM(l[m].i);d.loadROM(e)}};var j,k,l=[],m=0,n=[],o=!1,p=jt.DOMKeys,q=p.VK_ESCAPE.c,r=[p.VK_ENTER.c,p.VK_SPACE.c],s={};s[p.VK_UP.c]=-1,s[p.VK_DOWN.c]=1},jt.SaveStateDialog=function(a,b,c,d){\"use strict\";function e(){l.textContent=\"Select Slot to \"+(m?\"Save\":\"Load\");for(var a=m?\"Save to \":\"Load from \",b=0;b<o.length;++b){var c=o[b];c.innerHTML=a+s[b].d,c.classList.toggle(\"jt-toggle-checked\",d.isSlotUsed(b+1))}f()}function f(){for(var a=0;a<o.length;++a)o[a].classList.toggle(\"jt-selected\",a===n)}function g(){j=document.createElement(\"div\"),j.id=\"jt-savestate\",j.classList.add(\"jt-select-dialog\"),j.style.width=\"280px\",j.style.height=\"404px\",j.tabIndex=-1,l=document.createTextNode(\"Select Slot\"),j.appendChild(l),k=document.createElement(\"ul\"),k.style.width=\"80%\";for(var b=0;b<s.length;++b){var c=document.createElement(\"li\");c.classList.add(\"jt-visible\"),b<s.length-1&&c.classList.add(\"jt-toggle\"),c.style.textAlign=\"center\",c.innerHTML=s[b].d,c.jtSlot=b,c.jtNeedsUIG=!0,o.push(c),k.appendChild(c)}j.appendChild(k),h(),a.appendChild(j)}function h(){function a(){i.hide(!1)}function b(){i.hide(!0)}jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),jt.Util.onTapOrMouseDownWithBlockUIG(j,function(a,c){a.target.jtSlot>=0&&(c&&jt.DOMConsoleControls.hapticFeedbackOnTouch(a),n=a.target.jtSlot,f(),c||setTimeout(b,120))}),j.addEventListener(\"keydown\",function(c){return c.keyCode===u?a():v.indexOf(c.keyCode)>=0?b():w[c.keyCode]&&(n+=w[c.keyCode],n<0?n=0:n>10&&(n=10),f()),jt.Util.blockEvent(c)})}var i=this;this.show=function(b){if(!j)return g(),setTimeout(function(){i.show(b)},0);m=b,p=!0,e(),j.classList.add(\"jt-show\"),j.focus(),jt.Util.scaleToFitParentHeight(j,a,jt.ScreenGUI.BAR_HEIGHT)},this.hide=function(a){if(p&&(j.classList.remove(\"jt-show\"),p=!1,Javatari.room.screen.focus(),a)){var d=s[n],e=m?d.save:d.load;d.peripheral?c.controlActivated(e):b.processControlState(e,!0)}};var j,k,l,m=!1,n=0,o=[],p=!1,q=jt.ConsoleControls,r=jt.PeripheralControls,s=[{d:\"Slot 1\",load:q.LOAD_STATE_1,save:q.SAVE_STATE_1},{d:\"Slot 2\",load:q.LOAD_STATE_2,save:q.SAVE_STATE_2},{d:\"Slot 3\",load:q.LOAD_STATE_3,save:q.SAVE_STATE_3},{d:\"Slot 4\",load:q.LOAD_STATE_4,save:q.SAVE_STATE_4},{d:\"Slot 5\",load:q.LOAD_STATE_5,save:q.SAVE_STATE_5},{d:\"Slot 6\",load:q.LOAD_STATE_6,save:q.SAVE_STATE_6},{d:\"Slot 7\",load:q.LOAD_STATE_7,save:q.SAVE_STATE_7},{d:\"Slot 8\",load:q.LOAD_STATE_8,save:q.SAVE_STATE_8},{d:\"Slot 9\",load:q.LOAD_STATE_9,save:q.SAVE_STATE_9},{d:\"Slot 10\",load:q.LOAD_STATE_10,save:q.SAVE_STATE_10},{d:\"File...\",load:r.CONSOLE_LOAD_STATE_FILE,save:r.CONSOLE_SAVE_STATE_FILE,peripheral:!0\n}],t=jt.DOMKeys,u=t.VK_ESCAPE.c,v=[t.VK_ENTER.c,t.VK_SPACE.c],w={};w[t.VK_UP.c]=-1,w[t.VK_DOWN.c]=1},jt.QuickOptionsDialog=function(a,b,c,d){\"use strict\";function e(){for(var a=0;a<j.length;++a){var b=j[a],e=b.peripheral?d.getControlReport(b.control):c.getControlReport(b.control);b.value=e.label,b.selected=e.active,l[a].innerHTML=b.value,l[a].classList.toggle(\"jt-selected\",!!b.selected)}}function f(){i=document.createElement(\"div\"),i.id=\"jt-quick-options\",i.tabIndex=-1;var b=jt.PeripheralControls;j=[{label:\"Paddles\",control:b.PADDLES_TOGGLE_MODE,peripheral:!0},{label:\"Swap Controllers\",control:b.P1_CONTROLS_TOGGLE,peripheral:!0},{label:\"No Collisions\",control:m.NO_COLLISIONS},{label:\"&#128190;&nbsp; V-Synch\",control:m.VSYNCH},{label:\"&#128190;&nbsp; CRT Filter\",control:b.SCREEN_CRT_FILTER,peripheral:!0},{label:\"&#128190;&nbsp; Audio Buffer\",control:b.SPEAKER_BUFFER_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Big Directionals\",control:b.TOUCH_TOGGLE_DIR_BIG,peripheral:!0},{label:\"&#128190;&nbsp; TurboFire Speed\",control:b.TURBO_FIRE_TOGGLE,peripheral:!0},{label:\"&#128190;&nbsp; Haptic Feedback\",control:b.HAPTIC_FEEDBACK_TOGGLE_MODE,peripheral:!0}];var c=document.createElement(\"ul\");c.classList.add(\"jt-quick-options-list\");for(var d=0;d<j.length;++d){var e=document.createElement(\"li\"),f=document.createElement(\"div\");f.innerHTML=j[d].label,e.appendChild(f);var h=document.createElement(\"div\");h.classList.add(\"jt-control\"),h.jtControlItem=j[d],e.appendChild(h),c.appendChild(e),l.push(h)}i.appendChild(c),g(),a.appendChild(i)}function g(){jt.Util.onTapOrMouseDownWithBlock(i,function(a){if(a.target.jtControlItem){jt.DOMConsoleControls.hapticFeedbackOnTouch(a);var c=a.target.jtControlItem;c.peripheral?(d.controlActivated(c.control,!1,!1),e()):b.processControlState(c.control,!0)}else i.focus()}),i.addEventListener(\"keydown\",function(a){return o.indexOf(a.keyCode)>=0&&h.hide(),jt.Util.blockEvent(a)})}var h=this;this.show=function(){if(!i)return f(),setTimeout(h.show,0);e(),k=!0,i.classList.add(\"jt-show\"),i.focus(),jt.Util.scaleToFitParentHeight(i,a,jt.ScreenGUI.BAR_HEIGHT)},this.hide=function(){k&&(Javatari.userPreferences.save(),i.classList.remove(\"jt-show\"),k=!1,Javatari.room.screen.focus())},this.controlsModeStateUpdate=function(){k&&e()},this.controlStateChanged=function(a,b){!k||a!==m.NO_COLLISIONS&&a!==m.VSYNCH||e()};var i,j,k=!1,l=[],m=jt.ConsoleControls,n=jt.DOMKeys,o=[n.VK_ESCAPE.c,n.VK_ENTER.c,n.VK_SPACE.c]},jt.NetPlayDialog=function(a,b){\"use strict\";function c(){switch(a.netPlayMode){case 0:o.textContent=\"STANDALONE\",m.textContent=\"HOST\",n.textContent=\"JOIN\",m.disabled=!1,n.disabled=!1,r.disabled=!1,s.disabled=!1,k.classList.remove(\"jt-active\"),l.classList.remove(\"jt-disabled\"),r.setAttribute(\"placeholder\",\"Enter a name\");break;case 1:var b=a.getNetServer();o.textContent=\"HOSTING Session: \"+b.getSessionID(),m.textContent=\"STOP\",n.textContent=\"JOIN\",m.disabled=!1,n.disabled=!0,r.disabled=!0,s.disabled=!0,k.classList.add(\"jt-active\"),l.classList.add(\"jt-disabled\"),r.setAttribute(\"placeholder\",\"Automatic\"),p.href=e();break;case 2:var c=a.getNetClient();o.textContent=\"JOINED Session: \"+c.getSessionID(),m.textContent=\"HOST\",n.textContent=\"LEAVE\",m.disabled=!0,n.disabled=!1,r.disabled=!0,s.disabled=!0,k.classList.add(\"jt-active\"),l.classList.remove(\"jt-disabled\"),l.classList.add(\"jt-disabled\"),r.setAttribute(\"placeholder\",\"Enter a name\"),p.href=e();break;case-1:case-2:o.textContent=\"Establishing connection...\",r.disabled=!0,s.disabled=!0,k.classList.remove(\"jt-active\"),l.classList.add(\"jt-disabled\"),-1===a.netPlayMode?(m.textContent=\"CANCEL\",n.textContent=\"JOIN\",m.disabled=!1,n.disabled=!0,r.setAttribute(\"placeholder\",\"Automatic\")):(m.textContent=\"HOST\",n.textContent=\"CANCEL\",m.disabled=!0,n.disabled=!1,r.setAttribute(\"placeholder\",\"Enter a name\"))}}function d(){r.value=u.netPlaySessionName,s.value=u.netPlayNick}function e(){return jt.Util.browserCurrentURL()+\"?JOIN=\"+a.netController.getSessionID()}function f(b){var c=b.target;if(!c.disabled){jt.DOMConsoleControls.hapticFeedbackOnTouch(b);var d=!1,e=a.netPlayMode;if(c!==m||0!==e&&1!==e&&-1!==e?c!==n||0!==e&&2!==e&&-2!==e||(0===e?(a.getNetClient().joinSession(r.value,s.value),d=!0):a.getNetClient().leaveSession(!1,-2===e?\"NetPlay connection aborted\":void 0)):0===e?(a.getNetServer().startSession(r.value),d=!0):a.getNetServer().stopSession(!1,-1===e?\"NetPlay connection aborted\":void 0),d){var f=r.value.trim(),g=s.value.trim();u.netPlaySessionName===f&&u.netPlayNick===g||(u.netPlaySessionName=f,u.netPlayNick=g,Javatari.userPreferences.setDirty(),Javatari.userPreferences.save())}}}function g(){j=document.createElement(\"div\"),j.id=\"jt-netplay\",j.tabIndex=-1,k=document.createElement(\"div\"),k.id=\"jt-netplay-status-box\",j.appendChild(k),q=document.createElement(\"input\"),q.id=\"jt-netplay-link-text\",k.appendChild(q),o=document.createElement(\"div\"),o.id=\"jt-netplay-status\",o.textContent=\"STANDALONE\",k.appendChild(o),p=document.createElement(\"a\"),p.id=\"jt-netplay-link\",p.textContent=\"🔗\",p.setAttribute(\"title\",\"Copy Join Session link to clipboard\"),k.appendChild(p),l=document.createElement(\"div\"),l.id=\"jt-netplay-session-box\",j.appendChild(l);var a=document.createElement(\"div\");a.id=\"jt-netplay-session-label\",l.appendChild(a),m=document.createElement(\"button\"),m.id=\"jt-netplay-start\",m.jtCommand=!0,m.classList.add(\"jt-netplay-button\"),m.textContent=\"HOST\",l.appendChild(m),r=document.createElement(\"input\"),r.id=\"jt-netplay-session-name\",r.setAttribute(\"placeholder\",\"Enter a name\"),r.setAttribute(\"maxlength\",12),r.spellcheck=!1,r.autocorrect=!1,r.autocapitalize=!1,l.appendChild(r),n=document.createElement(\"button\"),n.id=\"jt-netplay-join\",n.jtCommand=!0,n.classList.add(\"jt-netplay-button\"),n.textContent=\"JOIN\",l.appendChild(n);var c=document.createElement(\"div\");c.id=\"jt-netplay-nick-label\",l.appendChild(c),s=document.createElement(\"input\"),s.id=\"jt-netplay-nick\",s.setAttribute(\"placeholder\",\"Automatic\"),s.setAttribute(\"maxlength\",12),s.spellcheck=!1,s.autocorrect=!1,s.autocapitalize=!1,l.appendChild(s),h(),b.appendChild(j)}function h(){function b(a){var b=a.target,c=b.value;return!c||c.match(/^[A-Za-z0-9]+[A-Za-z0-9_\\-]*@?$/)?b.jtLastValidValue=c:b.value=b.jtLastValidValue||\"\"}jt.Util.onTapOrMouseDownWithBlock(j,function(a){a.target.jtCommand?f(a):j.focus()}),j.addEventListener(\"keydown\",function(a){return w.indexOf(a.keyCode)>=0&&i.hide(),jt.Util.blockEvent(a)}),r.addEventListener(\"input\",b),s.addEventListener(\"input\",b),jt.Util.addEventsListener(o,\"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(r,\"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(s,\"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\",function(a){a.stopPropagation()}),j.ondragstart=jt.Util.blockEvent,k.addEventListener(\"contextmenu\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(p,\"click\",function(b){if(jt.Util.blockEvent(b),!document.queryCommandSupported||!document.queryCommandSupported(\"copy\"))return a.showOSD(\"Copy to Clipboard not supported by the browser!\",!0,!0);q.value=e(),q.focus(),q.select(),document.execCommand(\"copy\"),j.focus()})}var i=this;this.show=function(){if(!j)return g(),setTimeout(i.show,0);c(),d(),t=!0,j.classList.add(\"jt-show\"),j.focus(),jt.Util.scaleToFitParentWidth(j,b,12)},this.hide=function(){t&&(j.classList.remove(\"jt-show\"),t=!1,a.screen.focus())},this.roomNetPlayStatusChangeUpdate=function(b){if(t&&c(),2===a.netPlayMode&&b<0&&t)return setTimeout(function(){i.hide()},2e3);0===a.netPlayMode&&b>0&&!t&&i.show()},this.isVisible=function(){return t};var j,k,l,m,n,o,p,q,r,s,t=!1,u=Javatari.userPreferences.current,v=jt.DOMKeys,w=[v.VK_ESCAPE.c]},jt.CartridgeFormatDialog=function(a,b,c,d){\"use strict\";function e(){q=0,\nk.reinsertROMContent(),r=jt.CartridgeCreator.getUserFormatOptionNames(k.rom);var a=jt.CartridgeCreator.getBestFormatOption(k.rom);a||(a=jt.CartridgeFormats[\"4K\"]),r.unshift(a.name);for(var b=0;b<s.length;++b)b<r.length?(r[b]===p&&(q=b),s[b].innerHTML=0===b?\"AUTO: \"+a.name+\": \"+a.desc:r[b]+\": \"+jt.CartridgeFormats[r[b]].desc,s[b].classList.add(\"jt-visible\")):s[b].classList.remove(\"jt-visible\");k.format===a&&(q=0),f(),g()}function f(){for(var a,b=0;b<r.length;++b)b===q?(a=s[b],a.classList.add(\"jt-selected\")):s[b].classList.remove(\"jt-selected\");m.scrollTop>a.offsetTop?m.scrollTop=a.offsetTop:m.scrollTop+m.offsetHeight<a.offsetTop+26+2&&(m.scrollTop=a.offsetTop-(m.offsetHeight-26-2))}function g(){n.textContent=v?u?\"YES\":\"NO\":\"- -\",n.classList.toggle(\"jt-selected\",u)}function h(){l=document.createElement(\"div\"),l.id=\"jt-cartridge-format\",l.classList.add(\"jt-select-dialog\"),l.style.width=\"340px\",l.style.height=\"310px\",l.tabIndex=-1;var a=document.createTextNode(\"Select ROM Format\");l.appendChild(a),m=document.createElement(\"ul\");for(var c=0,d=jt.CartridgeFormatsUserOptions.length+1;c<d;++c){var e=document.createElement(\"li\");e.jtIndex=c,e.classList.add(\"jt-visible\"),e.style.textAlign=\"center\",s.push(e),m.appendChild(e)}l.appendChild(m);var f=document.createElement(\"div\"),g=document.createElement(\"ul\");g.classList.add(\"jt-quick-options-list\"),e=document.createElement(\"li\");var h=document.createElement(\"div\");h.innerHTML=\"&#128190;&nbsp; Remember Choice\",e.appendChild(h),n=document.createElement(\"div\"),n.innerHTML=\"NO\",n.classList.add(\"jt-control\"),e.appendChild(n),g.appendChild(e),f.appendChild(g),l.appendChild(f),i(),b.appendChild(l)}function i(){function a(){j.hide(!1)}function b(){j.hide(!0)}function c(a){q=a,f()}jt.Util.onTapOrMouseDownWithBlock(l,function(){m.focus()}),jt.Util.addEventsListener(m,\"touchstart touchmove touchend\",function(a){a.stopPropagation()}),jt.Util.addEventsListener(m,\"mousedown\",function(a){a.stopPropagation(),jt.DOMConsoleControls.hapticFeedbackOnTouch(a),a.target.jtIndex>=0&&c(a.target.jtIndex)}),jt.Util.addEventsListener(m,\"click\",function(a){if(jt.Util.blockEvent(a),a.target.jtIndex>=0){var d=a.target.jtIndex===q;c(a.target.jtIndex),setTimeout(b,d?0:120)}}),jt.Util.onTapOrMouseDownWithBlock(n,function(a){v&&(jt.DOMConsoleControls.hapticFeedbackOnTouch(a),u=!u,g())}),l.addEventListener(\"keydown\",function(c){var d=x.codeForKeyboardEvent(c);return d===y?a():z.indexOf(d)>=0?b():A[d]&&(q+=A[d],q<0?q=0:q>=r.length&&(q=r.length-1),f()),jt.Util.blockEvent(c)})}var j=this;this.show=function(a){if(!l)return h(),setTimeout(function(){j.show(a)},0);o=a,(k=d.inserted())&&(p=k.format.name,u=!!w.getForROM(k.rom),v=!!k.rom.info.h,t=!0,l.classList.add(\"jt-show\"),e(),l.focus(),jt.Util.scaleToFitParentHeight(l,b,jt.ScreenGUI.BAR_HEIGHT))},this.hide=function(b){if(t){if(l.classList.remove(\"jt-show\"),t=!1,Javatari.room.screen.focus(),b){var e=r[q],f=e===r[0],g=jt.CartridgeCreator.changeCartridgeFormat(k,jt.CartridgeFormats[e]);u&&w.setForROM(k.rom,e,f),d.insert(g,!o&&c.powerIsOn,!0),a.showOSD(\"ROM Format: \"+e+(f?\" (Auto)\":\"\"),!0)}k=void 0}};var k,l,m,n,o=!1,p=\"\",q=0,r=[],s=[],t=!1,u=!1,v=!1,w=Javatari.userROMFormats,x=jt.DOMKeys,y=x.VK_ESCAPE.c,z=[x.VK_ENTER.c,x.VK_SPACE.c],A={};A[x.VK_UP.c]=-1,A[x.VK_DOWN.c]=1},jt.SettingsGUI={WIDTH:600,HEIGHT:450},jt.SettingsGUI.html=function(){\nreturn'<div id=\"jt-modal\" tabindex=\"-1\"> <div id=\"jt-menu\"> <div id=\"jt-back\" jt-var=\"true\"> <div class=\"jt-back-arrow\"> </div> </div> <div class=\"jt-caption\"> Help & Settings </div> <div class=\"jt-items\"> <div id=\"jt-menu-console\" class=\"jt-item\" jt-var=\"true\"> CONSOLE </div> <div id=\"jt-menu-ports\" class=\"jt-item\" jt-var=\"true\"> CONTROLLERS </div> <div id=\"jt-menu-general\" class=\"jt-item jt-selected\" jt-var=\"true\"> EMULATION </div> <div id=\"jt-menu-about\" class=\"jt-item\" jt-var=\"true\"> ABOUT </div> <div id=\"jt-menu-selection\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-content\" jt-var=\"true\"> <div id=\"jt-console\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\"> POWER </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F2 </div> </div> <div class=\"jt-desc\"> TV TYPE </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F4 </div> </div> <div class=\"jt-desc\"> P1 Difficulty </div> </div> </div> <div class=\"jt-middle\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F5 </div> </div> <div class=\"jt-desc\"> Load Cartridge File </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F6 </div> </div> <div class=\"jt-desc\"> Load Cartridge URL </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F7 </div> </div> <div class=\"jt-desc\"> Remove Cartridge </div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\"> RESET </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F11 </div> </div> <div class=\"jt-desc\"> SELECT </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F9 </div> </div> <div class=\"jt-desc\"> P2 Difficulty </div> </div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-console-panel\"> <div class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> </div> <div class=\"jt-footer\"> Drag & Drop Files or URLs to load Cartridge ROMs and State Files </div> </div> <div id=\"jt-ports\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> L </div> </div> <div class=\"jt-desc\">Toggle Paddles</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> K </div> </div> <div class=\"jt-desc\">Toggle Swap Sides</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> J </div> </div> <div class=\"jt-desc\">Toggle Gamepads</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> H </div> </div> <div class=\"jt-desc\">Adjust Turbo Fire speed</div> </div> </div> <div class=\"jt-right\"> <div id=\"jt-ports-paddles-mode\" class=\"jt-hotkey jt-link jt-joystick-device\" jt-var=\"true\">Controllers: JOYSTICKS</div> <div id=\"jt-ports-p1-mode\" class=\"jt-hotkey jt-link jt-mouse-device\" jt-var=\"true\">Swap Mode: NORMAL</div> <div id=\"jt-ports-gamepads-mode\" class=\"jt-hotkey jt-link jt-joykeys-device\" jt-var=\"true\">Gamepads: AUTO (swapped)</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-player jt-p1\"> <div id=\"jt-control-p1-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 1 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p1-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p1-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p1-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p1-buttonT\" class=\"jt-key\" jt-var=\"true\" > </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p1-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p1-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p1-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p1-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p1-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div class=\"jt-player jt-p2\"> <div id=\"jt-control-p2-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 2 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p2-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p2-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p2-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p2-buttonT\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p2-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p2-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p2-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p2-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p2-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-ports-revert\" class=\"jt-link\" jt-var=\"true\"> REVERT </div> <div id=\"jt-ports-defaults\" class=\"jt-link\" jt-var=\"true\"> DEFAULTS </div> </div> <div id=\"jt-general\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> C </div> </div> <div class=\"jt-desc\">Collisions</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\">Fry Console</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Q </div> </div> <div class=\"jt-desc\">NTSC/PAL</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> W </div> </div> <div class=\"jt-desc\">V-Synch Modes</div> </div> <div class=\"jt-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> R </div> </div> <div class=\"jt-desc\">CRT Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> T </div> </div> <div class=\"jt-desc\">CRT Filters</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> D </div> </div> <div class=\"jt-desc\">Debug Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> I </div> </div> <div class=\"jt-desc\">Show Info</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> G </div> </div> <div class=\"jt-desc\">Capture Screen</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-desc\">Right-Click Bar Icons: Default Action</div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Load State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Save State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F8 </div> </div> <div class=\"jt-desc\">Save State File</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div>&nbsp;&nbsp;/&nbsp;&nbsp;<div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\">Fast / Slow Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Adjust Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> P </div> </div> <div class=\"jt-desc\">Toggle Pause</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> O </div>&nbsp;/&nbsp;<div class=\"jt-key\"> F </div> </div> <div class=\"jt-desc\">Next Frame</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Enter </div> </div> <div class=\"jt-desc\">Full Screen</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Screen Size / Width</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Viewport Size / Origin</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Backspace </div> </div> <div class=\"jt-desc\">Defaults</div> </div> </div> </div> <div id=\"jt-about\"> <div id=\"jt-logo-version\">version&nbsp'+Javatari.VERSION+'</div> <div class=\"jt-info\">'+atob(\"Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==\")+\"<br>\"+atob(\"PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9qYXZhdGFyaS5vcmciPmh0dHA6Ly9qYXZhdGFyaS5vcmc8L2E+\")+' </div> <div id=\"jt-browserinfo\" jt-var=\"true\"> </div> </div> </div> </div>'\n},jt.SettingsGUI.css=function(){return\"#jt-modal * { outline: none; box-sizing: border-box; } #jt-modal { position: absolute; overflow: hidden; width: \"+jt.SettingsGUI.WIDTH+\"px; height: 0; opacity: 0; visibility: hidden; top: 50%; left: 50%; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; z-index: 50; } #jt-modal.jt-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: \"+jt.SettingsGUI.HEIGHT+'px; visibility: visible; opacity: 1; } #jt-modal .jt-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #jt-modal .jt-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #jt-modal .jt-link:hover { outline: 1px solid; } .jt-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 48%); } .jt-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .jt-hotkey .jt-desc { display: inline-block; line-height: 21px; } .jt-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .jt-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .jt-footer { margin-top: 16px; text-align: center; } #jt-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #jt-menu #jt-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #jt-menu #jt-back:hover { background: rgba(0, 0, 0, .12); } .jt-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .jt-back-arrow:before { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .jt-back-arrow:after { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #jt-menu .jt-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-menu .jt-items { position: relative; width: 84%; height: 39px; margin: 0 auto; font-weight: 600; } #jt-menu .jt-item { float: left; width: 25%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #jt-menu .jt-selected { color: hsl(358, 67%, 46%); } #jt-menu #jt-menu-selection { position: absolute; left: 0; bottom: 0; width: 25%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #jt-content { position: relative; left: 0; width: 3000px; height: 371px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #jt-console, #jt-ports, #jt-general, #jt-about { position: absolute; width: '+jt.SettingsGUI.WIDTH+\"px; height: 100%; box-sizing: border-box; } #jt-console { padding-top: 35px; } #jt-console .jt-hotkey { height: 29px; } #jt-console .jt-command { width: 42px; } #jt-console .jt-left, #jt-console .jt-middle, #jt-console .jt-right { float: left; } #jt-console .jt-left { width: 160px; margin-left: 58px; } #jt-console .jt-middle { width: 204px; } #jt-console .jt-right .jt-command { width: 46px; } #jt-console .jt-console-panel { position: relative; margin: 18px auto 0; box-shadow: rgba(0, 0, 0, 0.6) 2px 2px 4px; } #jt-console .jt-console-panel * { cursor: auto; } #jt-console .jt-footer { margin: 20px auto; } #jt-ports { left: \"+jt.SettingsGUI.WIDTH+'px; padding: 18px 0 0 27px; } #jt-ports > .jt-left { float: left; width: 335px; padding-left: 26px; } #jt-ports > .jt-right { float: left; } #jt-ports .jt-command { width: 91px; } #jt-ports .jt-bottom { width: 546px; text-align: center; } #jt-ports .jt-player { position: absolute; top: 146px; width: 217px; color: rgba(0, 0, 0, .8); } #jt-ports .jt-p1 { left: 47px; } #jt-ports .jt-p2 { right: 47px; } #jt-ports .jt-title { margin-bottom: 09px; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #jt-ports .jt-player .jt-command { display: block; position: relative; float: left; width: 33%; height: 45px; font-size: 13px; text-align: center; } #jt-ports .jt-command.jt-fire1, #jt-ports .jt-command.jt-fire2 { top: 14px; } #jt-ports .jt-command.jt-left, #jt-ports .jt-command.jt-right { top: 27px; } #jt-ports .jt-command.jt-down { float: none; clear: both; margin: 0 auto; } #jt-ports .jt-command.jt-controller { height: 90px; } #jt-ports #jt-control-p1-controller, #jt-ports #jt-control-p2-controller { width: 70px; height: 89px; margin-left: 1px; background: url(\"'+jt.Images.urls.controllers+'\") no-repeat -1px 0; background-size: 73px 179px; } #jt-ports .jt-player .jt-key { min-width: 33px; height: 23px; padding: 5px 6px 4px; margin-top: 2px; cursor: pointer; } #jt-ports .jt-player .jt-key:hover { box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170); } #jt-ports .jt-player .jt-key.jt-redefining { color: white; background-color: rgb(87, 128, 255); border-color: rgb(71, 117, 255); } #jt-ports .jt-player .jt-key.jt-undefined { background-color: rgb(255, 150, 130); border-color: rgb(255, 130, 90); } #jt-ports-defaults, #jt-ports-revert { position: absolute; left: 260px; width: 82px; text-align: center; padding: 3px 0 1px; font-size: 12px; } #jt-ports-defaults { bottom: 47px; } #jt-ports-revert { bottom: 21px; } #jt-general { left: '+2*jt.SettingsGUI.WIDTH+\"px; padding-top: 18px; padding-left: 34px; } #jt-general .jt-left { float: left; width: 245px; } #jt-general .jt-left .jt-command { width: 99px; } #jt-general .jt-right { float: left; } #jt-general .jt-right .jt-command { width: 160px; } #jt-about { left: \"+3*jt.SettingsGUI.WIDTH+'px; font-size: 18px; } #jt-about #jt-logo-version { width: 300px; height: 238px; margin: 26px auto 19px; color: hsl(0, 0%, 98%); padding-top: 200px; box-sizing: border-box; text-align: center; background: black url(\"'+jt.Images.urls.logo+'\") center 18px no-repeat; background-size: 233px 173px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-about .jt-info { line-height: 30px; text-align: center; } #jt-about a { color: rgb(0, 40, 200); text-decoration: none; } #jt-about a:hover { text-decoration: underline; } #jt-about #jt-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } .jt-clear { clear: both; } .jt-divider { clear: both; height: 27px; } .jt-full-divider { clear: both; height: 21px; } #jt-general .jt-full-divider { clear: both; height: 18px; }'},jt.SettingsDialog=function(a,b){\"use strict\";function c(){jt.Util.insertCSS(jt.SettingsGUI.css()),a.insertAdjacentHTML(\"beforeend\",jt.SettingsGUI.html()),j=document.getElementById(\"jt-modal\"),delete jt.SettingsGUI.html,delete jt.SettingsGUI.css,d(),e()}function d(){function a(b,c){c(b);for(var d=b.childNodes,e=0;e<d.length;e++)a(d[e],c)}a(j,function(a){a.id&&a.getAttribute&&a.getAttribute(\"jt-var\")&&(i[a.id]=a)})}function e(){jt.Util.onTapOrMouseDownWithBlock(j,function(){j.focus()}),\njt.Util.onTapOrMouseDownWithBlock(i[\"jt-back\"],i.hide),j.addEventListener(\"keydown\",function(a){h(a,!0)}),j.addEventListener(\"keyup\",function(a){h(a,!1)}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-console\"],function(){i.setPage(\"CONSOLE\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-ports\"],function(){i.setPage(\"PORTS\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-general\"],function(){i.setPage(\"GENERAL\")}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-menu-about\"],function(){i.setPage(\"ABOUT\")});for(var a in r)!function(a){jt.Util.onTapOrMouseDownWithBlock(i[a],function(){k(a)})}(a);jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-paddles-mode\"],function(){b.togglePaddleMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-p1-mode\"],function(){b.toggleP1ControlsMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-gamepads-mode\"],function(){b.toggleGamepadMode()}),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-defaults\"],o),jt.Util.onTapOrMouseDownWithBlock(i[\"jt-ports-revert\"],p)}function f(){i[\"jt-browserinfo\"].innerHTML=navigator.userAgent}function g(){var a=b.isPaddleMode(),c=b.isP1ControlsMode();i[\"jt-ports-paddles-mode\"].innerHTML=\"Controllers: \"+(a?\"PADDLES\":\"JOYSTICKS\"),i[\"jt-ports-p1-mode\"].innerHTML=\"Swap Mode: \"+(c?\"SWAPPED\":\"NORMAL\"),i[\"jt-ports-gamepads-mode\"].innerHTML=\"Gamepads: \"+b.getGamepadModeDesc(),a?(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"-91px\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"+ Speed\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"- Speed\"):(i[\"jt-control-p1-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p2-controller\"].style.backgroundPositionY=\"0\",i[\"jt-control-p1-up-label\"].innerHTML=i[\"jt-control-p2-up-label\"].innerHTML=\"Up\",i[\"jt-control-p1-down-label\"].innerHTML=i[\"jt-control-p2-down-label\"].innerHTML=\"Down\"),i[\"jt-control-p1-label\"].innerHTML=\"PLAYER \"+(c?\"2\":\"1\"),i[\"jt-control-p2-label\"].innerHTML=\"PLAYER \"+(c?\"1\":\"2\");var d=v.joystickKeys;for(var e in r){var f=i[e];if(e===s)f.classList.add(\"jt-redefining\"),f.classList.remove(\"jt-undefined\"),f.innerHTML=\"?\";else{f.classList.remove(\"jt-redefining\");var g=r[e],h=d[g.player][g.control];h.c===jt.DOMKeys.VK_VOID.c?(f.classList.add(\"jt-undefined\"),f.innerHTML=\"\"):(f.classList.remove(\"jt-undefined\"),f.innerHTML=h.n)}}}function h(a,b){var c=jt.DOMKeys.codeForKeyboardEvent(a);if(b&&c===w)return n(),jt.Util.blockEvent(a);s&&m(a)}var i=this;this.show=function(a){if(!j)return c(),void setTimeout(function(){i.show(a)},0);this.position()&&(s=null,this.setPage(a||t),j.classList.add(\"jt-show\"),j.classList.add(\"jt-show\"),u=!0,setTimeout(function(){j.focus()},50))},this.hide=function(){u&&(i.hideLesser(),Javatari.room.screen.focus())},this.hideLesser=function(){Javatari.userPreferences.isDirty&&q(),j.classList.remove(\"jt-show\"),j.classList.remove(\"jt-show\"),u=!1},this.setPage=function(a){t=a;var b={CONSOLE:\"0\",PORTS:\"-600px\",GENERAL:\"-1200px\",ABOUT:\"-1800px\"}[t],c={CONSOLE:\"0\",PORTS:\"25%\",GENERAL:\"50%\",ABOUT:\"75%\"}[t];switch(b&&(i[\"jt-content\"].style.left=b),c&&(i[\"jt-menu-selection\"].style.left=c),i[\"jt-menu-console\"].classList.toggle(\"jt-selected\",\"CONSOLE\"===t),i[\"jt-menu-ports\"].classList.toggle(\"jt-selected\",\"PORTS\"===t),i[\"jt-menu-general\"].classList.toggle(\"jt-selected\",\"GENERAL\"===t),i[\"jt-menu-about\"].classList.toggle(\"jt-selected\",\"ABOUT\"===t),t){case\"ABOUT\":f();break;case\"PORTS\":g()}},this.isVisible=function(){return u},this.position=function(){var b=a.clientWidth,c=a.clientHeight;return b<575||c<400?(this.hide(),!1):(j.style.top=((c-jt.SettingsGUI.HEIGHT)/2|0)+\"px\",j.style.left=((b-jt.SettingsGUI.WIDTH)/2|0)+\"px\",!0)},this.controlsModeStateUpdate=function(){u&&\"PORTS\"===t&&g()};var j,k=function(a){s=a,g()},l=function(){s=null,g()},m=function(a){if(s){var b=jt.DOMKeys.codeForKeyboardEvent(a),c=jt.DOMKeys.nameForKeyboardEventSingle(a);if(b!==jt.DOMKeys.VK_VOID.c&&c){var d={c:b,n:c},e=r[s],f=v.joystickKeys;for(var g in r){var h=r[g];g!==s&&f[h.player][h.control].c===d.c&&(f[h.player][h.control]=jt.DOMKeys.VK_VOID)}f[e.player][e.control]=d,Javatari.userPreferences.setDirty(),l()}}},n=function(){s?l():i.hide()},o=function(){Javatari.userPreferences.setDefaultJoystickKeys(),l()},p=function(){Javatari.userPreferences.load(),l()},q=function(){Javatari.userPreferences.save(),b.applyPreferences()},r={\"jt-control-p1-button\":{player:0,control:\"button\"},\"jt-control-p1-buttonT\":{player:0,control:\"buttonT\"},\"jt-control-p1-up\":{player:0,control:\"up\"},\"jt-control-p1-left\":{player:0,control:\"left\"},\"jt-control-p1-right\":{player:0,control:\"right\"},\"jt-control-p1-down\":{player:0,control:\"down\"},\"jt-control-p2-button\":{player:1,control:\"button\"},\"jt-control-p2-buttonT\":{player:1,control:\"buttonT\"},\"jt-control-p2-up\":{player:1,control:\"up\"},\"jt-control-p2-left\":{player:1,control:\"left\"},\"jt-control-p2-right\":{player:1,control:\"right\"},\"jt-control-p2-down\":{player:1,control:\"down\"}},s=null,t=\"CONSOLE\",u=!1,v=Javatari.userPreferences.current,w=jt.DOMKeys.VK_ESCAPE.c},jt.WebAudioSpeaker=function(a){\"use strict\";function b(){return jt.Util.isMobileDevice()?\"CHROME\"!==jt.Util.browserInfo().name||jt.Util.isIOSDevice()?3:4:2}function c(){return\"SAFARI\"===jt.Util.browserInfo().name||jt.Util.isIOSDevice()?b():0}function d(){function b(){a.removeEventListener(\"touchend\",b,!0),a.removeEventListener(\"mousedown\",b,!0),a.removeEventListener(\"keydown\",b,!0);var c;try{k.resume().then(function(){jt.Util.log(\"Speaker Audio Context resumed!\")})}catch(a){c=a}var d=k.createBufferSource();d.buffer=k.createBuffer(1,1,22050),d.connect(k.destination),d.start(0),c&&jt.Util.log(\"Audio Context unlocked!\"),g.speakerUnlockStateUpdate(!0)}!m||k.state&&\"suspended\"!==k.state||(a.addEventListener(\"touchend\",b,!0),a.addEventListener(\"mousedown\",b,!0),a.addEventListener(\"keydown\",b,!0),jt.Util.log(\"Speaker Audio Context resume event registered\"),g.speakerUnlockStateUpdate(!1))}function e(){if(m){n.length=j.length,o.length=j.length;for(var a=0;a<j.length;a++)n[a]=j[a].getSampleRate()/k.sampleRate,o[a]=0,j[a].setAudioMonitorBufferSize(n[a]*l|0)}}function f(a){for(var b=a.outputBuffer.getChannelData(0),c=b.length,d=c-1;d>=0;d-=1)b[d]=0;if(0!==j.length)for(var e=j.length-1;e>=0;e-=1){for(var f=n[e],g=j[e].retrieveSamples(c*f+o[e]|0,r),h=g.buffer,i=g.bufferSize,k=g.start+o[e],l=0;l<c;)b[l]+=h[0|k],l+=1,(k+=f)>=i&&(k-=i);o[e]=k-(0|k)}}this.connect=function(a){a.connectMonitor(this)},this.connectPeripherals=function(a){g=a},this.connectAudioSignal=function(a){j.indexOf(a)>=0||(jt.Util.arrayAdd(j,a),e())},this.disconnectAudioSignal=function(a){j.indexOf(a)<0||(jt.Util.arrayRemoveAllElement(j,a),e())},this.powerOn=function(){h(),m&&(d(),this.unpause())},this.powerOff=function(){this.pause(),k&&k.close(),k=m=void 0},this.mute=function(){r=!0},this.unMute=function(){r=!1},this.pause=function(){m&&m.disconnect()},this.unpause=function(){m&&m.connect(k.destination)},this.toggleBufferBaseSize=function(){if(!k)return g.showOSD(\"Audio is DISABLED\",!0,!0);q=(q+2)%8-1,this.pause(),i(),this.unpause(),g.showOSD(\"Audio Buffer size: \"+(-1===q?\"Auto (\"+l+\")\":0===q?\"Browser (\"+l+\")\":l),!0),p.audioBufferBase=q,Javatari.userPreferences.setDirty()},this.getControlReport=function(a){return{label:-2===q?\"OFF\":-1===q?\"Auto\":0===q?\"Browser\":l,active:q>0}};var g,h=function(){if(-2===q||0===Javatari.AUDIO_MONITOR_BUFFER_SIZE)return void jt.Util.warning(\"Audio disabled in configuration\");try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error(\"WebAudio API not supported by the browser\");k=new a,jt.Util.log(\"Speaker AudioContext created. Sample rate: \"+k.sampleRate+(k.state?\", \"+k.state:\"\")),i()}catch(a){jt.Util.error(\"Could not create AudioContext. Audio DISABLED!\\n\"+a)}},i=function(){try{\nvar a=-1===q?b():0===q?c():q,d=Javatari.AUDIO_MONITOR_BUFFER_SIZE>0?Javatari.AUDIO_MONITOR_BUFFER_SIZE:a>0?jt.Util.exp2(0|jt.Util.log2((k.sampleRate+14e3)/22050))*jt.Util.exp2(a-1)*256:0;m=k.createScriptProcessor(d,1,1),m.onaudioprocess=f,l=m.bufferSize,e(),jt.Util.log(\"Audio Processor buffer size: \"+m.bufferSize)}catch(a){jt.Util.error(\"Could not create ScriptProcessorNode. Audio DISABLED!\\n\"+a)}},j=[];this.signals=j;var k,l,m,n=[],o=[],p=Javatari.userPreferences.current,q=-3===Javatari.AUDIO_MONITOR_BUFFER_BASE?p.audioBufferBase:Javatari.AUDIO_MONITOR_BUFFER_BASE,r=!1},jt.LocalStorageSaveStateMedia=function(a){\"use strict\";function b(){return 2===a.netPlayMode}this.connect=function(a){a.connectMedia(this)},this.connectPeripherals=function(a){c=a},this.isSlotUsed=function(a){return void 0!==localStorage[\"javatarisave\"+a]},this.saveState=function(a,b){var c=f(b);return c&&d(\"save\"+a,c)},this.loadState=function(a){var b=e(\"save\"+a);return g(b)},this.saveStateFile=function(a,d){if(!b()){var e=f(d);e&&c.startDownloadBinary((a||\"Javatari SaveState\")+j,e,\"System State file\")}},this.loadStateFile=function(a){if(!b())return g(a)},this.saveResource=function(a,b){try{var c=b&&JSON.stringify(b);return d(\"res\"+a,c)}catch(a){}},this.loadResource=function(a){try{var b=e(\"res\"+a);return b&&JSON.parse(b)}catch(a){}},this.externalStateChange=function(){1===a.netPlayMode&&a.netController.processExternalStateChange()};var c,d=function(a,c){if(b())return!0;try{return localStorage[\"javatari\"+a]=c,!0}catch(a){return jt.Util.error(a),!1}},e=function(a){if(!b())try{return localStorage[\"javatari\"+a]}catch(a){jt.Util.warning(a)}},f=function(a){try{return h+JSON.stringify(a)}catch(a){jt.Util.error(a)}},g=function(a){try{var b;if((b=\"string\"==typeof a?a.substr(0,h.length):jt.Util.int8BitArrayToByteString(a,0,h.length))!==h&&b!==i)return;var c;return(c=\"string\"==typeof a?a.slice(h.length):jt.Util.int8BitArrayToByteString(a,h.length))&&JSON.parse(c)}catch(a){jt.Util.error(a)}},h=String.fromCharCode(0,0)+\"javataristate!\",i=\"javatarijsstate!\",j=\".jst\"},jt.PeripheralControls={SCREEN_ASPECT_PLUS:1,SCREEN_ASPECT_MINUS:2,SCREEN_SCALE_PLUS:3,SCREEN_SCALE_MINUS:4,VIEWPORT_ORIGIN_PLUS:5,VIEWPORT_ORIGIN_MINUS:6,VIEWPORT_SIZE_PLUS:7,VIEWPORT_SIZE_MINUS:8,SCREEN_FULLSCREEN:10,SCREEN_CRT_FILTER:11,SCREEN_CRT_MODE:12,SCREEN_TOGGLE_MENU:13,SCREEN_OPEN_HELP:14,SCREEN_OPEN_ABOUT:15,SCREEN_OPEN_SETTINGS:16,SCREEN_OPEN_QUICK_OPTIONS:17,SCREEN_DEFAULTS:18,SCREEN_CONSOLE_PANEL_TOGGLE:19,SPEAKER_BUFFER_TOGGLE:20,CONSOLE_POWER_TOGGLE:102,CONSOLE_POWER_FRY:103,CONSOLE_LOAD_STATE_FILE:104,CONSOLE_SAVE_STATE_FILE:105,CONSOLE_LOAD_STATE_MENU:106,CONSOLE_SAVE_STATE_MENU:107,P1_CONTROLS_TOGGLE:201,JOYSTICKS_TOGGLE_MODE:202,PADDLES_TOGGLE_MODE:203,TOUCH_TOGGLE_MODE:204,TOUCH_TOGGLE_DIR_BIG:205,TURBO_FIRE_TOGGLE:206,HAPTIC_FEEDBACK_TOGGLE_MODE:207,CAPTURE_SCREEN:304,CARTRIDGE_LOAD_RECENT:40,CARTRIDGE_LOAD_FILE:41,CARTRIDGE_LOAD_URL:42,CARTRIDGE_REMOVE:43,CARTRIDGE_LOAD_DATA_FILE:44,CARTRIDGE_SAVE_DATA_FILE:45,CARTRIDGE_CHOOSE_FORMAT:46,AUTO_LOAD_FILE:47,AUTO_LOAD_URL:48,SCREEN_OPEN_NETPLAY:500},jt.DOMPeripheralControls=function(a){\"use strict\";var b=this;this.connect=function(a){i=a},this.connectPeripherals=function(a,b,c,i){d=a,f=b,e=a.getMonitor(),g=c,h=i},this.getControlReport=function(a){switch(a){case k.PADDLES_TOGGLE_MODE:case k.P1_CONTROLS_TOGGLE:case k.TURBO_FIRE_TOGGLE:case k.TOUCH_TOGGLE_DIR_BIG:case k.HAPTIC_FEEDBACK_TOGGLE_MODE:return g.getControlReport(a);case k.SCREEN_CRT_FILTER:return d.getControlReport(a);case k.SPEAKER_BUFFER_TOGGLE:return f.getControlReport(a)}return{label:\"Unknown\",active:!1}},this.processKey=function(a,c){if(!c)return!1;var d=l[a]||l[a&m];return!!d&&(b.controlActivated(d,!!(a&n),!1),!0)},this.controlActivated=function(b,j,l){if(2===a.netPlayMode&&N.has(b))return a.showOSD(\"Function not available in NetPlay Client mode\",!0,!0);switch(b){case k.CONSOLE_POWER_TOGGLE:g.processControlState(jt.ConsoleControls.POWER,!0);break;case k.CONSOLE_POWER_FRY:g.processControlState(jt.ConsoleControls.POWER_FRY,!0);break;case k.CONSOLE_LOAD_STATE_FILE:h.openFileChooserDialog(o.STATE,!1,!1,!1);break;case k.CONSOLE_SAVE_STATE_FILE:g.processControlState(jt.ConsoleControls.SAVE_STATE_FILE,!0);break;case k.CONSOLE_LOAD_STATE_MENU:d.openSaveStateDialog(!1);break;case k.CONSOLE_SAVE_STATE_MENU:d.openSaveStateDialog(!0);break;case k.CARTRIDGE_LOAD_RECENT:c()||d.openCartridgeChooserDialog(!1,j,l);break;case k.CARTRIDGE_LOAD_FILE:c()||h.openFileChooserDialog(o.ROM,j,l,!1);break;case k.CARTRIDGE_LOAD_URL:c()||h.openURLChooserDialog(o.ROM,j,l);break;case k.CARTRIDGE_REMOVE:c()||i.insert(null,!1);break;case k.CARTRIDGE_LOAD_DATA_FILE:case k.CARTRIDGE_SAVE_DATA_FILE:break;case k.CARTRIDGE_CHOOSE_FORMAT:c()||d.openCartridgeFormatDialog(j);break;case k.AUTO_LOAD_FILE:c()||h.openFileChooserDialog(o.AUTO,j,l,!1);break;case k.AUTO_LOAD_URL:c()||h.openURLChooserDialog(o.AUTO,j,l,!1);break;case k.SCREEN_CRT_MODE:e.crtModeToggle();break;case k.SCREEN_CRT_FILTER:e.crtFilterToggle();break;case k.SCREEN_FULLSCREEN:e.fullscreenToggle();break;case k.SCREEN_DEFAULTS:g.processControlState(jt.ConsoleControls.DEFAULTS,!0),e.setDefaults();break;case k.SCREEN_TOGGLE_MENU:d.toggleMenuByKey();break;case k.SCREEN_OPEN_HELP:d.openHelp();break;case k.SCREEN_OPEN_ABOUT:d.openAbout();break;case k.SCREEN_OPEN_SETTINGS:if(j)return this.controlActivated(k.SCREEN_DEFAULTS);d.openSettings();break;case k.SCREEN_OPEN_QUICK_OPTIONS:d.openQuickOptionsDialog();break;case k.SCREEN_CONSOLE_PANEL_TOGGLE:d.toggleConsolePanel();break;case k.SCREEN_OPEN_NETPLAY:d.openNetPlayDialog();break;case k.P1_CONTROLS_TOGGLE:g.toggleP1ControlsMode();break;case k.JOYSTICKS_TOGGLE_MODE:g.toggleGamepadMode();break;case k.PADDLES_TOGGLE_MODE:g.togglePaddleMode();break;case k.TOUCH_TOGGLE_MODE:g.toggleTouchControlsMode();break;case k.TOUCH_TOGGLE_DIR_BIG:g.toggleTouchDirBig();break;case k.TURBO_FIRE_TOGGLE:g.toggleTurboFireSpeed();break;case k.HAPTIC_FEEDBACK_TOGGLE_MODE:g.toggleHapticFeedback();break;case k.CAPTURE_SCREEN:d.saveScreenCapture();break;case k.SPEAKER_BUFFER_TOGGLE:f.toggleBufferBaseSize();break;case k.VIEWPORT_ORIGIN_MINUS:e.viewportOriginDecrease();break;case k.VIEWPORT_ORIGIN_PLUS:e.viewportOriginIncrease()}if(!M)switch(b){case k.SCREEN_ASPECT_MINUS:e.displayAspectDecrease();break;case k.SCREEN_ASPECT_PLUS:e.displayAspectIncrease();break;case k.SCREEN_SCALE_MINUS:e.displayScaleDecrease();break;case k.SCREEN_SCALE_PLUS:e.displayScaleIncrease();break;case k.VIEWPORT_SIZE_MINUS:e.viewportSizeDecrease();break;case k.VIEWPORT_SIZE_PLUS:e.viewportSizeIncrease()}};var c=function(){return Javatari.CARTRIDGE_CHANGE_DISABLED?(e.showOSD(\"Cartridge change is disabled!\",!0,!0),!0):2===a.netPlayMode&&(e.showOSD(\"Cartridge change is disabled in NetPlay Client mode!\",!0,!0),!0)};this.mediaChangeDisabledWarning=c;var d,e,f,g,h,i,j=function(){var a=jt.DOMKeys;l[x]=k.CARTRIDGE_LOAD_RECENT,l[x|a.ALT]=k.CARTRIDGE_LOAD_RECENT,l[y]=k.AUTO_LOAD_URL,l[y|a.ALT]=k.AUTO_LOAD_URL,l[z]=k.CARTRIDGE_REMOVE,l[z|a.ALT]=k.CARTRIDGE_REMOVE,l[L]=k.CONSOLE_SAVE_STATE_FILE,l[L|a.ALT]=k.CONSOLE_SAVE_STATE_FILE,l[A|a.ALT]=k.P1_CONTROLS_TOGGLE,l[C|a.ALT]=k.PADDLES_TOGGLE_MODE,l[B|a.ALT]=k.JOYSTICKS_TOGGLE_MODE,l[D|a.ALT]=k.TOUCH_TOGGLE_MODE,l[E|a.ALT]=k.TURBO_FIRE_TOGGLE,l[G|a.ALT]=k.SCREEN_CRT_FILTER,l[F|a.ALT]=k.SCREEN_CRT_MODE,l[H|a.ALT]=k.SCREEN_OPEN_SETTINGS,l[I|a.ALT]=k.SCREEN_OPEN_QUICK_OPTIONS,l[J|a.ALT]=k.SCREEN_CONSOLE_PANEL_TOGGLE,l[K|a.ALT]=k.SCREEN_FULLSCREEN,l[q|a.CONTROL|a.ALT]=k.SCREEN_SCALE_MINUS,l[s|a.CONTROL|a.ALT]=k.SCREEN_SCALE_PLUS,l[p|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_MINUS,l[r|a.CONTROL|a.ALT]=k.SCREEN_ASPECT_PLUS,l[q|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_MINUS,l[s|a.SHIFT|a.CONTROL]=k.VIEWPORT_ORIGIN_PLUS,l[p|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_MINUS,l[r|a.SHIFT|a.CONTROL]=k.VIEWPORT_SIZE_PLUS,l[t]=k.SCREEN_TOGGLE_MENU,l[u]=k.SCREEN_DEFAULTS,\nl[u|a.ALT]=k.SCREEN_DEFAULTS,l[v|a.ALT]=k.CAPTURE_SCREEN,l[w|a.ALT]=k.SPEAKER_BUFFER_TOGGLE},k=jt.PeripheralControls,l={},m=~jt.DOMKeys.SHIFT,n=jt.DOMKeys.SHIFT,o=jt.FileLoader.OPEN_TYPE,p=jt.DOMKeys.VK_LEFT.c,q=jt.DOMKeys.VK_UP.c,r=jt.DOMKeys.VK_RIGHT.c,s=jt.DOMKeys.VK_DOWN.c,t=jt.DOMKeys.VK_CONTEXT.c,u=jt.DOMKeys.VK_BACKSPACE.c,v=jt.DOMKeys.VK_G.c,w=jt.DOMKeys.VK_A.c,x=jt.DOMKeys.VK_F5.c,y=jt.DOMKeys.VK_F6.c,z=jt.DOMKeys.VK_F7.c,A=jt.DOMKeys.VK_K.c,B=jt.DOMKeys.VK_J.c,C=jt.DOMKeys.VK_L.c,D=jt.DOMKeys.VK_N.c,E=jt.DOMKeys.VK_H.c,F=jt.DOMKeys.VK_R.c,G=jt.DOMKeys.VK_T.c,H=jt.DOMKeys.VK_Y.c,I=jt.DOMKeys.VK_U.c,J=jt.DOMKeys.VK_S.c,K=jt.DOMKeys.VK_ENTER.c,L=(jt.DOMKeys.VK_F1.c,jt.DOMKeys.VK_F8.c),M=Javatari.SCREEN_RESIZE_DISABLED,N=new Set([k.CONSOLE_POWER_FRY,k.CONSOLE_LOAD_STATE_FILE,k.CONSOLE_SAVE_STATE_FILE,k.CONSOLE_LOAD_STATE_MENU,k.CONSOLE_SAVE_STATE_MENU,k.CARTRIDGE_LOAD_RECENT,k.CARTRIDGE_LOAD_FILE,k.CARTRIDGE_LOAD_URL,k.CARTRIDGE_REMOVE,k.CARTRIDGE_LOAD_DATA_FILE,k.CARTRIDGE_SAVE_DATA_FILE,k.AUTO_LOAD_FILE,k.AUTO_LOAD_URL]);!function(){j()}()},jt.NetServer=function(a){\"use strict\";function b(){void 0===v&&(v=setInterval(p,3e4));var a={sessionControl:\"createSession\",sessionType:\"javatari\",wsOnly:D,queryVariables:[\"RTC_CONFIG\",\"RTC_DATA_CHANNEL_CONFIG\"]};u&&(a.sessionID=u),s.send(JSON.stringify(a))}function c(){r.stopSession(!0,v?\"NetPlay Session stopped: Connection lost\":\"NetPlay: Connection error\")}function d(a){var b=JSON.parse(a.data);if(b.javatariUpdate)return o(b.javatariUpdate);if(b.sessionControl)switch(b.sessionControl){case\"sessionCreated\":return void e(b);case\"clientJoined\":return void f(b);case\"clientLeft\":return void g(b);case\"createError\":return void r.stopSession(!0,\"NetPlay: \"+b.errorMessage)}else b.clientSDP&&h(b)}function e(b){try{w=JSON.parse(b.queriedVariables.RTC_CONFIG||\"{}\")}catch(a){}try{x=JSON.parse(b.queriedVariables.RTC_DATA_CHANNEL_CONFIG||\"{}\")}catch(a){}t=b.sessionID,z.netClearControlsToSend(),a.enterNetServerMode(r),a.showOSD('NetPlay session \"'+b.sessionID+'\" started',!0),jt.Util.log('NetPlay session \"'+b.sessionID+'\" started')}function f(b){var c={nick:b.clientNick,justJoined:!0,wsOnly:D||!!b.wsOnly};if(C[c.nick]=c,a.showOSD('NetPlay client \"'+c.nick+'\" joined',!0),jt.Util.log('NetPlay client \"'+c.nick+'\" joined'),!c.wsOnly){var d=new RTCPeerConnection(w);c.rtcConnection=d,d.onicecandidate=function(a){a.candidate||(jt.Util.log(\"Server SDP for client \"+c.nick+\":\",d.localDescription),s.send(JSON.stringify({toClientNick:c.nick,serverSDP:d.localDescription})))};var e=d.createDataChannel(\"dataChannel\",x);c.dataChannel=e,e.onopen=function(a){i(c,a)},e.onclose=function(a){j(c,a)},e.onmessage=function(a){k(c,a)},d.createOffer().then(function(a){return d.setLocalDescription(a)}).catch(function(a){l(c,a)})}}function g(a){var b=C[a.clientNick];b&&n(b,!0,!1,'NetPlay client \"'+b.nick+'\" left')}function h(a){var b=C[a.fromClientNick];b&&(jt.Util.log(\"Client SDP from client \"+b.nick+\":\",a.clientSDP),b.rtcConnection.setRemoteDescription(new RTCSessionDescription(a.clientSDP)).catch(l))}function i(a,b){jt.Util.log(\"Client \"+a.nick+\" dataChannel open\"),a.dataChannelActive=!0}function j(a,b){jt.Util.error(\"NetPlay Client \"+a.nick+\" dataChannel closed\"),n(a,!0,!0,'NetPlay client \"'+a.nick+'\" dropped: P2P connection lost')}function k(a,b){o(JSON.parse(b.data))}function l(a,b){jt.Util.error(\"NetPlay Client \"+a.nick+\" RTC error:\",b),n(a,!0,!0,'NetPlay client \"'+a.nick+'\" dropped: P2P connection error')}function m(){for(var a in C)n(C[a],!1)}function n(b,c,d,e){c&&(a.showOSD(e||'NetPlay client \"'+b.nick+'\" left',!0,d),(d?jt.Util.error:jt.Util.log)(e||'NetPlay client \"'+b.nick+'\" left')),b.dataChannel&&(b.dataChannel.onopen=b.dataChannel.onclose=b.dataChannel.onmessage=void 0,b.dataChannel.close()),b.rtcConnection&&(b.rtcConnection.onicecandidate=void 0,b.rtcConnection.close()),delete C[b.nick]}function o(a){a.c&&z.netServerProcessControlsChanges(a.c)}function p(){try{s.send('{ \"sessionControl\": \"keep-alive\" }')}catch(a){jt.Util.error(\"NetPlay error sending keep-alive\"),r.stopSession(!0,\"NetPlay Session stopped: connection error\")}}function q(a,b){var c=b.length;if(c<E)return a.send(b);for(var d=0,e=0;;){var f=b.substr(e,F);if(e+=F,d++,!(e<c))return void a.send(H+f);a.send(G+f)}}var r=this;this.startSession=function(e){u=e?(\"\"+e).trim():void 0;var f;u&&\"@\"===u[u.length-1]?(u=u.substr(0,u.length-1),f=!0):f=!1,u&&t===u&&D===f||(t&&this.stopSession(!0),a.enterNetPendingMode(this),D=f,s?b():(s=new WebSocket(\"wss://\"+Javatari.SERVER_ADDRESS),s.onmessage=d,s.onopen=b,s.onclose=c))},this.stopSession=function(b,c){clearInterval(v),v=void 0,s&&(s.onmessage=s.onopen=s.onclose=void 0,s.close(),s=void 0),b?m():setTimeout(m,300),a.showOSD(c||'NetPlay Session \"'+t+'\" stopped',!0,b),(b?jt.Util.error:jt.Util.log)(c||'NetPlay Session \"'+t+'\" stopped'),t=void 0,a.enterStandaloneMode()},this.getSessionID=function(){return t},this.netVideoClockPulse=function(){y.getConsoleControlsSocket().controlsClockPulse();var b=y.videoClockPulseGetNextPulldowns();y.videoClockPulseApplyPulldowns(b);var c,d,e;for(var f in C){var g=C[f];if(g.wsOnly||g.dataChannelActive){if(g.justJoined||B){if(g.justJoined=!1,!d){var h={s:y.saveState(!0),cm:{p1:a.consoleControls.isP1ControlsMode(),pd:a.consoleControls.isPaddleMode()}};d=JSON.stringify(h)}c=d}else e||(A.c=z.netGetControlsToSend(),A.v=b,e=JSON.stringify(A)),c=e;try{g.dataChannelActive?q(g.dataChannel,c):s.send(JSON.stringify({toClientNick:g.nick,javatariUpdate:c}))}catch(a){n(g,!0,!0,'NetPlay client \"'+g.nick+'\" dropped: P2P error sending data')}}}B=!1,z.netClearControlsToSend()},this.processExternalStateChange=function(){B=!0};var s,t,u,v,w,x,y=a.console,z=a.consoleControls,A={v:0,c:void 0},B=!1,C={},D=!1,E=16300,F=16200,G=\"#@FrgS@#\",H=\"#@FrgE@#\"},jt.NetClient=function(a){\"use strict\";function b(){void 0===v&&(v=setInterval(n,3e4)),q.send(JSON.stringify({sessionControl:\"joinSession\",sessionType:\"javatari\",sessionID:s,clientNick:u,wsOnly:B,queryVariables:[\"RTC_CONFIG\"]}))}function c(){p.leaveSession(!0,v?\"NetPlay session ended: Connection lost\":\"NetPlay: Connection error\")}function d(a){var b=JSON.parse(a.data);if(b.javatariUpdate)return m(JSON.parse(b.javatariUpdate));if(b.sessionControl)switch(b.sessionControl){case\"sessionJoined\":return void e(b);case\"sessionDestroyed\":return void p.leaveSession(!1,'NetPlay Session \"'+r+'\" ended');case\"joinError\":return void p.leaveSession(!0,\"NetPlay: \"+b.errorMessage)}else b.serverSDP&&g(b)}function e(a){if(r=a.sessionID,t=a.clientNick,D=B||a.wsOnly,C=!0,D)return f();try{w=JSON.parse(a.queriedVariables.RTC_CONFIG||\"{}\")}catch(a){}x=new RTCPeerConnection(w),x.onicecandidate=function(a){a.candidate||q.send(JSON.stringify({clientSDP:x.localDescription}))},x.ondatachannel=function(a){y=a.channel,y.onopen=h,y.onclose=i,y.onmessage=j}}function f(){a.showOSD('NetPlay Session \"'+r+'\" joined as \"'+t+'\"',!0),jt.Util.log('NetPlay Session \"'+r+'\" joined as \"'+t+'\"'),A.netClearControlsToSend(),a.enterNetClientMode(p)}function g(a){x.setRemoteDescription(new RTCSessionDescription(a.serverSDP)).then(function(){return x.createAnswer()}).then(function(a){return x.setLocalDescription(a)}).catch(k)}function h(a){E=!0,F=\"\",f()}function i(a){jt.Util.error(\"NetPlay dataChannel closed\"),p.leaveSession(!0,\"NetPlay session ended: P2P connection lost\")}function j(a){var b=o(a);b&&m(JSON.parse(b))}function k(a){jt.Util.error(\"NetPlay RTC error:\",a),p.leaveSession(!0,\"NetPlay session ended: P2P connection error\")}function l(){y&&(y.onpen=y.onclose=y.onmessage=void 0,y.close(),y=void 0),x&&(x.onicecandidate=x.ondatachannel=void 0,x.close(),x=void 0)}function m(b){b.s?(z.loadState(b.s),C&&(a.consoleControls.setP1ControlsAndPaddleMode(!b.cm.p1,b.cm.pd),C=!1)):(b.c&&A.netClientApplyControlsChanges(b.c),z.videoClockPulseApplyPulldowns(b.v)),z.getConsoleControlsSocket().controlsClockPulse();var c={\nc:A.netGetControlsToSend()};E?y.send(JSON.stringify(c)):q.send(JSON.stringify({javatariUpdate:c})),A.netClearControlsToSend()}function n(){try{q.send('{ \"sessionControl\": \"keep-alive\" }')}catch(a){jt.Util.error(\"NetPlay error sending keep-alive\"),p.leaveSession(!0,\"NetPlay session ended: Connection error\")}}function o(a){var b=a.data,c=b.substr(0,8);return c!==G&&c!==H?(F=\"\",b):(F+=b.substr(8),c===H?(b=F,F=\"\",b):void 0)}var p=this;this.joinSession=function(e,f){if(!(s=(\"\"+e).trim()))return a.showOSD(\"Must enter Session Name for joining NetPlay session\",!0,!0);var g;\"@\"===s[s.length-1]?(s=s.substr(0,s.length-1),g=!0):g=!1,u=f,B=g,r===s&&t===u&&D===B||(r&&this.leaveSession(!0),a.enterNetPendingMode(this),q?b():(q=new WebSocket(\"wss://\"+Javatari.SERVER_ADDRESS),q.onmessage=d,q.onopen=b,q.onclose=c))},this.leaveSession=function(b,c){clearInterval(v),v=void 0,r=t=void 0,D=!1,q&&(q.onpen=q.onclose=q.onmessage=void 0,q.close(),q=void 0),y&&(y.onpen=y.onclose=y.onmessage=void 0),x&&(x.onicecandidate=x.ondatachannel=void 0),E=!1,F=\"\",b?l():setTimeout(l,300),a.showOSD(c||\"NetPlay session ended\",!0,b),(b?jt.Util.error:jt.Util.log)(c||\"NetPlay session ended\"),a.enterStandaloneMode()},this.getSessionID=function(){return r},this.netVideoClockPulse=function(){};var q,r,s,t,u,v,w,x,y,z=a.console,A=a.consoleControls,B=!1,C=!1,D=!1,E=!1,F=\"\",G=\"#@FrgS@#\",H=\"#@FrgE@#\"},jt.NetClient.initKeepAlive=function(){Javatari.SERVER_ADDRESS&&Javatari.SERVER_KEEPALIVE&&jt.NetClient.sendKeepAlive()},jt.NetClient.sendKeepAlive=function(){fetch(\"https://\"+Javatari.SERVER_ADDRESS+\"/keepalive\",{mode:\"no-cors\"}).catch(function(a){jt.Util.error(\"Sending KeepAlive: \",a)}).finally(function(){Javatari.SERVER_KEEPALIVE>0&&setTimeout(jt.NetClient.sendKeepAlive,Javatari.SERVER_KEEPALIVE)})},jt.Room=function(a,b){\"use strict\";function c(a){var b=Javatari.AUTO_POWER_ON_DELAY;b>=0&&JavatariFullScreenSetup.shouldStartInFullScreen()&&(b+=1400),b-=Date.now()-i,b<1&&(b=1),setTimeout(a,b)}function d(){b&&(h.console.getCartridgeSocket().inserted()?h.console.userPowerOn():Javatari.CARTRIDGE_SHOW_RECENT&&!Javatari.CARTRIDGE_CHANGE_DISABLED&&h.screen.openCartridgeChooserDialog(!0))}function e(){h.mainVideoClock=new jt.Clock(h.mainVideoClockPulse)}function f(){h.peripheralControls=new jt.DOMPeripheralControls(h),h.consoleControls=new jt.DOMConsoleControls(h,h.peripheralControls),h.fileDownloader=new jt.FileDownloader,h.stateMedia=new jt.LocalStorageSaveStateMedia(h),h.recentROMs=new jt.RecentStoredROMs,h.fileLoader=new jt.FileLoader(h,h.recentROMs,h.peripheralControls),h.speaker=new jt.WebAudioSpeaker(a),h.screen=new jt.CanvasDisplay(h,a),h.fileDownloader.connectPeripherals(h.screen),h.screen.connectPeripherals(h.recentROMs,h.fileLoader,h.fileDownloader,h.consoleControls,h.peripheralControls,h.stateMedia),h.speaker.connectPeripherals(h.screen),h.consoleControls.connectPeripherals(h.screen),h.stateMedia.connectPeripherals(h.fileDownloader),h.peripheralControls.connectPeripherals(h.screen,h.speaker,h.consoleControls,h.fileLoader)}function g(){h.console=new jt.AtariConsole,h.mainVideoClock.connect(h.console.getVideoClockSocket()),h.stateMedia.connect(h.console.getSavestateSocket()),h.fileLoader.connect(h.console),h.screen.connect(h.console),h.speaker.connect(h.console.getAudioSocket()),h.consoleControls.connect(h.console.getConsoleControlsSocket()),h.peripheralControls.connect(h.console.getCartridgeSocket()),h.console.socketsConnected()}var h=this;this.powerOn=function(){h.screen.powerOn(),h.speaker.powerOn(),h.consoleControls.powerOn(),h.setLoading(!0),h.enterStandaloneMode(),i=Date.now()},this.powerOff=function(){h.console.powerOff(),h.consoleControls.powerOff(),h.speaker.powerOff(),h.screen.powerOff()},this.getNetServer=function(){return this.netServer||(this.netServer=new jt.NetServer(this)),this.netServer},this.getNetClient=function(){return this.netClient||(this.netClient=new jt.NetClient(this)),this.netClient},this.setLoading=function(a){this.isLoading!==a&&(this.isLoading=a,this.console.setLoading(this.isLoading),this.screen.setLoading(this.isLoading))},this.start=function(a){this.mainVideoClock.detectHostNativeFPSAndCallback(function(b){h.console.vSynchSetSupported(b>0),c(function(){h.setLoading(!1),h.screen.start(a||d)})})},this.showOSD=function(a,b,c){this.console.showOSD(a,b,c)},this.mainVideoClockPulse=function(){h.console.isSystemPaused()||(h.netController?h.netController.netVideoClockPulse():(h.console.getConsoleControlsSocket().controlsClockPulse(),h.console.videoClockPulse()))},this.enterStandaloneMode=function(){var a=this.netPlayMode;this.netPlayMode=0,this.netController=void 0,h.mainVideoClock.go(),this.netPlayStateBeforeClientMode&&(this.console.loadState(this.netPlayStateBeforeClientMode),this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1,this.netPlayControlsModeBeforeClientMode.pd),this.netPlayStateBeforeClientMode=void 0),a!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(a)},this.enterNetServerMode=function(a){var b=this.netPlayMode;this.netPlayMode=1,this.netController=a,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetClientMode=function(a){var b=this.netPlayMode;this.netPlayMode=2,this.netController=a,h.mainVideoClock.pause(),this.netPlayStateBeforeClientMode=this.console.saveState(!0),this.netPlayControlsModeBeforeClientMode={p1:this.consoleControls.isP1ControlsMode(),pd:this.consoleControls.isPaddleMode()},b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.enterNetPendingMode=function(a){var b=this.netPlayMode;this.netPlayMode=a===this.netServer?-1:-2,this.netController=void 0,h.mainVideoClock.go(),b!==this.netPlayMode&&this.screen.roomNetPlayStatusChangeUpdate(b)},this.mainVideoClock=null,this.console=null,this.screen=null,this.speaker=null,this.consoleControls=null,this.fileDownloader=null,this.stateMedia=null,this.recentROMs=null,this.fileLoader=null,this.peripheralControls=null,this.netPlayMode=0,this.netController=void 0,this.netServer=void 0,this.netClient=void 0,this.netPlayStateBeforeClientMode=void 0,this.netPlayControlsModeBeforeClientMode=void 0,this.isLoading=!1;var i;this.runFramesAtTopSpeed=function(a){this.mainVideoClock.pause();for(var b=jt.Util.performanceNow(),c=0;c<a;c++)h.mainVideoClockPulse();var d=jt.Util.performanceNow()-b;jt.Util.log(\"Done running \"+a+\" frames in \"+(0|d)+\" ms\"),jt.Util.log((a/(d/1e3)).toFixed(2)+\"  frames/sec\"),this.mainVideoClock.go()},function(){e(),f(),g(),Javatari.userROMFormats.init()}()},Javatari.userPreferences={},Javatari.userPreferences.currentVersion=1,Javatari.userPreferences.compatibleVersions=new Set([1]),Javatari.userPreferences.defaults=function(){\"use strict\";var a=jt.DOMKeys;return{joystickKeys:[{left:a.VK_LEFT,up:a.VK_UP,right:a.VK_RIGHT,down:a.VK_DOWN,button:a.VK_SPACE,buttonT:a.VK_DELETE},{left:a.VK_F,up:a.VK_T,right:a.VK_H,down:a.VK_G,button:a.VK_A,buttonT:a.VK_PERIOD}],joystickGamepads:[{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3},{button:0,buttonT:1,select:8,reset:9,pause:4,fastSpeed:7,slowSpeed:6,device:-1,xAxis:0,xAxisSig:1,yAxis:1,yAxisSig:1,paddleAxis:0,paddleAxisSig:1,paddleCenter:.3,paddleSens:.75,deadzone:.3}],touch:{directionalBig:!1},hapticFeedback:!0,turboFireSpeed:6,vSynch:1,crtFilter:-1,audioBufferBase:-1,netPlaySessionName:\"\",netPlayNick:\"\"}},Javatari.userPreferences.load=function(){var a;try{a=JSON.parse(localStorage.javatari4prefs||\"{}\"),a.version&&delete a.version}catch(a){}if(!a||!Javatari.userPreferences.compatibleVersions.has(a.prefsVersion)){a={}}var b=Javatari.userPreferences.defaults();for(var c in b)void 0===a[c]&&(a[c]=b[c]);a.prefsVersion=Javatari.userPreferences.currentVersion,\nJavatari.userPreferences.current||(Javatari.userPreferences.current={});var d=Javatari.userPreferences.current;for(c in a)d[c]=a[c];Javatari.userPreferences.isDirty=!1},Javatari.userPreferences.setDefaultJoystickKeys=function(){Javatari.userPreferences.current.joystickKeys=Javatari.userPreferences.defaults().joystickKeys,Javatari.userPreferences.setDirty()},Javatari.userPreferences.save=function(){if(Javatari.userPreferences.isDirty)try{Javatari.userPreferences.current.javatariVersion=Javatari.VERSION,localStorage.javatari4prefs=JSON.stringify(Javatari.userPreferences.current),Javatari.userPreferences.isDirty=!1,jt.Util.log(\"Preferences saved!\")}catch(a){}},Javatari.userPreferences.setDirty=function(){Javatari.userPreferences.isDirty=!0},Javatari.userROMFormats={init:function(){jt.CartridgeCreator.setUserROMFormats(this),this.userFormats=JSON.parse(localStorage.javatariuserformats||\"{}\")},getForROM:function(a){return this.userFormats[a.info.h]},setForROM:function(a,b,c){a.info.h&&(c?delete this.userFormats[a.info.h]:this.userFormats[a.info.h]=b,localStorage.javatariuserformats=JSON.stringify(this.userFormats))}},jt.Images.embedded=!0,\njt.Images.urls.logo=\"data:image/png;base64,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\",\njt.Images.urls.loading=\"data:image/gif;base64,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\",jt.Images.urls.mouseCursor=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABL0lEQVRYw+3VP0oDQRTH8U8k+AcFFRUFERGLiFjEA1jZTo6RG6T3ArmFR9j0WlpaWBiwsNNyiwgW0Vg4CUPELhMt9guPffumeG9nf/MbvlnEYVmWo3a7PcIO1s2R3aT5KQ6wMo/GC/G5nNTWsYr6PHdgE+fJLjRxhFqMbNSxFr96K6nvYxhr7zE+Y8yUWghhNH5pNBr6/f5ksdfrXeA1xiCbBoqiUBSF6RwN7GIptwh/4wR7UyKduQZ0Op1JIc2xHTVSzzpAt9v9sdBqtczTB/6Mfz/A2AOGOYe4DCGMUqI33OAKl1MmNVsjwhmaIYTrxIBu8YA73OMZb7kG2MFhPPPH2ECJJzzG5iU+ch3DMvnfL/HcDxILztZcctPVo9stxXyYCPBDRUVFRUVFRUa+AB+1YCivg1lPAAAAAElFTkSuQmCC\",\njt.Images.urls.panel=\"data:image/jpeg;base64,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\",\njt.Images.urls.panelSprites=\"data:image/jpeg;base64,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\",\njt.Images.urls.controllers=\"data:image/jpeg;base64,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\",\njt.Images.urls.iconSprites=\"data:image/png;base64,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\",\njt.Images.urls.muteIcon=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAoCAYAAAC4h3lxAAAEwklEQVRYw+2YbWhbZRTH/+fJTdLbuHWsVTc6cK2DtDcJK2GsbAzpUNEPgjAUZYgyFXUZ8wVxm+ua2bjCuo19UDZQRFQCgkw3/CgMi9M6i9Q1uUntRsigww6duOFi3tr790smMaTvXbLq/t+S53Dv+T3nPOc55wK39R9UOp22DQ4OLq/Eu9RCP9A0zVXJZLK7pqbm8UUHEI/H7xeRd0juAVBXCQBtIR6SSCRqM5nMswACAFoAsFLpqi1AyhjZbDYAYBuAWhEByYoBzDmFOjs7VTQa3SIi75IMiEhtNQrGnCJw7ty5ervd/hKA7SLSWM2KN2uAWCy2QUQCJJ8UEQ1Vllamhkvxb13XCQD9/f32ZcuWPWVZ1g4AfhGRub50cHDwDpfLNe52uzMzsR8ZGVnhdrsvl1v7lxORSKTJZrO9CGApAJC8PD4+fkzTtOsishfAKyIybXkkaYnIm4ZhHCpz6O9USnWRTGWz2R6/3399mog/TPIZACe8Xu/nU0ZA07R6AM+RrAcAEbmgadqHTqeTuVzuoZk4P93ZAdBFcgeACYfDwYGBgZ7169enJqlwD4pIUEQ2kPTE43HLMIyT01YhKagkQjIf503TdDocjh1KqYCIKBGxi8jrLpdrT39/f+0kl2IQwIaCTz6SwVgs5r+prcRk8nq9WcuyRi3L+qVooxwA3qirq9vd19enF6VNB8mgiGwqSksCMEn+uuA38SwgPopGoxrJ/TfKr4g4Se5qaGiwTNM8SLK9sPP3FTuvlPqUZMjj8VyqGgAArlmz5oNkMqkKECsLEDUisgvAKgD3Athc7DzJz0Qk1NraeuGm9EKzka7rTKfT71+8eFFZlrVfRO4uLNWS3CYitmLnReQEyVBLS8tIRdrpmUKEw+H3ABwA8FvRmbCV5PxJACGv1xuv2DwwU/X09FjNzc3HAXwMIFeucGma9rZhGGZFB5pZtuFrSbYAcJQp5ffk8/nN6XRa3ZIA0Wh0LYD9IvLIJCZLRWRfIpHY2dnZqW4pgKGhIZ9SKqiUerSkBTlPMlUUheUism/r1q2B0h6tagCmaRqapgVFZEvJ0leWZT1P8gCAP4sgGgB0JRKJ7eUgKgoQiURalFJBEXmsZOdPAwj5fL4zuVzu6MTERG9JJO4Ska5kMvlCaUtTMYBkMulSSj0N4ImSpa+VUt2GYXwHAH6/PyciR0geIpkuglhBcq9pmu1VAWhqakqJyFkAPxXt/DckQ62trWdK+6YrV64cBnCYZKZgOwHgi1Qq9fNUACR5meQYyTERGSv5f17Dusfj+ZJkiGSE5Lci0u3xePrK2XZ0dKSvXbvWC+BIIRLH8vn8gfb29quTthKjo6NDjY2N/4TYsiz6fL5LhcN3FECO5BYRUfOAOBWLxa4CyBqG8f1Uths3bvxrYGDg4JIlS37I5/Nn29rafp9yIpvBQLLSbrcHCsN8/Vwmsqp+Vmlraxtrbm5+i+SrAM5W8vvPgl1kuq5PeL3eMICdJD8BkF9UADdkGMaPmUzmtcLwMbroAABg3bp1f6xevbqX5MskT1cjpeZ9D+i6To/Hc0rTtJ0icrz48lkUADfkdruHnU7nLgC7AZzHYtbw8PADkUhk06KGCIfDNtzW/0B/A2/7MX7SZ6/PAAAAAElFTkSuQmCC\",jt.Configurator={applyConfig:function(){var a={};Javatari.ALLOW_URL_PARAMETERS&&(a=function(){for(var a,b=(window.location.search||\"\").split(\"+\").join(\" \"),c=/[?&]?([^=]+)=([^&]*)/g,d={};a=c.exec(b);){var e=decodeURIComponent(a[1]).trim().toUpperCase();e=jt.Configurator.abbreviations[e]||e,d[e]=decodeURIComponent(a[2]).trim()}return d}(),a.PRESETS&&(this.applyParam(\"PRESETS\",a.PRESETS),delete a.PRESETS)),a.RESET&&this.applyReset(),this.applyPresets(Javatari.PRESETS);for(var b in a)this.applyParam(b,a[b]);!function(){Javatari.AUTO_POWER_ON_DELAY|=0,Javatari.CARTRIDGE_CHANGE_DISABLED=!0===Javatari.CARTRIDGE_CHANGE_DISABLED||\"true\"==Javatari.CARTRIDGE_CHANGE_DISABLED,Javatari.SCREEN_RESIZE_DISABLED=!0===Javatari.SCREEN_RESIZE_DISABLED||\"true\"==Javatari.SCREEN_RESIZE_DISABLED,Javatari.SCREEN_FULLSCREEN_MODE=Javatari.SCREEN_FULLSCREEN_MODE|=0,Javatari.SCREEN_FILTER_MODE|=0,Javatari.SCREEN_CRT_MODE|=0,Javatari.SCREEN_DEFAULT_SCALE=parseFloat(Javatari.SCREEN_DEFAULT_SCALE),Javatari.SCREEN_DEFAULT_ASPECT=parseFloat(Javatari.SCREEN_DEFAULT_ASPECT),Javatari.SCREEN_CANVAS_SIZE=0|Javatari.SCREEN_CANVAS_SIZE,Javatari.SCREEN_CONTROL_BAR|=0,Javatari.SCREEN_FORCE_HOST_NATIVE_FPS|=0,Javatari.SCREEN_VSYNCH_MODE|=0,Javatari.AUDIO_MONITOR_BUFFER_BASE|=0,Javatari.AUDIO_MONITOR_BUFFER_SIZE|=0,Javatari.AUDIO_SIGNAL_BUFFER_RATIO=parseFloat(Javatari.AUDIO_SIGNAL_BUFFER_RATIO),Javatari.AUDIO_SIGNAL_ADD_FRAMES|=0}(),Javatari.PAGE_BACK_CSS&&(document.body.style.background=Javatari.PAGE_BACK_CSS)},applyPresets:function(a){for(var b=(a||\"\").trim().toUpperCase().split(\",\"),c=0;c<b.length;c++)this.applyPreset(b[c].trim())},applyPreset:function(a){if(a){var b=Javatari.PRESETS_CONFIG[a];if(b){jt.Util.log(\"Applying preset: \"+a);for(var c in b){var d=c.trim().toUpperCase();\"_\"!==d[0]?this.applyParam(d,b[c]):\"_INCLUDE\"===d&&this.applyPresets(b[c])}}else jt.Util.warning('Preset \"'+a+'\" not found, skipping...')}},applyParam:function(a,b){if(a.indexOf(\".\")<0)Javatari[a]=b;else{for(var c=Javatari,d=a.split(\".\"),e=0;e<d.length-1;++e)c=c[d[e]];c[d[d.length-1]]=b}},mediaURLSpecs:function(){var a=jt.FileLoader.OPEN_TYPE;return[Javatari.AUTODETECT_URL&&{url:Javatari.AUTODETECT_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.AUTO,0,!0,!1)}},Javatari.CARTRIDGE_URL&&{url:Javatari.CARTRIDGE_URL,onSuccess:function(b){Javatari.room.fileLoader.loadFromContent(b.url,b.content,a.ROM,0,!0,!1,Javatari.CARTRIDGE_FORMAT)}}]},applyReset:function(){jt.Util.warning(\"Removing all data saved on this client\");for(var a in localStorage)0===a.indexOf(\"javatari\")&&delete localStorage[a]},abbreviations:{P:\"PRESETS\",PRESET:\"PRESETS\",ROM:\"CARTRIDGE_URL\",CART:\"CARTRIDGE_URL\",FORMAT:\"CARTRIDGE_FORMAT\",ROM_FORMAT:\"CARTRIDGE_FORMAT\",CART_FORMAT:\"CARTRIDGE_FORMAT\",ANY:\"AUTODETECT_URL\",AUTO:\"AUTODETECT_URL\",AUTODETECT:\"AUTODETECT_URL\",STATE:\"STATE_URL\",SAVESTATE:\"STATE_URL\",JOIN:\"NETPLAY_JOIN\",NICK:\"NETPLAY_NICK\",VERSION:\"VERSION_CHANGE_ATTEMPTED\"}},Javatari.start=function(a){\"use strict\";if(delete Javatari.start,delete Javatari.preLoadImagesAndStart,Javatari.userPreferences.load(),!Javatari.screenElement&&(Javatari.screenElement=document.getElementById(Javatari.SCREEN_ELEMENT_ID),!Javatari.screenElement))throw new Error('Javatari cannot be started. HTML document is missing screen element with id \"'+Javatari.SCREEN_ELEMENT_ID+'\"');jt.Configurator.applyConfig(),void 0===a&&(a=Javatari.AUTO_POWER_ON_DELAY>=0),Javatari.room=new jt.Room(Javatari.screenElement,a),Javatari.room.powerOn(),jt.Util.log(\"version \"+Javatari.VERSION+\" started\"),jt.CartridgeDatabase.uncompress(),jt.NetClient.initKeepAlive();var b=Javatari.NETPLAY_JOIN;if(!b&&Javatari.STATE_URL)new jt.MultiDownloader([{url:Javatari.STATE_URL}],function(a){Javatari.room.start(function(){Javatari.room.fileLoader.loadFromContent(a[0].url,a[0].content,jt.FileLoader.OPEN_TYPE.STATE,0,!1)})}).start();else{var c=b?[]:jt.Configurator.mediaURLSpecs();new jt.MultiDownloader(c,function(){Javatari.room.start(b?function(){Javatari.room.getNetClient().joinSession(b,Javatari.NETPLAY_NICK)}:void 0)}).start()}Javatari.shutdown=function(){Javatari.room&&Javatari.room.powerOff(),jt.Util.log(\"shutdown\")}},Javatari.preLoadImagesAndStart=function(){function a(a){Javatari.start&&Javatari.AUTO_START&&(a||b&&0===c)&&Javatari.start()}var b=!1,c=jt.Images.embedded?0:jt.Images.count;if(document.addEventListener(\"DOMContentLoaded\",function(){b=!0,a(!1)}),c>0)for(var d in jt.Images.urls){var e=new Image;e.src=jt.Images.urls[d],e.onload=function(){c--,a(!1)}}window.addEventListener(\"load\",function(){a(!0)})},window.applicationCache&&(window.applicationCache.status===window.applicationCache.UPDATEREADY?onUpdateReady():window.applicationCache.addEventListener(\"updateready\",onUpdateReady)),Javatari.VERSION=\"5.0.4\",Javatari.preLoadImagesAndStart();\n        </script>\n\n        <div id=\"topbar\">\n            <div class=\"container\">\n                <a id=\"logo\" style=\"background-image: url('data:image/png;base64,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');\" href=\"https://javatari.org\" title=\"The online Atari 2600 emulator\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,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');\" href=\"https://github.com/ppeccin/javatari.js\" title=\"Project Homepage on GitHub\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEBElEQVRoQ+1Z0VEbMRDVHj+2pJlABSEVhFSAU0GgAuwKgAoIHZgKQioIVBCoIFAB0AGZOfn48W3mOTrP2dbppOOMPYw14y/vrfbtW612VyTe2aJ3hkdsAK07oxuGNgx5PMDM28aYb0KIPfsTRPQshLhj5mut9V2sA1cScgAyGo2OmfmEiLY9Rj8mSTLodrs3Lpk0TY+I6JNS6nvx/wKgLMt28zw/U0oNYr0TIm/1/yoYCflGCHFZ2JOm6R4RgdW+EGKXmb+UmVwAlKbpkIiOiehUSjkM3DBIzIbYQw0rVboQfmBztxBg5gut9Un5gwVAxpg/hfeYeaC1vgyyNkCorDtAvE7kXkrZs2duKusCxGVNzDzUWp/Waa/7P03TPhH9qJML+Z+Zb5VSBy8vL9t5nh8x807B1AwgG59gaH5dSSkH894I2byQMcY8lMMl5ts5B0+yIKLIhu4MUzOA7IHFxq71yMyHTVKpx1FNcU2+Y+a/QoieNykYY2ZCbn5HhKBS6jyGLWMM0urZq6xf/PiJmQ/mHew6Q49CiI++zZn5mYiGUsqLEGBLAORMCLDZBSjYmwCGO0II8dMXim0DSpLka9VlW3WxVp0jH3E4Y1dEdCOlvC0zt1JAsLglAwDwEcBwoRJRr60zFMVQKc0iNX5uy4g29QQDQnoVQhxtbW1ddDqdZ2MMQmi/TWPa0KWUqiyqfRdrETKthUobYKAjGJA9P957qC2jmupB2aO1rnSyK21fCSFQnq/lclXYZUNdabuX5/nvtUTz36hDpRSc7lzOw5Wm6c06JgMgkFLu+KoTJyAUqePx+I6IPqwZU9doG3w2VaY/m8LB1NqACmk4vUMSy9TlOoQfWgWttW+gMiEuaOqTZRkSBXr3VWa/8/J0JyopFMKj0eiEmSflDzNjOFF0iW96tMCOUmo3pFWpC7l1SeFB7ASFHOq5FYfak5QSkYHeq3bVniE75UTl7e1ia3dqKOCrrF0qawHhIzvkAFNvCqquzGkMyCYFzKPRbr9VprtXSqGdiVpBDJU1WraQwlHxLoWxmKw2jzYakAMcBu/TeXOUOx3CrllbjM7GgIwxmLNNnzFiNq2SfS2YoLRd3rx41ymeMtoAUdJROWuL2aeWIVvP7WNqg0llw6cQr03IZihrQu8an7IpIPs6MDnkzDxpca3x0ZkmwqNPSZL0q4aGEXqmovPD+t54PIanljrpwVmxo2Q8rgVVAKHgnCFnjEEThSe/tu+cJwDpdrtoSVoFUgD2niEkgSzL+nmeAyDqqSbN3j0z49H3sslTTCgzQYDmldkuFsDwWItma+F8YbYN7xPRXafTQRu/FCaqgNZmuVgPrVp+A2jVDNTtv2GozkOr/v/dMfQPssXcRMVCr4wAAAAASUVORK5CYII=');\" href=\"https://twitter.com/intent/tweet?source=https%3A%2F%2Fjavatari.org&text=:%20https%3A%2F%2Fjavatari.org&via=ppeccin\" target=\"_blank\" title=\"Tweet\" onclick=\"window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20'  + encodeURIComponent(document.URL)); return false;\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACj0lEQVRoQ+2a0W3bMBCG7/QmkUDTCdoNmkxQZ4IiE7SdoOkEzQZ1N0gnaDeIO0GdCZpMkBYQpTf9BQ1ZkBRRJGVTsA3qwYBN8sjv/hPPEo/pxC524SnL8q1Lv9B90jT9ZZvDCFQUxScAH4jo3GZk5vY1gKWU8vvQvM+A8jw/Z+YfRPR65oX6TvcA4EpKuW4P7ABpGCK6Y+YzX+v76A/AHlLMTfgD+EtEl22oDpBS6s+Myjwy87KqqlXfy2POUUqh174WQlxsf2uAiqK4BvB1H54eswHgX5IkN1mWLafMNQBEAD5KKW+1vQZIKfU79AagYYho4aNIH3oIiIgaldpAfSmnOHB0DDN/nqrM1rABiIQQG5bNR1mWi6qq7vZO0DX4KITYeec0AQG40MrPBgTgm5TyelenmYCSJLlM03Q1GxARXQkhfp4MUJZlL5lZ5w3jBeCs/oeyMHVi5sG22RXa3rSWHKMVfDdFxUMFmpzYDxVocuqIQFPiuj3G8R6KCm2dFjTk9GOAlNK49e6idp7nT0OPN0cJVOeppyGHHCXQ2H/OowRSSt0Q0ZeTUUgppR/i3p8MUJ7nK269U2iDHWvIGfNUUKChkIiJ1TNZRYU8Hfaseww5Tw/GkPN0WAw57QHTKyoXZ8aQc/HSWJ+4y3l6MIacp8PiLhd3uV4MxHvo0O+hzoHXrvHrAhs6D3WOJGsgXcDwxmVxU/oEBroXQmwqXmY71g8JNHisX6v0QESvpihgGxMQqFGno5D+UpfG6FdFL2wL9G0HsLKNMR03msYN1T2Yipf00WAQpWxQHu33ulpstHipbawuldHlZcE2Co/Ft7tqEF1etimF6V+uBYBBjkZ8gXQdgm2ME5DNyCG1/wfy83xTvpURYAAAAABJRU5ErkJggg==');\" href=\"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fjavatari.org&t=\" title=\"Share on Facebook\" target=\"_blank\" onclick=\"window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;\"></a>\n                <div id=\"desc\">\n                    <span>The online Atari 2600 emulator</span>\n                </div>\n            </div>\n        </div>\n\n        <div id=\"keywords\" style=\"display: none;\">\n            Javatari - The online Atari 2600 emulator,\n            Play Atari 2600 games online in your browser,\n            Javascript HTML5 Atari 2600 Emulator,\n            Javatari.js, Javatari.thml, javatari.js, javatari.thml,\n            ROM, ROMS,\n            Touch Screen, Mobile, Tablet, Android, iPhone, iPad, iPod, iOS,\n            App, offline, add to home screen\n        </div>\n\n        <div id=\"javatari\">\n            <div id=\"javatari-screen\"></div>\n        </div>\n\n        <div id=\"info-thin\" class=\"info container\">\n            Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <div id=\"info-wide\" class=\"info container\">\n            Drag & Drop or Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <button id=\"donate\" onclick=\"donate();\">DONATE!</button>\n\n        <div id=\"footer-space\"></div>\n        <div id=\"footer\">\n            <div class=\"container\">\n                <p><span>Created by <a href=\"http://twitter.com/ppeccin\" target=\"_blank\">Paulo A. Peccin</a></span>\n                    <span class=\"toright\">Atari, VCS and the Atari logo are shown here as a tribute.</span></p>\n                <p><span>v5.0.4 &nbsp;<a href=\"https://github.com/ppeccin/javatari.js\" target=\"_blank\">Docs & Project Home</a></span>\n                    <span class=\"toright\">All trademarks are property of their respective owners.</span></p>\n            </div>\n        </div>\n\n    </body>\n\n</html>"
  },
  {
    "path": "release/stable/5.0/standalone/manifest.webapp",
    "content": "{\n  \"name\": \"Javatari\",\n  \"description\": \"Javatari - The online Atari 2600 emulator\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#000\",\n  \"theme_color\": \"#363636\",\n  \"icons\": [{\n    \"src\": \"images/logo-icon192.png\",\n    \"sizes\": \"192x192\",\n    \"type\": \"image/png\"\n  }, {\n    \"src\": \"images/logo-icon512.png\",\n    \"sizes\": \"512x512\",\n    \"type\": \"image/png\"\n  }]\n}\n"
  },
  {
    "path": "release/stable/old/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n    <head lang=\"en\">\n        <meta charset=\"UTF-8\">\n        <title>Javatari.js</title>\n    </head>\n\n    <body style=\"background: #e0e0d0\">\n\n        <div style=\"margin: 30px auto 0; min-height: 594px;\">\n            <div id=\"javatari-screen\" style=\"margin: 0 auto; box-shadow: 2px 2px 10px rgb(60, 60, 60);\"></div>\n            <div id=\"javatari-console-panel\" style=\"margin: 0 auto; box-shadow: 2px 2px 10px rgb(60, 60, 60);\"></div>\n        </div>\n\n        <script src=\"javatari/javatari.js\"></script>\n\n    </body>\n\n</html>"
  },
  {
    "path": "release/stable/old/javatari/javatari.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Main Emulator parameters.\n// You may change any of these after loading the project and before starting the Emulator\n\nJavatari = {\n\n    VERSION:                        \"version 0.92\",             // Don't change this one!\n\n    ROM_AUTO_LOAD_URL:              \"\",                         // Full or relative URL of ROM\n    AUTO_START:                     true,                       // Set false to start emulator manually with Javatari.start()\n    SCREEN_ELEMENT_ID:              \"javatari-screen\",\n    CONSOLE_PANEL_ELEMENT_ID:       \"javatari-console-panel\",\n    CARTRIDGE_CHANGE_DISABLED:      false,\n    SCREEN_RESIZE_DISABLED:         false,\n    SCREEN_FULLSCREEN_DISABLED:     false,\n    CARTRIDGE_LABEL_COLORS:         \"\",                         // Space-separated colors for Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n    PADDLES_MODE:                   -1,                         // -1 = auto, 0 = off, 1 = 0n\n    SCREEN_OPENING_SIZE:            2,                          // 1 .. 4\n    SCREEN_CONTROL_BAR:             0,                          // 0 = Always, 1 = Hover, 2 = Original Javatari\n    SCREEN_NATURAL_FPS:             60,                         // 60, 50 fps\n    AUDIO_BUFFER_SIZE:              1024,                       // 256, 512, 1024, 2048, 4096, 8192. More buffer = more delay\n    IMAGES_PATH:                    window.Javatari_IMAGES_PATH || \"javatari/\"\n\n};\n\njt = window.jt || {};\n\njt.Util=new function(){this.log=function(a){console.log(\">> Javatari: \"+a)},this.message=function(a){alert(a)},this.arraysEqual=function(a,b){var c=a.length;if(c!==b.length)return!1;for(;c--;)if(a[c]!==b[c])return!1;return!0},this.arrayFill=function(a,b){for(var c=a.length;c--;)a[c]=b;return a},this.arrayFillWithArrayClone=function(a,b){for(var c=a.length;c--;)a[c]=b.slice(0);return a},this.arrayFillSegment=function(a,b,c,d){for(var e=c;e-- >b;)a[e]=d;return a},this.arrayCopy=function(a,b,c,d,e){for(var f=b+e;b<f;)c[d++]=a[b++]},this.uInt32ArrayCopyToUInt8Array=function(a,b,c,d,e){var f=b+e;for(d*=4;b<f;){var g=a[b++];c[d++]=255&g,c[d++]=g>>8&255,c[d++]=g>>16&255,c[d++]=g>>>24}},this.arrayCopyCircularSourceWithStep=function(a,b,c,d,e,f,g){for(var h=b,i=f,j=f+g;i<j;)e[i]=a[0|h],i++,h+=d,h>=c&&(h-=c)},this.arrayRemove=function(a,b){var c=a.indexOf(b);c<0||a.splice(c,1)},this.booleanArrayToByteString=function(a){for(var b=\"\",c=0,d=a.length;c<d;c++)b+=a[c]?\"1\":\"0\";return b},this.byteStringToBooleanArray=function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(\"1\"===a.charAt(c));return b},this.uInt8ArrayToByteString=function(a){for(var b=\"\",c=0,d=a.length;c<d;c++)b+=String.fromCharCode(255&a[c]);return b},this.byteStringToUInt8Array=function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(255&a.charCodeAt(c));return b},this.uInt32ArrayToByteString=function(a){for(var b=\"\",c=0,d=a.length;c<d;c++){var e=a[c];b+=String.fromCharCode((4278190080&e)>>>24),b+=String.fromCharCode((16711680&e)>>>16),b+=String.fromCharCode((65280&e)>>>8),b+=String.fromCharCode(255&e)}return b},this.byteStringToUInt32Array=function(a){for(var b=[],c=0,d=a.length;c<d;)b.push(a.charCodeAt(c++)*(1<<24)+(a.charCodeAt(c++)<<16)+(a.charCodeAt(c++)<<8)+a.charCodeAt(c++));return b},this.uInt8BiArrayToByteString=function(a){for(var b=\"\",c=0,d=a.length;c<d;c++)for(var e=0,f=a[c].length;e<f;e++)b+=String.fromCharCode(255&a[c][e]);return b},this.byteStringToUInt8BiArray=function(a,b){for(var c=[],d=0,e=a.length;d<e;){for(var f=new Array(b),g=0;g<b;g++)f[g]=255&a.charCodeAt(d++);c.push(f)}return c}},jt.M6502=function(){function a(){return Jb(function(){Cb(Ba>127),Ba=Ba<<1&255,zb(Ba),Ab(Ba)})}function b(){return Jb(function(){Ja=0})}function c(){return Jb(function(){Ga=0})}function d(){return Jb(function(){Ha=0})}function e(){return Jb(function(){Fa=0})}function f(){return Jb(function(){Ca=Ca-1&255,zb(Ca),Ab(Ca)})}function g(){return Jb(function(){Da=Da-1&255,zb(Da),Ab(Da)})}function h(){return Jb(function(){Ca=Ca+1&255,zb(Ca),Ab(Ca)})}function i(){return Jb(function(){Da=Da+1&255,zb(Da),Ab(Da)})}function j(){return Jb(function(){Ja=1&Ba,Ba>>>=1,zb(Ba),Ea=0})}function k(){return Jb(function(){})}function l(){return Jb(function(){var a=Ba>127;Ba=255&(Ba<<1|Ja),Cb(a),zb(Ba),Ab(Ba)})}function m(){return Jb(function(){var a=1&Ba;Ba=Ba>>>1|Ja<<7,Cb(a),zb(Ba),Ab(Ba)})}function n(){return Jb(function(){Ja=1})}function o(){return Jb(function(){Ga=1})}function p(){return Jb(function(){Ha=1})}function q(){return Jb(function(){Ca=Ba,zb(Ca),Ab(Ca)})}function r(){return Jb(function(){Da=Ba,zb(Da),Ab(Da)})}function s(){return Jb(function(){Ca=Aa,zb(Ca),Ab(Ca)})}function t(){return Jb(function(){Ba=Ca,zb(Ba),Ab(Ba)})}function u(){return Jb(function(){Aa=Ca})}function v(){return Jb(function(){Ba=Da,zb(Ba),Ab(Ba)})}function w(){return[_a,function(){Ib(\"KIL/HLT/JAM\")},function(){Ka--}]}function x(a){return a(function(){Ib(\"NOP/DOP\")})}function y(a){return a(function(){if(Ga){var a=Ma,b=(15&Ba)+(15&a)+Ja;b>9&&(b+=6);var c=(Ba>>4)+(a>>4)+(b>15)<<4;zb(Ba+a+Ja&255),Ab(c),Bb((Ba^c)&~(Ba^a)&128),c>159&&(c+=96),Cb(c>255),Ba=255&(c|15&b)}else{var d=Ba+Ma+Ja;Cb(d>255),Bb((Ba^d)&(Ma^d)&128),Ba=255&d,zb(Ba),Ab(Ba)}})}function z(a){return a(function(){Ba&=Ma,zb(Ba),Ab(Ba)})}function A(a){return a(function(){var a=Ma;zb(Ba&a),Bb(64&a),Ab(a)})}function B(a){return a(function(){var a=Ba-Ma&255;Cb(Ba>=Ma),zb(a),Ab(a)})}function C(a){return a(function(){var a=Ca-Ma&255;Cb(Ca>=Ma),zb(a),Ab(a)})}function D(a){return a(function(){var a=Da-Ma&255;Cb(Da>=Ma),zb(a),Ab(a)})}function E(a){return a(function(){Ba^=Ma,zb(Ba),Ab(Ba)})}function F(a){return a(function(){Ba=Ma,zb(Ba),Ab(Ba)})}function G(a){return a(function(){Ca=Ma,zb(Ca),Ab(Ca)})}function H(a){return a(function(){Da=Ma,zb(Da),Ab(Da)})}function I(a){return a(function(){Ba|=Ma,zb(Ba),Ab(Ba)})}function J(a){return a(function(){if(Ga){var a=Ma,b=(15&Ba)-(15&a)-(1-Ja),c=(Ba>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=Ba-a-(1-Ja);Cb(256&~d),Bb((Ba^a)&(Ba^d)&128),zb(255&d),Ab(d),Ba=255&(c<<4|15&b)}else a=255&~Ma,d=Ba+a+Ja,Cb(d>255),Bb((Ba^d)&(a^d)&128),Ba=255&d,zb(Ba),Ab(Ba)})}function K(a){return a(function(){Ib(\"ANC\"),Ba&=Ma,zb(Ba),Ea=Ja=128&Ba?1:0})}function L(a){return a(function(){Ib(\"ANE\")})}function M(a){return a(function(){Ib(\"ARR\");var a=Ba&Ma,b=Ja?128:0;a=a>>>1|b,Ba=a,zb(a),Ab(a);var c=96&Ba;96==c?(Ja=1,Fa=0):0==c?(Ja=0,Fa=0):32==c?(Ja=0,Fa=1):64==c&&(Ja=1,Fa=1)})}function N(a){return a(function(){Ib(\"ASR\");var a=Ba&Ma;Ja=1&a,a>>>=1,Ba=a,zb(a),Ea=0})}function O(a){return a(function(){Ib(\"LAS\");var a=Aa&Ma;Ba=a,Ca=a,Aa=a,zb(a),Ab(a)})}function P(a){return a(function(){Ib(\"LAX\");var a=Ma;Ba=a,Ca=a,zb(a),Ab(a)})}function Q(a){return a(function(){Ib(\"LXA\");var a=Ba&Ma;Ba=a,Ca=a,zb(a),Ab(a)})}function R(a){return a(function(){Ib(\"SBX\");var a=Ba&Ca,b=Ma,c=a-b&255;Ca=c,Cb(a>=b),zb(c),Ab(c)})}function S(a){return a(function(){Ma=Ba})}function T(a){return a(function(){Ma=Ca})}function U(a){return a(function(){Ma=Da})}function V(a){return a(function(){Ib(\"SAX\"),Ma=Ba&Ca})}function W(a){return a(function(){Ib(\"SHA\"),Ma=Ba&Ca&(Oa>>>8)+1&255})}function X(a){return a(function(){Ib(\"SHS\");var a=Ba&Ca;Aa=a,Ma=a&(Oa>>>8)+1&255})}function Y(a){return a(function(){Ib(\"SHX\"),Ma=Ca&(Oa>>>8)+1&255})}function Z(a){return a(function(){Ib(\"SHY\"),Ma=Da&(Oa>>>8)+1&255})}function $(a){return a(function(){Cb(Ma>127);var a=Ma<<1&255;Ma=a,zb(a),Ab(a)})}function _(a){return a(function(){var a=Ma-1&255;Ma=a,zb(a),Ab(a)})}function aa(a){return a(function(){var a=Ma+1&255;Ma=a,zb(a),Ab(a)})}function ba(a){return a(function(){Ja=1&Ma,Ma>>>=1,zb(Ma),Ea=0})}function ca(a){return a(function(){var a=Ma>127,b=255&(Ma<<1|Ja);Ma=b,Cb(a),zb(b),Ab(b)})}function da(a){return a(function(){var a=1&Ma,b=Ma>>>1|Ja<<7;Ma=b,Cb(a),zb(b),Ab(b)})}function ea(a){return a(function(){Ib(\"DCP\");var a=Ma-1&255;Ma=a,a=Ba-a,Cb(a>=0),zb(a),Ab(a)})}function fa(a){return a(function(){if(Ib(\"ISB\"),Ma=Ma+1&255,Ga){var a=Ma,b=(15&Ba)-(15&a)-(1-Ja),c=(Ba>>4)-(a>>4)-(b<0);b<0&&(b-=6),c<0&&(c-=6);var d=Ba-a-(1-Ja);Cb(256&~d),Bb((Ba^a)&(Ba^d)&128),zb(255&d),Ab(d),Ba=255&(c<<4|15&b)}else a=255&~Ma,d=Ba+a+Ja,Cb(d>255),Bb((Ba^d)&(a^d)&128),Ba=255&d,zb(Ba),Ab(Ba)})}function ga(a){return a(function(){Ib(\"RLA\");var a=Ma,b=Ja;Cb(128&a),a=255&(a<<1|b),Ma=a,Ba&=a,zb(a),Ab(a)})}function ha(a){return a(function(){Ib(\"RRA\");var a=Ma,b=Ja?128:0;if(Cb(1&a),a=a>>>1|b,Ma=a,Ga){var c=Ma,d=(15&Ba)+(15&c)+Ja;d>9&&(d+=6);var e=(Ba>>4)+(c>>4)+(d>15)<<4;zb(Ba+c+Ja&255),Ab(e),Bb((Ba^e)&~(Ba^c)&128),e>159&&(e+=96),Cb(e>255),Ba=255&(e|15&d)}else{var f=Ba+Ma+Ja;Cb(f>255),Bb((Ba^f)&(Ma^f)&128),Ba=255&f,zb(Ba),Ab(Ba)}})}function ia(a){return a(function(){Ib(\"SLO\");var a=Ma;Cb(128&a),a=a<<1&255,Ma=a,a|=Ba,Ba=a,zb(a),Ab(a)})}function ja(a){return a(function(){Ib(\"SRE\");var a=Ma;Cb(1&a),a>>>=1,Ma=a,a=255&(Ba^a),Ba=a,zb(a),Ab(a)})}function ka(){return[_a,bb,function(){Fb(Ba)},ab]}function la(){return[_a,bb,function(){Fb(Gb())},ab]}function ma(){return[_a,bb,Eb,function(){Ba=Db(),zb(Ba),Ab(Ba)},ab]}function na(){return[_a,bb,Eb,function(){Hb(Db())},ab]}function oa(){return[_a,db,Eb,function(){Fb(za>>>8&255)},function(){Fb(255&za)},eb,function(){za=Na,ab()}]}function pa(){return[_a,sb,function(){va.debug&&va.breakpoint(\"BRK \"+Ma),Fb(za>>>8&255)},function(){Fb(255&za)},function(){Fb(Gb())},function(){Na=wa.read(Ua)},function(){Na|=wa.read(Ua+1)<<8},function(){za=Na,ab()}]}function qa(){\nreturn[_a,bb,Eb,function(){Hb(Db())},function(){Na=Db()},function(){Na|=Db()<<8},function(){za=Na,ab()}]}function ra(){return[_a,bb,Eb,function(){Na=Db()},function(){Na|=Db()<<8},function(){za=Na,sb()},ab]}function sa(){return[_a,db,eb,function(){za=Na,ab()}]}function ta(){return[_a,pb,qb,jb,function(){rb(),kb()},function(){za=Oa,ab()}]}function ua(a,b){var c;return c=a===Za?function(){return Ia===b}:a===Xa?function(){return Ea===b}:a===$a?function(){return Ja===b}:function(){return Fa===b},[_a,cb,function(){c()?(bb(),xb()):ab()},function(){Sa?(bb(),yb()):ab()},ab]}var va=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){ya&&(Ka++,xa[Ka]())},this.connectBus=function(a){wa=a},this.setRDY=function(a){ya=a},this.reset=function(){Ha=1,Ka=-1,xa=[_a],za=wa.read(Ta)|wa.read(Ta+1)<<8,this.setRDY(!0)};var wa,xa,ya=!1,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=-1,La=-1,Ma=0,Na=0,Oa=0,Pa=!1,Qa=0,Ra=0,Sa=0,Ta=65532,Ua=65534,Va=0,Wa=1,Xa=7,Ya=6,Za=1,$a=0;this.debug=!1,this.trace=!1;var _a=function(){La=wa.read(za),xa=cc[La],Ka=0,za++},ab=_a,bb=function(){wa.read(za)},cb=function(){Ra=wa.read(za),za++},db=function(){Na=wa.read(za),za++},eb=function(){Na|=wa.read(za)<<8,za++},fb=function(){Na=wa.read(Oa)},gb=function(){Na|=wa.read(Oa)<<8},hb=function(){Oa=wa.read(za),za++},ib=function(){Oa|=wa.read(za)<<8,za++},jb=function(){Oa=wa.read(Qa)},kb=function(){Oa|=wa.read(Qa)<<8},lb=function(){var a=(255&Oa)+Ca;Pa=a>255,Oa=65280&Oa|255&a},mb=function(){var a=(255&Oa)+Da;Pa=a>255,Oa=65280&Oa|255&a},nb=function(){var a=(255&Oa)+1;Pa=a>255,Oa=65280&Oa|255&a},ob=function(){Pa&&(Oa=Oa+256&65535)},pb=function(){Qa=wa.read(za),za++},qb=function(){Qa|=wa.read(za)<<8,za++},rb=function(){var a=(255&Qa)+1;Qa=65280&Qa|255&a},sb=function(){Ma=wa.read(za),za++},tb=function(){Ma=wa.read(Na)},ub=function(){Ma=wa.read(Oa)},vb=function(){wa.write(Na,Ma)},wb=function(){wa.write(Oa,Ma)},xb=function(){var a=255&za,b=a+Ra&255;Sa=Ra>127?b>a?-256:0:b<a?256:0,za=65280&za|b},yb=function(){za=za+Sa&65535},zb=function(a){Ia=0===a?1:0},Ab=function(a){Ea=128&a?1:0},Bb=function(a){Fa=a?1:0},Cb=function(a){Ja=a?1:0},Db=function(){return Aa=Aa+1&255,wa.read(256+Aa)},Eb=function(){return wa.read(256+Aa)},Fb=function(a){wa.write(256+Aa,a),Aa=Aa-1&255},Gb=function(){return Ea<<7|Fa<<6|48|Ga<<3|Ha<<2|Ia<<1|Ja},Hb=function(a){Ea=a>>>7,Fa=a>>>6&1,Ga=a>>>3&1,Ha=a>>>2&1,Ia=a>>>1&1,Ja=1&a},Ib=function(a){va.debug&&va.breakpoint(\"Illegal Opcode: \"+a)},Jb=function(a){return[_a,bb,function(){a(),ab()}]},Kb=function(a){return[_a,sb,function(){a(),ab()}]},Lb=function(a){return[_a,db,tb,function(){a(),ab()}]},Mb=function(a){return[_a,db,eb,tb,function(){a(),ab()}]},Nb=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},tb,function(){a(),ab()}]},Ob=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},function(){Pa?ub():(a(),ab())},function(){a(),ab()}]}},Pb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),ub()},function(){a(),ab()}]}},Qb=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},function(){Pa?ub():(a(),ab())},function(){a(),ab()}]},Rb=function(a){return[_a,db,function(){a(),vb()},ab]},Sb=function(a){return[_a,db,eb,function(){a(),vb()},ab]},Tb=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},function(){a(),vb()},ab]},Ub=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},function(){a(),wb()},ab]}},Vb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),a(),wb()},ab]}},Wb=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},function(){a(),wb()},ab]},Xb=function(a){return[_a,db,tb,vb,function(){a(),vb()},ab]},Yb=function(a){return[_a,db,eb,tb,vb,function(){a(),vb()},ab]},Zb=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ub,function(){b(),ub()},wb,function(){a(),wb()},ab]}},$b=function(a){var b=a===Va?lb:mb;return function(a){return[_a,hb,ib,function(){b(),ub(),ob()},ub,wb,function(){a(),wb()},ab]}},_b=function(a){return[_a,hb,ub,function(){lb(),fb()},function(){nb(),gb()},tb,vb,function(){a(),vb()},ab]},ac=function(a){return[_a,pb,jb,function(){rb(),kb()},function(){mb(),ub(),ob()},ub,wb,function(){a(),wb()},ab]},bc=new Array(256),cc=new Array(256);bc[0]=\"BRK\",cc[0]=pa(),bc[1]=\"ORA\",cc[1]=I(Nb),bc[2]=\"uKIL\",cc[2]=w(),bc[3]=\"uSLO\",cc[3]=ia(_b),bc[4]=\"uNOP\",cc[4]=x(Lb),bc[5]=\"ORA\",cc[5]=I(Lb),bc[6]=\"ASL\",cc[6]=$(Xb),bc[7]=\"uSLO\",cc[7]=ia(Xb),bc[8]=\"PHP\",cc[8]=la(),bc[9]=\"ORA\",cc[9]=I(Kb),bc[10]=\"ASL\",cc[10]=a(),bc[11]=\"uANC\",cc[11]=K(Kb),bc[12]=\"uNOP\",cc[12]=x(Mb),bc[13]=\"ORA\",cc[13]=I(Mb),bc[14]=\"ASL\",cc[14]=$(Yb),bc[15]=\"uSLO\",cc[15]=ia(Yb),bc[16]=\"BPL\",cc[16]=ua(Xa,0),bc[17]=\"ORA\",cc[17]=I(Qb),bc[18]=\"uKIL\",cc[18]=w(),bc[19]=\"uSLO\",cc[19]=ia(ac),bc[20]=\"uNOP\",cc[20]=x(Pb(Va)),bc[21]=\"ORA\",cc[21]=I(Pb(Va)),bc[22]=\"ASL\",cc[22]=$(Zb(Va)),bc[23]=\"uSLO\",cc[23]=ia(Zb(Va)),bc[24]=\"CLC\",cc[24]=b(),bc[25]=\"ORA\",cc[25]=I(Ob(Wa)),bc[26]=\"uNOP\",cc[26]=x(Jb),bc[27]=\"uSLO\",cc[27]=ia($b(Wa)),bc[28]=\"uNOP\",cc[28]=x(Ob(Va)),bc[29]=\"ORA\",cc[29]=I(Ob(Va)),bc[30]=\"ASL\",cc[30]=$($b(Va)),bc[31]=\"uSLO\",cc[31]=ia($b(Va)),bc[32]=\"JSR\",cc[32]=oa(),bc[33]=\"AND\",cc[33]=z(Nb),bc[34]=\"uKIL\",cc[34]=w(),bc[35]=\"uRLA\",cc[35]=ga(_b),bc[36]=\"BIT\",cc[36]=A(Lb),bc[37]=\"AND\",cc[37]=z(Lb),bc[38]=\"ROL\",cc[38]=ca(Xb),bc[39]=\"uRLA\",cc[39]=ga(Xb),bc[40]=\"PLP\",cc[40]=na(),bc[41]=\"AND\",cc[41]=z(Kb),bc[42]=\"ROL\",cc[42]=l(),bc[43]=\"uANC\",cc[43]=K(Kb),bc[44]=\"BIT\",cc[44]=A(Mb),bc[45]=\"AND\",cc[45]=z(Mb),bc[46]=\"ROL\",cc[46]=ca(Yb),bc[47]=\"uRLA\",cc[47]=ga(Yb),bc[48]=\"BMI\",cc[48]=ua(Xa,1),bc[49]=\"AND\",cc[49]=z(Qb),bc[50]=\"uKIL\",cc[50]=w(),bc[51]=\"uRLA\",cc[51]=ga(ac),bc[52]=\"uNOP\",cc[52]=x(Pb(Va)),bc[53]=\"AND\",cc[53]=z(Pb(Va)),bc[54]=\"ROL\",cc[54]=ca(Zb(Va)),bc[55]=\"uRLA\",cc[55]=ga(Zb(Va)),bc[56]=\"SEC\",cc[56]=n(),bc[57]=\"AND\",cc[57]=z(Ob(Wa)),bc[58]=\"uNOP\",cc[58]=x(Jb),bc[59]=\"uRLA\",cc[59]=ga($b(Wa)),bc[60]=\"uNOP\",cc[60]=x(Ob(Va)),bc[61]=\"AND\",cc[61]=z(Ob(Va)),bc[62]=\"ROL\",cc[62]=ca($b(Va)),bc[63]=\"uRLA\",cc[63]=ga($b(Va)),bc[64]=\"RTI\",cc[64]=qa(),bc[65]=\"EOR\",cc[65]=E(Nb),bc[66]=\"uKIL\",cc[66]=w(),bc[67]=\"uSRE\",cc[67]=ja(_b),bc[68]=\"uNOP\",cc[68]=x(Lb),bc[69]=\"EOR\",cc[69]=E(Lb),bc[70]=\"LSR\",cc[70]=ba(Xb),bc[71]=\"uSRE\",cc[71]=ja(Xb),bc[72]=\"PHA\",cc[72]=ka(),bc[73]=\"EOR\",cc[73]=E(Kb),bc[74]=\"LSR\",cc[74]=j(),bc[75]=\"uASR\",cc[75]=N(Kb),bc[76]=\"JMP\",cc[76]=sa(),bc[77]=\"EOR\",cc[77]=E(Mb),bc[78]=\"LSR\",cc[78]=ba(Yb),bc[79]=\"uSRE\",cc[79]=ja(Yb),bc[80]=\"BVC\",cc[80]=ua(Ya,0),bc[81]=\"EOR\",cc[81]=E(Qb),bc[82]=\"uKIL\",cc[82]=w(),bc[83]=\"uSRE\",cc[83]=ja(ac),bc[84]=\"uNOP\",cc[84]=x(Pb(Va)),bc[85]=\"EOR\",cc[85]=E(Pb(Va)),bc[86]=\"LSR\",cc[86]=ba(Zb(Va)),bc[87]=\"uSRE\",cc[87]=ja(Zb(Va)),bc[88]=\"CLI\",cc[88]=d(),bc[89]=\"EOR\",cc[89]=E(Ob(Wa)),bc[90]=\"uNOP\",cc[90]=x(Jb),bc[91]=\"uSRE\",cc[91]=ja($b(Wa)),bc[92]=\"uNOP\",cc[92]=x(Ob(Va)),bc[93]=\"EOR\",cc[93]=E(Ob(Va)),bc[94]=\"LSR\",cc[94]=ba($b(Va)),bc[95]=\"uSRE\",cc[95]=ja($b(Va)),bc[96]=\"RTS\",cc[96]=ra(),bc[97]=\"ADC\",cc[97]=y(Nb),bc[98]=\"uKIL\",cc[98]=w(),bc[99]=\"uRRA\",cc[99]=ha(_b);bc[100]=\"uNOP\";cc[100]=x(Lb),bc[101]=\"ADC\",cc[101]=y(Lb),bc[102]=\"ROR\",cc[102]=da(Xb),bc[103]=\"uRRA\",cc[103]=ha(Xb),bc[104]=\"PLA\",cc[104]=ma(),bc[105]=\"ADC\",cc[105]=y(Kb),bc[106]=\"ROR\",cc[106]=m(),bc[107]=\"uARR\",cc[107]=M(Kb),bc[108]=\"JMP\",cc[108]=ta(),bc[109]=\"ADC\",cc[109]=y(Mb),bc[110]=\"ROR\",cc[110]=da(Yb),bc[111]=\"uRRA\",cc[111]=ha(Yb),bc[112]=\"BVS\",cc[112]=ua(Ya,1),bc[113]=\"ADC\",cc[113]=y(Qb),bc[114]=\"uKIL\",cc[114]=w(),bc[115]=\"uRRA\",cc[115]=ha(ac),bc[116]=\"uNOP\",cc[116]=x(Pb(Va)),bc[117]=\"ADC\",cc[117]=y(Pb(Va)),bc[118]=\"ROR\",cc[118]=da(Zb(Va)),bc[119]=\"uRRA\",cc[119]=ha(Zb(Va)),bc[120]=\"SEI\",cc[120]=p(),bc[121]=\"ADC\",cc[121]=y(Ob(Wa)),bc[122]=\"uNOP\",cc[122]=x(Jb),bc[123]=\"uRRA\",cc[123]=ha($b(Wa)),bc[124]=\"uNOP\",cc[124]=x(Ob(Va)),bc[125]=\"ADC\",cc[125]=y(Ob(Va)),bc[126]=\"ROR\",\ncc[126]=da($b(Va)),bc[127]=\"uRRA\",cc[127]=ha($b(Va)),bc[128]=\"uNOP\",cc[128]=x(Kb),bc[129]=\"STA\",cc[129]=S(Tb),bc[130]=\"uNOP\",cc[130]=x(Kb),bc[131]=\"uSAX\",cc[131]=V(Tb),bc[132]=\"STY\",cc[132]=U(Rb),bc[133]=\"STA\",cc[133]=S(Rb),bc[134]=\"STX\",cc[134]=T(Rb),bc[135]=\"uSAX\",cc[135]=V(Rb),bc[136]=\"DEY\",cc[136]=g(),bc[137]=\"uNOP\",cc[137]=x(Kb),bc[138]=\"TXA\",cc[138]=t(),bc[139]=\"uANE\",cc[139]=L(Kb),bc[140]=\"STY\",cc[140]=U(Sb),bc[141]=\"STA\",cc[141]=S(Sb),bc[142]=\"STX\",cc[142]=T(Sb),bc[143]=\"uSAX\",cc[143]=V(Sb),bc[144]=\"BCC\",cc[144]=ua($a,0),bc[145]=\"STA\",cc[145]=S(Wb),bc[146]=\"uKIL\",cc[146]=w(),bc[147]=\"uSHA\",cc[147]=W(Wb),bc[148]=\"STY\",cc[148]=U(Vb(Va)),bc[149]=\"STA\",cc[149]=S(Vb(Va)),bc[150]=\"STX\",cc[150]=T(Vb(Wa)),bc[151]=\"uSAX\",cc[151]=V(Vb(Wa)),bc[152]=\"TYA\",cc[152]=v(),bc[153]=\"STA\",cc[153]=S(Ub(Wa)),bc[154]=\"TXS\",cc[154]=u(),bc[155]=\"uSHS\",cc[155]=X(Ub(Wa)),bc[156]=\"uSHY\",cc[156]=Z(Ub(Va)),bc[157]=\"STA\",cc[157]=S(Ub(Va)),bc[158]=\"uSHX\",cc[158]=Y(Ub(Wa)),bc[159]=\"uSHA\",cc[159]=W(Ub(Wa)),bc[160]=\"LDY\",cc[160]=H(Kb),bc[161]=\"LDA\",cc[161]=F(Nb),bc[162]=\"LDX\",cc[162]=G(Kb),bc[163]=\"uLAX\",cc[163]=P(Nb),bc[164]=\"LDY\",cc[164]=H(Lb),bc[165]=\"LDA\",cc[165]=F(Lb),bc[166]=\"LDX\",cc[166]=G(Lb),bc[167]=\"uLAX\",cc[167]=P(Lb),bc[168]=\"TAY\",cc[168]=r(),bc[169]=\"LDA\",cc[169]=F(Kb),bc[170]=\"TAX\",cc[170]=q(),bc[171]=\"uLXA\",cc[171]=Q(Kb),bc[172]=\"LDY\",cc[172]=H(Mb),bc[173]=\"LDA\",cc[173]=F(Mb),bc[174]=\"LDX\",cc[174]=G(Mb),bc[175]=\"uLAX\",cc[175]=P(Mb),bc[176]=\"BCS\",cc[176]=ua($a,1),bc[177]=\"LDA\",cc[177]=F(Qb),bc[178]=\"uKIL\",cc[178]=w(),bc[179]=\"uLAX\",cc[179]=P(Qb),bc[180]=\"LDY\",cc[180]=H(Pb(Va)),bc[181]=\"LDA\",cc[181]=F(Pb(Va)),bc[182]=\"LDX\",cc[182]=G(Pb(Wa)),bc[183]=\"uLAX\",cc[183]=P(Pb(Wa)),bc[184]=\"CLV\",cc[184]=e(),bc[185]=\"LDA\",cc[185]=F(Ob(Wa)),bc[186]=\"TSX\",cc[186]=s(),bc[187]=\"uLAS\",cc[187]=O(Ob(Wa)),bc[188]=\"LDY\",cc[188]=H(Ob(Va)),bc[189]=\"LDA\",cc[189]=F(Ob(Va)),bc[190]=\"LDX\",cc[190]=G(Ob(Wa)),bc[191]=\"uLAX\",cc[191]=P(Ob(Wa)),bc[192]=\"CPY\",cc[192]=D(Kb),bc[193]=\"CMP\",cc[193]=B(Nb),bc[194]=\"uNOP\",cc[194]=x(Kb),bc[195]=\"uDCP\",cc[195]=ea(_b),bc[196]=\"CPY\",cc[196]=D(Lb),bc[197]=\"CMP\",cc[197]=B(Lb),bc[198]=\"DEC\",cc[198]=_(Xb),bc[199]=\"uDCP\",cc[199]=ea(Xb),bc[200]=\"INY\";cc[200]=i();bc[201]=\"CMP\",cc[201]=B(Kb),bc[202]=\"DEX\",cc[202]=f(),bc[203]=\"uSBX\",cc[203]=R(Kb),bc[204]=\"CPY\",cc[204]=D(Mb),bc[205]=\"CMP\",cc[205]=B(Mb),bc[206]=\"DEC\",cc[206]=_(Yb),bc[207]=\"uDCP\",cc[207]=ea(Yb),bc[208]=\"BNE\",cc[208]=ua(Za,0),bc[209]=\"CMP\",cc[209]=B(Qb),bc[210]=\"uKIL\",cc[210]=w(),bc[211]=\"uDCP\",cc[211]=ea(ac),bc[212]=\"uNOP\",cc[212]=x(Pb(Va)),bc[213]=\"CMP\",cc[213]=B(Pb(Va)),bc[214]=\"DEC\",cc[214]=_(Zb(Va)),bc[215]=\"uDCP\",cc[215]=ea(Zb(Va)),bc[216]=\"CLD\",cc[216]=c(),bc[217]=\"CMP\",cc[217]=B(Ob(Wa)),bc[218]=\"uNOP\",cc[218]=x(Jb),bc[219]=\"uDCP\",cc[219]=ea($b(Wa)),bc[220]=\"uNOP\",cc[220]=x(Ob(Va)),bc[221]=\"CMP\",cc[221]=B(Ob(Va)),bc[222]=\"DEC\",cc[222]=_($b(Va)),bc[223]=\"uDCP\",cc[223]=ea($b(Va)),bc[224]=\"CPX\",cc[224]=C(Kb),bc[225]=\"SBC\",cc[225]=J(Nb),bc[226]=\"uNOP\",cc[226]=x(Kb),bc[227]=\"uISB\",cc[227]=fa(_b),bc[228]=\"CPX\",cc[228]=C(Lb),bc[229]=\"SBC\",cc[229]=J(Lb),bc[230]=\"INC\",cc[230]=aa(Xb),bc[231]=\"uISB\",cc[231]=fa(Xb),bc[232]=\"INX\",cc[232]=h(),bc[233]=\"SBC\",cc[233]=J(Kb),bc[234]=\"NOP\",cc[234]=k(),bc[235]=\"SBC\",cc[235]=J(Kb),bc[236]=\"CPX\",cc[236]=C(Mb),bc[237]=\"SBC\",cc[237]=J(Mb),bc[238]=\"INC\",cc[238]=aa(Yb),bc[239]=\"uISB\",cc[239]=fa(Yb),bc[240]=\"BEQ\",cc[240]=ua(Za,1),bc[241]=\"SBC\",cc[241]=J(Qb),bc[242]=\"uKIL\",cc[242]=w(),bc[243]=\"uISB\",cc[243]=fa(ac),bc[244]=\"uNOP\",cc[244]=x(Pb(Va)),bc[245]=\"SBC\",cc[245]=J(Pb(Va)),bc[246]=\"INC\",cc[246]=aa(Zb(Va)),bc[247]=\"uISB\",cc[247]=fa(Zb(Va)),bc[248]=\"SED\",cc[248]=o(),bc[249]=\"SBC\",cc[249]=J(Ob(Wa)),bc[250]=\"uNOP\",cc[250]=x(Jb),bc[251]=\"uISB\",cc[251]=fa($b(Wa)),bc[252]=\"uNOP\",cc[252]=x(Ob(Va)),bc[253]=\"SBC\",cc[253]=J(Ob(Va)),bc[254]=\"INC\",cc[254]=aa($b(Va)),bc[255]=\"uISB\",cc[255]=fa($b(Va)),this.saveState=function(){return{PC:za,A:Ba,X:Ca,Y:Da,SP:Aa,N:Ea,V:Fa,D:Ga,I:Ha,Z:Ia,C:Ja,T:Ka,o:La,R:0|ya,d:Ma,AD:Na,BA:Oa,BC:0|Pa,IA:Qa,bo:Ra,boa:Sa}},this.loadState=function(a){za=a.PC,Ba=a.A,Ca=a.X,Da=a.Y,Aa=a.SP,Ea=a.N,Fa=a.V,Ga=a.D,Ha=a.I,Ia=a.Z,Ja=a.C,Ka=a.T,La=a.o,ya=!!a.R,Ma=a.d,Na=a.AD,Oa=a.BA,Pa=!!a.BC,Qa=a.IA,Ra=a.bo,Sa=a.boa,xa=cc[La]},this.toString=function(){return\"CPU  PC: \"+za.toString(16)+\"  op: \"+La.toString()+\"  T: \"+Ka+\"  data: \"+Ma+\"\\n A: \"+Ba.toString(16)+\"  X: \"+Ca.toString(16)+\"  Y: \"+Da.toString(16)+\"  SP: \"+Aa.toString(16)+\"     N\"+Ea+\"  V\"+Fa+\"  D\"+Ga+\"  I\"+Ha+\"  Z\"+Ia+\"  C\"+Ja+\"  \"},this.breakpoint=function(a){if(jt.Util.log(a),this.trace){var b=\"CPU Breakpoint!  \"+(a?\"(\"+a+\")\":\"\")+\"\\n\\n\"+this.toString();jt.Util.message(b)}},this.runCycles=function(a){for(var b=performance.now(),c=0;c<a;c++)this.clockPulse();var d=performance.now();jt.Util.message(\"Done running \"+a+\" cycles in \"+(d-b)+\" ms.\")}},jt.Ram=function(){function a(){for(var a=b.length-1;a>=0;a--)b[a]=256*Math.random()|0}this.powerOn=function(){},this.powerOff=function(){},this.read=function(a){return b[a&c]},this.write=function(a,d){b[a&c]=d},this.powerFry=function(){for(var a=1-f+2*Math.random()*f,c=a*d,g=0;g<c;g++)b[128*Math.random()|0]&=256*Math.random()|0;var h=a*e;for(g=0;g<h;g++)b[128*Math.random()|0]|=1<<(8*Math.random()|0)},this.saveState=function(){return{b:btoa(jt.Util.uInt8ArrayToByteString(b))}},this.loadState=function(a){b=jt.Util.byteStringToUInt8Array(atob(a.b))};var b=new Array(128),c=127,d=120,e=25,f=.3;a()},jt.Pia=function(){this.powerOn=function(){},this.powerOff=function(){},this.clockPulse=function(){--h<=0&&a()},this.connectBus=function(a){g=a},this.read=function(a){var b=a&u;return 4===b||6===b?(c(),o):0===b?k:2===b?m:1===b?l:3===b?n:5===b||7===b?p:0},this.write=function(a,c){var f=a&u;return 4===f?(q=c,void b(c,1)):5===f?(r=c,void b(c,8)):6===f?(s=c,void b(c,64)):7===f?(t=c,void b(c,1024)):2===f?void d(c):3===f?(n=c,void e(\">>>> Ineffective Write to PIA SWBCNT: \"+c)):0===f?void e(\">>>> Unsupported Write to PIA SWCHA: \"+c):1===f?void e(\">>>> Unsupported Write to PIA SWACNT \"+c):0};var a=function(){--o<0?(p|=192,o=255,h=i=1):h=i},b=function(b,c){o=b,p&=63,h=i=j=c,a()},c=function(){p&=191,1===i&&(h=i=j)},d=function(a){m=203&m|34&a},e=function(a){self.debug&&jt.Util.log(a)},f=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case f.JOY0_UP:return void(b?k&=239:k|=16);case f.JOY0_DOWN:return void(b?k&=223:k|=32);case f.PADDLE1_BUTTON:case f.JOY0_LEFT:return void(b?k&=191:k|=64);case f.PADDLE0_BUTTON:case f.JOY0_RIGHT:return void(b?k&=127:k|=128);case f.JOY1_UP:return void(b?k&=254:k|=1);case f.JOY1_DOWN:return void(b?k&=253:k|=2);case f.JOY1_LEFT:return void(b?k&=251:k|=4);case f.JOY1_RIGHT:return void(b?k&=247:k|=8);case f.RESET:return void(b?m&=254:m|=1);case f.SELECT:return void(b?m&=253:m|=2)}if(b)switch(a){case f.BLACK_WHITE:return 0==(8&m)?m|=8:m&=247,void g.getTia().getVideoOutput().showOSD(0!=(8&m)?\"COLOR\":\"B/W\",!0);case f.DIFFICULTY0:return 0==(64&m)?m|=64:m&=191,void g.getTia().getVideoOutput().showOSD(0!=(64&m)?\"P1 Expert\":\"P1 Novice\",!0);case f.DIFFICULTY1:return 0==(128&m)?m|=128:m&=127,void g.getTia().getVideoOutput().showOSD(0!=(128&m)?\"P2 Expert\":\"P2 Novice\",!0)}},this.controlValueChanged=function(a,b){},this.controlsStateReport=function(a){a[f.BLACK_WHITE]=0===(8&m),a[f.DIFFICULTY0]=0!==(64&m),a[f.DIFFICULTY1]=0!==(128&m),a[f.SELECT]=0===(2&m),a[f.RESET]=0===(1&m)},this.saveState=function(){return{t:h,c:i,l:j,SA:k,SAC:l,SB:m,SBC:n,IT:o,IS:p,T1:q,T8:r,T6:s,T2:t}},this.loadState=function(a){h=a.t,i=a.c,j=a.l,l=a.SAC,m=a.SB,n=a.SBC,o=a.IT,p=a.IS,q=a.T1,r=a.T8,s=a.T6,t=a.T2},this.debug=!1;var g,h=1024,i=1024,j=1024,k=255,l=0,m=11,n=0,o=256*Math.random()|0,p=0,q=0,r=0,s=0,t=0,u=7},function(){for(var a=[0,4210752,7105644,9474192,11579568,13158600,14474460,16053492,17476,1074276,2393220,3448992,4241592,5296336,6088936,6880508,10352,1328260,2645144,3963052,5016764,6070476,6862044,7915756,6276,1586328,3166380,4745408,6062288,7378144,8431852,9747708,136,2105500,3947696,5789888,7368912,8947936,10526956,11842812,6029432,7610508,8928416,10246320,11563200,12616912,13671644,14725356,7864392,9445472,10763384,12081292,13398176,14451892,15506628,16560340,8650772,9969712,11287628,12605544,13660284,14715028,15507624,16561340,8912896,10231836,11550776,12606544,13661288,14716028,15508624,16562340,8132608,9451548,11031608,12349520,13404264,14457980,15512720,16566436,6040576,7883804,9463864,11306064,12622952,13939836,15256720,16572580,2898944,4742172,6585400,8428624,9745512,11325564,12641424,13958308,15360,2120736,4226112,6069340,7648372,9228428,10806436,12123320,14356,1858612,3701840,5281900,6861956,8178844,9495732,10812616,12332,1855564,3436648,5016708,6596764,7913652,8967372,10284256,10308,1591396,3172484,4490400,5807288,7124176,8178920,9232636],b=[0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,22656,2125972,3966120,5807292,7384268,8700124,10277100,11591932,23620,2127964,3969140,5811340,7389344,8705200,10283204,11599060,13424,2117768,3958944,5801140,7379144,8695004,10273004,11588860,1336320,3440672,5281852,7123032,8701040,10279044,11856028,13171888,1310832,3416200,5258400,7100596,8679624,10257628,11836652,13152508,6052864,7631904,9210940,10789976,12105840,13158532,14474396,15527088,6029424,7610500,8928404,10246312,11563188,12616900,13671632,14725344,7355392,8935452,10515512,11832400,13149288,14465148,15518864,16572580,7340120,8921196,10501248,11819156,13136036,14451892,15506628,16560340,7348224,8928284,10508344,11826256,13142120,14459004,15512720,16566436,8388668,9707604,11025516,12343424,13398164,14451880,15506616,16560328,8912896,10231840,11549756,12605528,13660272,14713988,15506588,16560304,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113,0,2631720,5263440,7631988,9737364,11842740,13684944,15856113],c=new Array(256),d=new Array(256),e=0,f=a.length;e<f;e++)c[2*e]=c[2*e+1]=a[e]+4278190080,\nd[2*e]=d[2*e+1]=b[e]+4278190080;a=b=void 0,jt.VideoStandard={NTSC:{name:\"NTSC\",width:228,height:262,fps:60,palette:c},PAL:{name:\"PAL\",width:228,height:312,fps:50.38461538461539,palette:d}}}(),jt.TiaVideoSignal=function(){this.connectMonitor=function(a){this.monitor=a},this.nextLine=function(a,b){return!!this.monitor&&this.monitor.nextLine(a,b)},this.finishFrame=function(){this.monitor.synchOutput()},this.signalOff=function(){this.monitor&&this.monitor.nextLine(null,!1)},this.showOSD=function(a,b){this.monitor&&this.monitor.showOSD(a,b)},this.standard=null,this.monitor=null},jt.TiaAudioSignal=function(){this.connectMonitor=function(b){a=b},this.cartridgeInserted=function(a){b=a&&a.needsAudioClock()?a:null},this.getChannel0=function(){return e},this.getChannel1=function(){return f},this.audioClockPulse=function(){j<i&&c(1)},this.signalOn=function(){d=!0},this.signalOff=function(){d=!1,e.setVolume(0),f.setVolume(0)},this.setFps=function(a){i=Math.round(jt.TiaAudioSignal.SAMPLE_RATE/a),i>l&&(i=l)},this.finishFrame=function(){var a=i-j;a>0&&c(a),j=0},this.retrieveSamples=function(a){var b=g>=h?a-(g-h):a-(l-h+g);b>0&&c(b,!0);var d=h+a;d>=l&&(d-=l);var e=o;return e.start=h,h=d,e};var a,b,c=function(a,c){for(var h,i=a;i>0;i--)b&&b.audioClockPulse(),d?(h=e.nextSample()-f.nextSample(),h!==k&&(h=(9*h+k)/10,k=h)):h=0,n[g]=h*m,g++,g>=l&&(g=0);c||(j+=a)},d=!1,e=new jt.TiaAudioChannel,f=new jt.TiaAudioChannel,g=0,h=0,i=jt.TiaAudioSignal.SAMPLE_RATE/jt.VideoStandard.NTSC.fps,j=0,k=0,l=10*Javatari.AUDIO_BUFFER_SIZE,m=.4,n=jt.Util.arrayFill(new Array(l),0),o={buffer:n,bufferSize:l,start:0}},jt.TiaAudioSignal.SAMPLE_RATE=31440,jt.TiaAudioChannel=function(){this.nextSample=function(){return--s<=0&&(s+=r,t=o()),1===t?p:0},this.setVolume=function(a){p=a/E},this.setDivider=function(a){r!==a&&(s=s/r*a,r=a)},this.setControl=function(b){q!==b&&(q=b,o=0===b||11===b?a:1===b?c:2===b?k:3===b?l:4===b||5===b?f:6===b||10===b?j:7===b||9===b?d:8===b?e:12===b||13===b?h:14===b?m:15===b?n:a)};var a=function(){return 1},b=function(){return z[y]},c=function(){return 15===++y&&(y=0),z[y]},d=function(){return 31===++A&&(A=0),B[A]},e=function(){var a=1&x,b=1&(x>>4^a);return x>>>=1,0===b?x&=255:x|=256,a},f=function(){return 1===r?1:u=u?0:1},g=function(){return v},h=function(){return 0===--w&&(w=3,v=v?0:1),v},i=function(){return D[C]},j=function(){return 31===++C&&(C=0),D[C]},k=function(){return i()!==j()?c():b()},l=function(){return d()?c():b()},m=function(){return i()!=j()?h():g()},n=function(){return d()?h():g()},o=a,p=0,q=0,r=1,s=1,t=0,u=1,v=1,w=3,x=511,y=14,z=[1,1,1,1,0,0,0,1,0,0,1,1,0,1,0],A=30,B=[1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0],C=30,D=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],E=15},jt.Tia=function(a,b){var c=this;this.powerOn=function(){jt.Util.arrayFill(Ga,ia),jt.Util.arrayFill(Vb,0),lc.getChannel0().setVolume(0),lc.getChannel1().setVolume(0),H(),F(),bc=!0,lc.signalOn(),Fa=!0},this.powerOff=function(){Fa=!1,kc.signalOff(),lc.signalOff()},this.frame=function(){if(!(Wb&&Xb--<=0)){do{for(P=0,O.clockPulse(),Da.setRDY(!0),P=3;P<ea;P+=3)_b||G(),O.clockPulse();lc.audioClockPulse();var a=2;for(P=68;P<fa;P++)_b||G(),Ja&&E(),0===--a&&(O.clockPulse(),a=3),t(),_b||!(P>=76)&&Ob||d();lc.audioClockPulse(),e()}while(!kc.nextLine(Ga,Ha));lc.finishFrame(),kc.finishFrame()}},this.connectBus=function(a){O=a},this.getVideoOutput=function(){return kc},this.getAudioOutput=function(){return lc},this.setVideoStandard=function(a){kc.standard=a,R=a===jt.VideoStandard.NTSC?jt.VideoStandard.NTSC.palette:jt.VideoStandard.PAL.palette},this.debug=function(a){Tb=a>4?0:a,Sb=0!==Tb,kc.showOSD(Sb?\"Debug Level \"+Tb:\"Debug OFF\",!0),Da.debug=Sb,Ea.debug=Sb,Sb?K():L()},this.read=function(a){var b=a&Ba;return 0===b?mc:1===b?nc:2===b?oc:3===b?pc:4===b?qc:5===b?rc:6===b?sc:7===b?tc:8===b?uc:9===b?vc:10===b?wc:11===b?xc:12===b?yc:13===b?zc:0},this.write=function(a,b){var c=a&Ca;return 27===c?void z(0,b):28===c?void z(1,b):2===c?(Da.setRDY(!1),void(Sb&&I(za))):42===c?void r():13===c?void(S==b&&0!==Ta||g(0,b)):14===c?void(T==b&&1!==Ta||g(1,b)):15===c?void(U==b&&2!==Ta||g(2,b)):6===c?(F(),void(Sb||(Xa=sb=R[b]))):7===c?(F(),void(Sb||(hb=zb=R[b]))):8===c?(F(),void(Sb||(Na=Hb=R[b]))):9===c?(F(),void(Sb||(Oa=R[b]))):29===c?(F(),void(rb=0!==(2&b))):30===c?(F(),void(yb=0!==(2&b))):20===c?void q():16===c?void m():17===c?void n():18===c?void o():19===c?void p():32===c?void(_=b>127?-16+(b>>>4):b>>>4):33===c?void(aa=b>127?-16+(b>>>4):b>>>4):34===c?void(ba=b>127?-16+(b>>>4):b>>>4):35===c?void(ca=b>127?-16+(b>>>4):b>>>4):36===c?void(da=b>127?-16+(b>>>4):b>>>4):43===c?void(_=aa=ba=ca=da=0):31===c?void i(b):4===c?void j(b):5===c?void k(b):10===c?void l(b):11===c?(F(),void(eb=0!==(8&b))):12===c?(F(),void(qb=0!==(8&b))):37===c?(F(),void(ab=0!==(1&b))):38===c?(F(),void(mb=0!==(1&b))):39===c?(F(),void(Lb=0!==(1&b))):21===c?(V=b,void lc.getChannel0().setControl(15&b)):22===c?(W=b,void lc.getChannel1().setControl(15&b)):23===c?(X=b,void lc.getChannel0().setDivider((31&b)+1)):24===c?(Y=b,void lc.getChannel1().setDivider((31&b)+1)):25===c?(Z=b,void lc.getChannel0().setVolume(15&b)):26===c?($=b,void lc.getChannel1().setVolume(15&b)):40===c?void B(b):41===c?void C(b):1===c?void D(b):0===c?(F(),Ha=0!==(2&b),void(Sb&&I(ja))):44===c?(F(),void(mc=nc=oc=pc=qc=rc=sc=tc=0)):0};var d=function(){if(Ha)return void(Ga[P]=Yb);if(Ia)return void(Ga[P]=Zb);var a=!1,b=!1,c=!1,d=!1,e=!1,g=!1;0!==(3&P)&&P!==ac||f();var h;if(Ra&&(Jb>=0&&Jb<=7&&(A(),Fb&&(g=!0,h=Hb)),Ma&&(e=!0,h||(h=Na))),$a>=0&&$a<=31){A();var i=ab?Va:Wa;0!=i&&0!==(i>>(eb?7-($a>>>2):$a>>>2)&1)&&(a=!0,h||(h=Xa))}vb>=0&&rb&&vb<=7&&!xb&&(c=!0,!h>0&&(h=sb)),kb>=0&&kb<=31&&(A(),i=mb?fb:gb,0!==i&&0!==(i>>(qb?7-(kb>>>2):kb>>>2)&1)&&(b=!0,h||(h=hb))),Cb>=0&&yb&&Cb<=7&&!Eb&&(d=!0,h||(h=zb)),Ra||(Jb>=0&&Jb<=7&&(A(),Fb&&(g=!0,h||(h=Hb))),Ma&&(e=!0,h||(h=Qa?P<148?Xa:hb:Na))),h||(h=Oa),Ga[P]=h,Ub||(a&&e&&(oc|=128),b&&(e&&(pc|=128),a&&(tc|=128)),g&&(e&&(sc|=128),a&&(oc|=64),b&&(pc|=64)),c&&(b&&(mc|=128),a&&(mc|=64),e&&(qc|=128),g&&(qc|=64)),d&&(a&&(nc|=128),b&&(nc|=64),e&&(rc|=128),g&&(rc|=64),c&&(tc|=64)))},e=function(){gc>=0&&!fc&&(uc<128&&++hc>=gc&&(uc|=128),vc<128&&++jc>=ic&&(vc|=128)),Ob&&(Ga[ea]=Ga[ea+1]=Ga[ea+2]=Ga[ea+3]=Ga[ea+4]=Ga[ea+5]=Ga[ea+6]=Ga[ea+7]=$b,Ob=!1),Qb&&(Qb=!1,Ob=Rb,s()),bc&&(ac=227,bc=!1),Tb>=2&&J()},f=function(){if(h(!1),La){if(La=!1,0===S&&0===T&&0===U)return jt.Util.arrayFill(Ka,!1),void(Ma=!1);var a,b;Pa?(a=40,b=-1):(a=19,b=1),Ka[0]=Ka[a+=b]=0!==(16&S),Ka[1]=Ka[a+=b]=0!==(32&S),Ka[2]=Ka[a+=b]=0!==(64&S),Ka[3]=Ka[a+=b]=0!==(128&S),Ka[4]=Ka[a+=b]=0!==(128&T),Ka[5]=Ka[a+=b]=0!==(64&T),Ka[6]=Ka[a+=b]=0!==(32&T),Ka[7]=Ka[a+=b]=0!==(16&T),Ka[8]=Ka[a+=b]=0!==(8&T),Ka[9]=Ka[a+=b]=0!==(4&T),Ka[10]=Ka[a+=b]=0!==(2&T),Ka[11]=Ka[a+=b]=0!==(1&T),Ka[12]=Ka[a+=b]=0!==(1&U),Ka[13]=Ka[a+=b]=0!==(2&U),Ka[14]=Ka[a+=b]=0!==(4&U),Ka[15]=Ka[a+=b]=0!==(8&U),Ka[16]=Ka[a+=b]=0!==(16&U),Ka[17]=Ka[a+=b]=0!==(32&U),Ka[18]=Ka[a+=b]=0!==(64&U),Ka[19]=Ka[a+=b]=0!==(128&U)}Ma=Ka[P-ea>>>2]},g=function(a,b){F(),Sb&&I(ta),h(!0),Sa=P,Ta=a,Ua=b},h=function(a){if(Ta!==-1){if(!a){var b=P-Sa;if(0===b||1===b)return}F(),0===Ta?S=Ua:1===Ta?T=Ua:2===Ta&&(U=Ua),La=!0,Ta=-1}},i=function(a){F(),Gb=0!=(2&a),Lb||(Fb=Gb)},j=function(a){F();var b=48&a;0===b?b=8:16===b?b=4:32===b?b=2:48===b&&(b=1),wb!==b&&(vb>7?vb=7+(vb-7)/wb*b:vb>=0&&(vb=-1),wb=b),5===(7&a)?(b=2,bb=cb=db=!1):7===(7&a)?(b=1,bb=cb=db=!1):(b=4,bb=0!==(1&a),cb=0!==(2&a),db=0!==(4&a)),_a!==b&&($a>31?$a=31+($a-31)/_a*b:$a>=0&&($a=-1),_a=b)},k=function(a){F();var b=48&a;0===b?b=8:16===b?b=4:32===b?b=2:48===b&&(b=1),Db!==b&&(Cb>7?Cb=7+(Cb-7)/Db*b:Cb>=0&&(Cb=-1),Db=b),5===(7&a)?(b=2,nb=ob=pb=!1):7===(7&a)?(b=1,nb=ob=pb=!1):(b=4,nb=0!==(1&a),ob=0!==(2&a),pb=0!==(4&a)),lb!==b&&(kb>31?kb=31+(kb-31)/lb*b:kb>=0&&(kb=-1),lb=b)},l=function(a){F();var b=0!==(1&a);Pa!=b&&(Pa=b,La=!0),Qa=0!==(2&a),Ra=0!==(4&a);var c=48&a;0===c?c=8:16===c?c=4:32===c?c=2:48===c&&(c=1),\nKb!==c&&(Jb>7?Jb=7+(Jb-7)/Kb*c:Jb>=0&&(Jb=-1),Kb=c)},m=function(){if(F(),bc=!0,Sb&&I(la),P>=ea+(Ob?7:0))return 155!==Za&&(Ya=!0),void(Za=155);var a=0;Ob&&(P>=ea?a=ea-P+8:(a=P-Pb-4>>2,a>8&&(a=8))),Za=157-a,Ya=Za<=155},n=function(){if(F(),bc=!0,Sb&&I(oa),P>=ea+(Ob?7:0))return 155!==jb&&(ib=!0),void(jb=155);var a=0;Ob&&(P>=ea?a=ea-P+8:(a=P-Pb-4>>2,a>8&&(a=8))),jb=157-a,ib=jb<=155},o=function(){if(F(),bc=!0,Sb&&I(qa),P>=ea+(Ob?7:0))return 155!==ub&&(tb=!0),void(ub=155);var a=0;Ob&&(P>=ea?a=ea-P+8:(a=P-Pb-4>>2,a>8&&(a=8))),ub=157-a,tb=ub<=155},p=function(){if(F(),bc=!0,Sb&&I(ra),P>=ea+(Ob?7:0))return 155!==Bb&&(Ab=!0),void(Bb=155);var a=0;Ob&&(P>=ea?a=ea-P+8:(a=P-Pb-4>>2,a>8&&(a=8))),Bb=157-a,Ab=Bb<=155},q=function(){if(F(),Sb&&I(va),P>=ea+(Ob?7:0))return void(Ib=155);var a=0;Ob&&(P>=ea?a=ea-P+8:(a=P-Pb-4>>2,a>8&&(a=8))),Ib=157-a},r=function(){return Sb&&I(Aa),P<ea?(Pb=P,Ob=!0,void s()):P<219?void M(\"Unsupported HMOVE hit\"):(Pb=160-P,Qb=!0,void(Rb=P>=225))},s=function(){var a,b=!1;if(a=Ob?_:_+8,0!==a)if(b=!0,a>0)for(var c=a;c>0;c--)u();else Za+=a,Za<0&&(Za+=160),$a>=0&&($a-=_a*a);if(a=Ob?aa:aa+8,0!==a)if(b=!0,a>0)for(c=a;c>0;c--)v();else jb+=a,jb<0&&(jb+=160),kb>=0&&(kb-=lb*a);if(a=Ob?ba:ba+8,0!==a)if(b=!0,a>0)for(c=a;c>0;c--)w();else ub+=a,ub<0&&(ub+=160),vb>=0&&(vb-=wb*a);if(a=Ob?ca:ca+8,0!=a)if(b=!0,a>0)for(c=a;c>0;c--)x();else Bb+=a,Bb<0&&(Bb+=160),Cb>=0&&(Cb-=Db*a);if(a=Ob?da:da+8,0!=a)if(b=!0,a>0)for(c=a;c>0;c--)y();else Ib+=a,Ib<0&&(Ib+=160),Jb>=0&&(Jb-=Kb*a);b&&F()},t=function(){u(),v(),w(),x(),y()},u=function(){160===++Za&&(Za=0),$a>=0&&(xb&&Za<12&&$a>=28&&$a<=31&&(ub=156),$a-=_a),156===Za?Ya?Ya=!1:$a=31+_a*(4===_a?5:6):12===Za?bb&&($a=31+5*_a):28===Za?cb&&($a=31+5*_a):60===Za&&db&&($a=31+5*_a)},v=function(){160===++jb&&(jb=0),kb>=0&&(Eb&&jb<12&&kb>=28&&kb<=31&&(Bb=156),kb-=lb),156===jb?ib?ib=!1:kb=31+lb*(4===lb?5:6):12===jb?nb&&(kb=31+5*lb):28===jb?ob&&(kb=31+5*lb):60===jb&&pb&&(kb=31+5*lb)},w=function(){160===++ub&&(ub=0),vb>=0&&(vb-=wb),156===ub?tb?tb=!1:vb=7+4*wb:12===ub?bb&&(vb=7+4*wb):28===ub?cb&&(vb=7+4*wb):60===ub&&db&&(vb=7+4*wb)},x=function(){160===++Bb&&(Bb=0),Cb>=0&&(Cb-=Db),156===Bb?Ab?Ab=!1:Cb=7+4*Db:12===Bb?nb&&(Cb=7+4*Db):28===Bb?ob&&(Cb=7+4*Db):60===Bb&&pb&&(Cb=7+4*Db)},y=function(){160===++Ib&&(Ib=0),Jb>=0&&(Jb-=Kb),156===Ib&&(Jb=7+4*Kb)},z=function(a,b){return F(),Sb&&I(0===a?ma:pa),Nb>=ga?void M(\">>> Max player delayed changes reached: \"+ga):(Mb[Nb][0]=P,Mb[Nb][1]=a,Mb[Nb][2]=b,void Nb++)},A=function(){if(0!==Nb&&Mb[0][0]!==P){for(var a=0;a<Nb;a++){var b=Mb[a];0===b[1]?(Wa=b[2],fb=gb):(gb=b[2],Va=Wa,Fb=Gb)}Nb=0}},B=function(a){F(),(xb=0!==(2&a))&&(rb=!1)},C=function(a){F(),(Eb=0!==(2&a))&&(yb=!1)},D=function(a){0!=(2&a)!==Ia&&(Ja=!0,Q=!Ia),0!==(64&a)?cc=!0:(cc=!1,dc?yc&=127:yc|=128,ec?zc&=127:zc|=128),0!=(128&a)?(fc=!0,hc=jc=0,uc&=127,vc&=127,wc&=127,xc&=127):fc=!1},E=function(){Ja=!1,Ia=Q,Sb&&I(ya),F()},F=function(){ac=P,_b&&(_b=!1)},G=function(){P===ac&&(_b=!0,ac=-1)},H=function(){mc=nc=oc=pc=qc=rc=sc=tc=0,uc=vc=wc=xc=0,yc=zc=128},I=function(a){Vb[P]=a},J=function(){if(jt.Util.arrayFillSegment(Ga,0,ea,$b),Tb>=4&&kc.monitor.currentLine()%10==0)for(var a=0;a<fa;a++)0===Vb[a]&&(a<ea?a%6!=0&&66!=a&&63!=a||(Vb[a]=wa):(a-ea-1)%6==0&&(Vb[a]=wa));if(Tb>=3)for(a=0;a<fa;a++)0!=Vb[a]&&(Ga[a]=Vb[a],Vb[a]=0);F()},K=function(){Xa=ka,hb=na,sb=qa,zb=ra,Hb=va,Na=sa,Oa=ua,$b=Tb>=1?xa:ia,Zb=Tb>=2?ya:ha},L=function(){$b=ia,Zb=ha,Oa=R[0],jt.Util.arrayFill(Ga,$b),F()},M=function(a){Sb&&jt.Util.log(\"Line: \"+kc.monitor.currentLine()+\", Pixel: \"+P+\". \"+a)},N=jt.ConsoleControls;this.controlStateChanged=function(a,b){switch(a){case N.JOY0_BUTTON:return void(b?(dc=!0,yc&=127):(dc=!1,cc||(yc|=128)));case N.JOY1_BUTTON:return void(b?(ec=!0,zc&=127):(ec=!1,cc||(zc|=128)))}if(b)switch(a){case N.DEBUG:return void c.debug(Tb+1);case N.NO_COLLISIONS:return Ub=!Ub,void kc.showOSD(Ub?\"Collisions OFF\":\"Collisions ON\",!0);case N.PAUSE:return Wb=!Wb,Xb=1,void kc.showOSD(Wb?\"PAUSE\":\"RESUME\",!0);case N.FRAME:return void(Wb&&(Xb=1));case N.TRACE:return void(Da.trace=!Da.trace)}},this.controlValueChanged=function(a,b){switch(a){case N.PADDLE0_POSITION:return void(gc=b);case N.PADDLE1_POSITION:return void(ic=b)}},this.controlsStateReport=function(a){},this.saveState=function(){return{lp:btoa(jt.Util.uInt32ArrayToByteString(Ga)),lo:ac,oc:0|bc,rl:0|_b,vs:0|Ha,vb:0|Ia,vbd:0|Ja,vbn:0|Q,f:jt.Util.booleanArrayToByteString(Ka),fi:0|La,fp:0|Ma,fc:Na,fb:Oa,fr:0|Pa,fs:0|Qa,ft:0|Ra,p0:Va,p0d:Wa,p0c:Xa,p0rr:0|Ya,p0co:Za,p0sc:$a,p0ss:_a,p0v:0|ab,p0cc:0|bb,p0mc:0|cb,p0wc:0|db,p0r:0|eb,p1:fb,p1d:gb,p1c:hb,p1rr:0|ib,p1co:jb,p1sc:kb,p1ss:lb,p1v:0|mb,p1cc:0|nb,p1mc:0|ob,p1wc:0|pb,p1r:0|qb,m0:0|rb,m0c:sb,m0rr:0|tb,m0co:ub,m0sc:vb,m0ss:wb,m0r:0|xb,m1:0|yb,m1c:zb,m1rr:0|Ab,m1co:Bb,m1sc:Cb,m1ss:Db,m1r:0|Eb,b:0|Fb,bd:0|Gb,bc:Hb,bco:Ib,bsc:Jb,bss:Kb,bv:0|Lb,fd:Sa,fdc:Ta,fdp:Ua,pds:btoa(jt.Util.uInt8BiArrayToByteString(Mb)),pdc:Nb,hb:0|Ob,hc:Pb,PF0:S,PF1:T,PF2:U,AC0:V,AC1:W,AF0:X,AF1:Y,AV0:Z,AV1:$,HP0:_,HP1:aa,HM0:ba,HM1:ca,HB:da,XM0P:mc,XM1P:nc,XP0F:oc,XP1F:pc,XM0F:qc,XM1F:rc,XBP:sc,XPM:tc}},this.loadState=function(a){Ga=jt.Util.byteStringToUInt32Array(atob(a.lp)),ac=a.lo,bc=!!a.oc,_b=!!a.rl,Ha=!!a.vs,Ia=!!a.vb,Ja=!!a.vbd,Q=!!a.vbn,Ka=jt.Util.byteStringToBooleanArray(a.f),La=!!a.fi,Ma=!!a.fp,Na=a.fc,Oa=a.fb,Pa=!!a.fr,Qa=!!a.fs,Ra=!!a.ft,Va=a.p0,Wa=a.p0d,Xa=a.p0c,Ya=!!a.p0rr,Za=a.p0co,$a=a.p0sc,_a=a.p0ss,ab=!!a.p0v,bb=!!a.p0cc,cb=!!a.p0mc,db=!!a.p0wc,eb=!!a.p0r,fb=a.p1,gb=a.p1d,hb=a.p1c,ib=!!a.p1rr,jb=a.p1co,kb=a.p1sc,lb=a.p1ss,mb=!!a.p1v,nb=!!a.p1cc,ob=!!a.p1mc,pb=!!a.p1wc,qb=!!a.p1r,rb=!!a.m0,sb=a.m0c,tb=!!a.m0rr,ub=a.m0co,vb=a.m0sc,wb=a.m0ss,xb=!!a.m0r,yb=!!a.m1,zb=a.m1c,Ab=!!a.m1rr,Bb=a.m1co,Cb=a.m1sc,Db=a.m1ss,Eb=!!a.m1r,Fb=!!a.b,Gb=!!a.bd,Hb=a.bc,Ib=a.bco,Jb=a.bsc,Kb=a.bss,Lb=!!a.bv,Sa=a.fd,Ta=a.fdc,Ua=a.fdp,Mb=jt.Util.byteStringToUInt8BiArray(atob(a.pds),3),Nb=a.pdc,Ob=!!a.hb,Pb=a.hc,S=a.PF0,T=a.PF1,U=a.PF2,V=a.AC0,lc.getChannel0().setControl(15&V),W=a.AC1,lc.getChannel1().setControl(15&W),X=a.AF0,lc.getChannel0().setDivider((31&X)+1),Y=a.AF1,lc.getChannel1().setDivider((31&Y)+1),Z=a.AV0,lc.getChannel0().setVolume(15&Z),$=a.AV1,lc.getChannel1().setVolume(15&$),_=a.HP0,aa=a.HP1,ba=a.HM0,ca=a.HM1,da=a.HB,mc=a.XM0P,nc=a.XM1P,oc=a.XP0F,pc=a.XP1F,qc=a.XM0F,rc=a.XM1F,sc=a.XBP,tc=a.XPM,Sb&&K()};var O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,aa,ba,ca,da,ea=68,fa=228,ga=50,ha=4278190080,ia=4278190080,ja=4292730333,ka=4278190335,la=4280427195,ma=4279308663,na=4294901760,oa=4290454050,pa=4285993233,qa=4284901119,ra=4294927974,sa=4282681412,ta=4281589043,ua=4281549875,va=4278255615,wa=4280295456,xa=4282664004,ya=4280953386,za=4287103112,Aa=4294967295,Ba=15,Ca=63,Da=a,Ea=b,Fa=!1,Ga=jt.Util.arrayFill(new Array(fa),0),Ha=!1,Ia=!1,Ja=!1,Ka=jt.Util.arrayFill(new Array(40),!1),La=!0,Ma=!1,Na=4278190080,Oa=4278190080,Pa=!1,Qa=!1,Ra=!1,Sa=-1,Ta=-1,Ua=-1,Va=0,Wa=0,Xa=4278190080,Ya=!1,Za=0,$a=-1,_a=4,ab=!1,bb=!1,cb=!1,db=!1,eb=!1,fb=0,gb=0,hb=4278190080,ib=!1,jb=0,kb=-1,lb=4,mb=!1,nb=!1,ob=!1,pb=!1,qb=!1,rb=!1,sb=4278190080,tb=!1,ub=0,vb=-1,wb=8,xb=!1,yb=!1,zb=4278190080,Ab=!1,Bb=0,Cb=-1,Db=8,Eb=!1,Fb=!1,Gb=!1,Hb=4278190080,Ib=0,Jb=-1,Kb=8,Lb=!1,Mb=jt.Util.arrayFillWithArrayClone(new Array(ga),[0,0,0]),Nb=0,Ob=!1,Pb=-1,Qb=!1,Rb=!1,Sb=!1,Tb=0,Ub=!1,Vb=jt.Util.arrayFill(new Array(fa),0),Wb=!1,Xb=0,Yb=ja,Zb=ha,$b=ha,_b=!1,ac=-1,bc=!1,cc=!1,dc=!1,ec=!1,fc=!1,gc=-1,hc=0,ic=-1,jc=0,kc=new jt.TiaVideoSignal,lc=new jt.TiaAudioSignal,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0},jt.Bus=function(a,b,c,d){function e(e){f=a,g=b,h=c,i=d,f.connectBus(e),g.connectBus(e),h.connectBus(e)}this.powerOn=function(){l=0,j||(g.getVideoOutput().showOSD(\"NO CARTRIDGE INSERTED!\",!0),l=256*Math.random()|0),null!=j&&j.powerOn(),i.powerOn(),h.powerOn(),f.powerOn(),g.powerOn()},this.powerOff=function(){g.powerOff(),f.powerOff(),h.powerOff(),i.powerOff()},this.setCartridge=function(a){j=a,j&&(l=0,j.connectBus(this)),k=j&&j.needsBusMonitoring();\n},this.getCartridge=function(){return j},this.getTia=function(){return g},this.clockPulse=function(){h.clockPulse(),f.clockPulse()},this.read=function(a){return k&&j.monitorBusBeforeRead(a,l),(a&m)===n?j&&(l=j.read(a)):l=(a&o)===p?i.read(a):(a&s)===t?h.read(a):63&l|g.read(a),l},this.write=function(a,b){k&&j.monitorBusBeforeWrite(a,b),l=b,(a&q)===r?g.write(a,b):(a&o)===p?i.write(a,b):(a&s)===t?h.write(a,b):j&&j.write(a,b)};var f,g,h,i,j,k=!1,l=0,m=4096,n=4096,o=4736,p=128,q=4224,r=0,s=4736,t=640;e(this)},jt.Clock=function(a,b){function c(){e(b||p)}var d=this;this.go=function(){h=!0,n?n=!1:f()},this.pauseOnNextPulse=function(a){o=a||null,n=!0},this.setFrequency=function(a){h?this.pauseOnNextPulse(function(){e(a),d.go()}):e(a)};var e=function(a){i=a,j=1e3/a,k=window.requestAnimationFrame&&a===p},f=function(){return n?(g(),o&&o(),void(o=null)):(a.clockPulse(),void(k?l=window.requestAnimationFrame(f):m||(m=window.setInterval(f,j))))},g=function(){l&&(window.cancelAnimationFrame(l),l=null),m&&(window.clearTimeout(m),m=null),n=!1,h=!1},h=!1,i=null,j=null,k=null,l=null,m=null,n=!1,o=null,p=Javatari.SCREEN_NATURAL_FPS;c()},jt.ConsoleControls={JOY0_UP:11,JOY0_DOWN:12,JOY0_LEFT:13,JOY0_RIGHT:14,JOY0_BUTTON:15,JOY1_UP:21,JOY1_DOWN:22,JOY1_LEFT:23,JOY1_RIGHT:24,JOY1_BUTTON:25,PADDLE0_POSITION:31,PADDLE1_POSITION:41,PADDLE0_BUTTON:35,PADDLE1_BUTTON:45,POWER:51,BLACK_WHITE:52,SELECT:53,RESET:54,DIFFICULTY0:55,DIFFICULTY1:56,POWER_OFF:61,DEBUG:101,NO_COLLISIONS:102,TRACE:103,PAUSE:104,FRAME:105,FAST_SPEED:106,CARTRIDGE_FORMAT:107,CARTRIDGE_CLOCK_DEC:108,CARTRIDGE_CLOCK_INC:109,CARTRIDGE_REMOVE:110,VIDEO_STANDARD:111,POWER_FRY:112,SAVE_STATE_0:{to:0},SAVE_STATE_1:{to:1},SAVE_STATE_2:{to:2},SAVE_STATE_3:{to:3},SAVE_STATE_4:{to:4},SAVE_STATE_5:{to:5},SAVE_STATE_6:{to:6},SAVE_STATE_7:{to:7},SAVE_STATE_8:{to:8},SAVE_STATE_9:{to:9},SAVE_STATE_10:{to:10},SAVE_STATE_11:{to:11},SAVE_STATE_12:{to:12},LOAD_STATE_0:{from:0},LOAD_STATE_1:{from:1},LOAD_STATE_2:{from:2},LOAD_STATE_3:{from:3},LOAD_STATE_4:{from:4},LOAD_STATE_5:{from:5},LOAD_STATE_6:{from:6},LOAD_STATE_7:{from:7},LOAD_STATE_8:{from:8},LOAD_STATE_9:{from:9},LOAD_STATE_10:{from:10},LOAD_STATE_11:{from:11},LOAD_STATE_12:{from:12},SAVE_STATE_FILE:201,playerDigitalControls:[11,12,13,14,15,21,22,23,24,25,35,45]},jt.AtariConsole=function(){function a(){u(),v(),k()}function b(){this.insert=function(a,b){b&&e.powerIsOn&&e.powerOff(),h(a),b&&!e.powerIsOn&&e.powerOn()},this.inserted=function(){return i()},this.cartridgeInserted=function(b,c){for(var d=0;d<a.length;d++)a[d].cartridgeInserted(b,c)},this.addInsertionListener=function(b){a.indexOf(b)<0&&(a.push(b),b.cartridgeInserted(this.inserted()))},this.removeInsertionListener=function(b){jt.Util.arrayRemove(a,b)};var a=[]}function c(){this.connectControls=function(b){a=b},this.cartridgeInserted=function(a,b){b&&D.removeForwardedInput(b),a&&D.addForwardedInput(a)},this.clockPulse=function(){a.clockPulse()},this.controlStateChanged=function(a,d){for(var e=0;e<c;e++)b[e].controlStateChanged(a,d)},this.controlValueChanged=function(a,d){for(var e=0;e<c;e++)b[e].controlValueChanged(a,d)},this.controlsStateReport=function(a){for(var d=0;d<c;d++)b[d].controlsStateReport(a)},this.addForwardedInput=function(a){b.push(a),c=b.length},this.removeForwardedInput=function(a){jt.Util.arrayRemove(b,a),c=b.length},this.addRedefinitionListener=function(a){d.indexOf(a)<0&&(d.push(a),a.controlsStatesRedefined())},this.controlsStatesRedefined=function(){for(var a=0;a<d.length;a++)d[a].controlsStatesRedefined()};var a,b=[],c=0,d=[]}function d(){this.connectMedia=function(b){a=b},this.getMedia=function(){return a},this.cartridgeInserted=function(a){a&&a.connectSaveStateSocket(this)},this.externalStateChange=function(){},this.saveState=function(c){if(e.powerIsOn&&a){var d=q();d.v=b,a.saveState(c,d)?e.showOSD(\"State \"+c+\" saved\",!0):e.showOSD(\"State \"+c+\" save failed\",!0)}},this.loadState=function(c){if(a){var d=a.loadState(c);if(!d)return void e.showOSD(\"State \"+c+\" not found\",!0);if(d.v!==b)return void e.showOSD(\"State \"+c+\" load failed, wrong version\",!0);r(d),e.showOSD(\"State \"+c+\" loaded\",!0)}},this.saveStateFile=function(){if(e.powerIsOn&&a){var c=E.inserted()&&E.inserted().rom.info.l,d=q();d.v=b,a.saveStateFile(c,d)?e.showOSD(\"State Cartridge saved\",!0):e.showOSD(\"State Cartridge save failed\",!0)}},this.loadStateFile=function(c){if(a){var d=a.loadStateFile(c);if(d)return d.v!==b?(e.showOSD(\"State Cartridge load failed, wrong version\",!0),!0):(r(d),e.showOSD(\"State Cartridge loaded\",!0),!0)}};var a,b=1}var e=this;this.powerOn=function(a){this.powerIsOn&&this.powerOff(),A.powerOn(),this.powerIsOn=!0,D.controlsStatesRedefined(),l(),a||f()},this.powerOff=function(){g(),A.powerOff(),this.powerIsOn=!1,D.controlsStatesRedefined()},this.clockPulse=function(){H&&m(),D.clockPulse(),y.frame(),this.framesGenerated++},this.getCartridgeSocket=function(){return E},this.getControlsSocket=function(){return D},this.getVideoOutput=function(){return y.getVideoOutput()},this.getAudioOutput=function(){return y.getAudioOutput()},this.getSavestateSocket=function(){return F},this.showOSD=function(a,b){this.getVideoOutput().showOSD(a,b)};var f=function(){B.go()},g=function(){B.pauseOnNextPulse()},h=function(a){Javatari.cartridge=a;var b=i();A.setCartridge(a),E.cartridgeInserted(a,b)},i=function(){return A.getCartridge()},j=function(a){C!==a&&(C=a,y.setVideoStandard(C),s()),e.showOSD((G?\"AUTO: \":\"\")+C.name,!1)},k=function(){G=!0,e.powerIsOn?l():j(jt.VideoStandard.NTSC)},l=function(){if(G&&!H)return A.getCartridge()?void(y.getVideoOutput().monitor&&(H=!0,I=0,y.getVideoOutput().monitor.videoStandardDetectionStart())):void j(jt.VideoStandard.NTSC)},m=function(){I++;var a=y.getVideoOutput().monitor.getVideoStandardDetected();!a&&I<J||(a?j(a):e.showOSD(\"AUTO: FAILED\",!1),H=!1)},n=function(a){G=!1,j(a)},o=function(){z.powerFry()},p=function(){},q=function(){return{t:y.saveState(),p:x.saveState(),r:z.saveState(),c:w.saveState(),ca:i()&&i().saveState(),vs:C.name}},r=function(a){e.powerIsOn||e.powerOn(),y.loadState(a.t),x.loadState(a.p),z.loadState(a.r),w.loadState(a.c),h(a.ca&&jt.CartridgeDatabase.createCartridgeFromSaveState(a.ca)),j(jt.VideoStandard[a.vs]),D.controlsStatesRedefined()},s=function(){var a=C.fps;B.setFrequency(a),y.getAudioOutput().setFps(a)},t=function(){var a=600;B.setFrequency(a),y.getAudioOutput().setFps(a)},u=function(){w=new jt.M6502,x=new jt.Pia,y=new jt.Tia(w,x),z=new jt.Ram,A=new jt.Bus(w,y,x,z),B=new jt.Clock(e,jt.VideoStandard.NTSC.fps)},v=function(){D=new c,D.addForwardedInput(e),D.addForwardedInput(y),D.addForwardedInput(x),E=new b,E.addInsertionListener(y.getAudioOutput()),E.addInsertionListener(D),F=new d,E.addInsertionListener(F)};this.powerIsOn=!1,this.framesGenerated=0;var w,x,y,z,A,B,C,D,E,F,G=!1,H=!1,I=0,J=90,K=jt.ConsoleControls;this.controlStateChanged=function(a,b){if(a==K.FAST_SPEED)return void(b?(e.showOSD(\"FAST FORWARD\",!0),t()):(e.showOSD(null,!0),s()));if(b)switch(a){case K.POWER:e.powerIsOn?e.powerOff():e.powerOn();break;case K.POWER_OFF:e.powerIsOn&&e.powerOff();break;case K.POWER_FRY:o();break;case K.SAVE_STATE_0:case K.SAVE_STATE_1:case K.SAVE_STATE_2:case K.SAVE_STATE_3:case K.SAVE_STATE_4:case K.SAVE_STATE_5:case K.SAVE_STATE_6:case K.SAVE_STATE_7:case K.SAVE_STATE_8:case K.SAVE_STATE_9:case K.SAVE_STATE_10:case K.SAVE_STATE_11:case K.SAVE_STATE_12:F.saveState(a.to);break;case K.SAVE_STATE_FILE:F.saveStateFile();break;case K.LOAD_STATE_0:case K.LOAD_STATE_1:case K.LOAD_STATE_2:case K.LOAD_STATE_3:case K.LOAD_STATE_4:case K.LOAD_STATE_5:case K.LOAD_STATE_6:case K.LOAD_STATE_7:case K.LOAD_STATE_8:case K.LOAD_STATE_9:case K.LOAD_STATE_10:case K.LOAD_STATE_11:case K.LOAD_STATE_12:F.loadState(a.from);break;case K.VIDEO_STANDARD:e.showOSD(null,!0),G?n(jt.VideoStandard.NTSC):C==jt.VideoStandard.NTSC?n(jt.VideoStandard.PAL):k();break;case K.CARTRIDGE_FORMAT:p();break;case K.CARTRIDGE_REMOVE:\nJavatari.CARTRIDGE_CHANGE_DISABLED?e.showOSD(\"Cartridge change is disabled\",!0):E.insert(null,!1)}},this.controlValueChanged=function(a,b){},this.controlsStateReport=function(a){a[K.POWER]=e.powerIsOn},this.startProfiling=function(){var a=this.framesGenerated;setInterval(function(){jt.Util.log(e.framesGenerated-a),a=e.framesGenerated},1e3)},this.runFramesAtTopSpeed=function(a){g();for(var b=performance.now(),c=0;c<a;c++)e.clockPulse();var d=performance.now()-b;jt.Util.log(\"Done running \"+a+\" in \"+d+\" ms\"),jt.Util.log(a/(d/1e3)+\"frames/sec\"),f()},a()},jt.ROM=function(a,b,c){this.source=a,this.content=b,c?this.info=c:this.info=jt.CartridgeDatabase.produceInfo(this),this.saveState=function(){return{s:this.source,i:this.info}}},jt.ROM.loadState=function(a){return new jt.ROM(a.s,null,a.i)},jt.CartridgeInfoLibrary={version:20130406,\"0685BD0BCB975CEEF7041749A5454A48\":{n:\"11 Sprite Demo (Piero Cavina) (PD)\"},\"1862FCA4F98E66F363308B859B5863AF\":{n:\"128-in-1 Junior Console (Chip 1 of 4) (1991) (Atari) (PAL)\"},\"715DD9E0240638D441A3ADD49316C018\":{n:\"128-in-1 Junior Console (Chip 2 of 4) (1991) (Atari) (PAL)\"},\"0D6B974FE58A1BDD453600401C407856\":{n:\"128-in-1 Junior Console (Chip 3 or 4) (1991) (Atari) (PAL)\"},\"7F525B07BC98080CC8950F7284E52EDE\":{n:\"128-in-1 Junior Console (Chip 4 of 4) (1991) (Atari) (PAL)\"},\"7F430C33044E0354815392B53A9A772D\":{n:\"2 Pak Special - Cavern Blaster, City War (1992) (HES) (PAL)\"},\"7732E4E4CC2644F163D6650DDCC9D9DF\":{n:\"2 Pak Special - Challenge, Spitfallrfing (1990) (HES) (PAL)\"},FD7464EDAA8CC264B97BA0D13E7F0678:{n:\"2 Pak Special - Challenge, Surfing (1990) (HES) (PAL) [a]\"},\"8C8A26ED57870DABA8E13162D497BAD1\":{n:\"2 Pak Special - Dolphin, Oink (1990) (HES) (PAL)\"},ED1306436CE237AFC5A7ED3F77134202:{n:\"2 Pak Special - Dolphin, Pigs 'n' Wolf (1990) (HES) (PAL)\"},F8C1C4A41303BD40B0D6C81BFAF8573B:{n:\"2 Pak Special - Dungeon Master, Creature Strike (1992) (HES) (PAL)\"},AB434F4C942D6472E75D5490CC4DD128:{n:\"2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL)\"},\"5B9C2E0012FBFD29EFD3306359BBFC4A\":{n:\"2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL) [a]\"},\"2E842C2EE22E9DAD9DF16EED091315C4\":{n:\"2 Pak Special - Motocross, Boom Bang (1990) (HES) (PAL)\"},A94B8CA630F467B574B614808D813919:{n:\"2 Pak Special - Space Voyage, Fire Alert (1992) (HES) (PAL)\"},\"02A5FC90A0D183F870E8EEBAC1F16591\":{n:\"2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL)\"},\"4D2CEF8F19CAFEEC72D142E34A1BBC03\":{n:\"2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL) [a]\"},\"72FD08DEED1D6195942E0C6F392E9848\":{n:\"2 Pak Special - Wall Defender, Planet Patrol (1990) (HES) (PAL)\"},\"9C40BF810F761FFC9C1B69C4647A8B84\":{n:\"2 in 1 - Frostbite, River Raid (Unknown)\"},\"94E3FBC19107A169909E274187247A9D\":{n:\"2-in-1 Freeway and Tennis (Unknown)\"},FA529EC88ECA679F6D5FD0CCB2120E46:{n:\"20 Sprites at Once Demo 1 (PD)\"},\"7A93D0C029EAA72236523EEDC3F19645\":{n:\"20 Sprites at Once Demo 2 (PD)\"},\"6C449DB9BBBD90972AD1932D6AF87330\":{n:\"20 Sprites at Once Demo 3 (PD)\"},BFA58198C6B9CD8062EE76A2B38E9B33:{n:\"20 Sprites at Once Demo 4 (PD)\"},D2D8C4F1EA7F347C8BCC7D24F45AA338:{n:\"20 Sprites at Once Demo 5 (PD)\"},AD2E6BFB3B9B9B36BA8BF493CE764C49:{n:\"2600 Collison Demo 1 (Piero Cavina) (PD)\"},\"777AECE98D7373998FFB8BC0B5EFF1A2\":{n:\"2600 Collison Demo 2 (Piero Cavina) (PD)\"},EADA0DD61CE13F8317DE774DC1E68604:{n:\"2600 Digital Clock (Demo 1) (PD)\"},\"3E5CA1AFAA27C5DA3C54C9942FEC528B\":{n:\"2600 Digital Clock (Demo 2) (PD)\"},F6EFA00AE99AAF33E427B674BCFD834D:{n:\"2600 Digital Clock (Demo 3) (PD)\"},\"75E8D8B9E9C5C67C2226DBFD77DCFA7D\":{n:\"2600 Digital Clock (V b1) (PD)\"},\"5E99AA93D0ACC741DCDA8752C4E813CE\":{n:\"2600 Digital Clock (V b2) (PD)\"},\"62FFD175CAC3F781EF6E4870136A2520\":{n:\"2600 Digital Clock (V x.xx) (PD)\"},\"4FAEB04B1B7FB0FA25DB05753182A898\":{n:\"2600 Digital Clock (V x.xx) (PD) [a1]\"},\"655C84E5B951258C9D20F0BF2B9D496D\":{n:\"2600_2003 Demo (PD)\"},B95A6274CA0E0C773BFDC06B4C3DAA42:{n:\"3-D Corridor (29-03-2003) (Paul Slocum)\"},\"6B8FB021BB2E1F1E9BD7EE57F2A8E709\":{n:\"3-D Corridor (29-03-2003) (Paul Slocum) (PD) [a]\"},\"8D00A38F4C8F8800F1C237215AC243FC\":{n:\"3-D Corridor (Green) (30-03-2003) (AD)\"},\"7B6F3348DBF71ADA88DB0FDAF7FEEFE0\":{n:\"3-D Corridor (Pink Spiral) (31-03-2003) (AD)\"},B6960BE26BEE87D53BA4E2E71CFE772F:{n:\"3-D Corridor (Spiral Words) (31-03-2003) (AD)\"},\"493DAAF9FB1BA450EBA6B8ED53FFB37D\":{n:\"3-D Corridor Demo (27-03-2003) (MP)\"},\"4947C9DE2E28B2F5F3B0C40CE7E56D93\":{n:\"3-D Corridor Demo 2 (29-03-2003) (MP)\"},\"0DB4F4150FECF77E4CE72CA4D04C052F\":{n:\"3-D Tic-Tac-Toe (1980) (Atari)\"},F3213A8A702B0646D2EAF9EE0722B51C:{n:\"3-D Tic-Tac-Toe (1980) (Atari) (4K)\"},E3600BE9EB98146ADAFDC12D91323D0F:{n:\"3-D Tic-Tac-Toe (1980) (Atari) (PAL)\"},\"854B68B93E7123A3BE42B5A2A41F75D7\":{n:\"3-D Tic-Tac-Toe (1980) (Atari) (PAL) (4K)\"},\"7B5207E68EE85B16998BEA861987C690\":{n:\"3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)\"},\"402B1CA3C230A60FB279D4A2A10FA677\":{n:\"3-D Tic-Tac-Toe (Unknown) (PAL) (4K)\"},\"291DD47588B9158BEEBE4ACCC3A093A6\":{n:\"32 in 1 Console ROM (02-10-1989) (Atari) (Prototype) (PAL)\"},\"291BCDB05F2B37CDF9452D2BF08E0321\":{n:\"32 in 1 Game Cartridge (1988) (Atari) (Prototype) (PAL)\"},\"792B1D93EB1D8045260C840B0688EC8F\":{n:\"3E Bankswitch Test (TIA @ $00)\"},\"9B150A42FC788960FBB4CBE250259EE2\":{n:\"3E Bankswitch Test (TIA @ $40)\"},\"703F0F7AF350B0FA29DFE5FBF45D0D75\":{n:\"4 Game in One Dark Green (1983) (BitCorp) (PAL)\"},\"31BB9B8CEED46CB3E506777A9E65F3CE\":{n:\"4 Game in One Light Green (1983) (BitCorp) (PAL)\"},FE6ABC0F63E31E2646C9C600926B5B7F:{n:\"4 in 1 (02-19-1987) (Atari) (Prototype)\"},\"6D218DAFBF5A691045CDC1F67CEB6A8F\":{n:\"6 Digit Score Display (1998) (Robin Harbron) (PD)\"},\"7465B06B6E25A4A6C6D77D02242AF6D6\":{n:\"8 in 1 (01-16-92) (Atari) (Prototype)\"},\"2CEFA695DF2ED020899A7DF7BB1E3A95\":{n:\"A-Team (2002) (Manuel Polik) (Hack)\"},DAFC3945677CCC322CE323D1E9930BEB:{n:\"A-Team (Atari) (Prototype) (PAL)\"},C02E1AFA0671E438FD526055C556D231:{n:\"A-Team (Atari) (Prototype) (PAL60)\"},C00734A2233EF683D9B6E622AC97A5C8:{n:\"A-Team, The (03-30-1984) (Atari) (Prototype)\"},CD5AF682685CFECBC25A983E16B9D833:{n:\"A-Team, The (05-08-1984) (Atari) (Prototype)\"},\"537ED1E0D80E6C9F752B33EA7ACBE079\":{n:\"A-VCS-tec Challenge (beta 5) (PD)\"},\"8786C1E56EF221D946C64F6B65B697E9\":{n:\"AKA Space Adventure\"},\"00F7985C20B8BDF3C557FAC4D3F26775\":{n:\"AStar (NTSC)\"},\"3FD1F9D66A418C9F787FC5799174DDB7\":{n:\"AStar (PAL)\"},A3FEE8CE15525EA00D45A06F04C215D1:{n:\"AStar (PAL60)\"},\"17EE23E5DA931BE82F733917ADCB6386\":{n:\"Acid Drop (1992) (Salu) (PAL)\"},\"09274C3FC1C43BF1E362FDA436651FD8\":{n:\"Acid Drop (TJ)\"},B9F6FA399B8CD386C235983EC45E4355:{n:\"Action Force (1983) (Parker Bros) (PAL)\",p:1},D573089534CA596E64EFEF474BE7B6BC:{n:\"Action Force (1983) (Parker Bros) (PAL) [a]\",p:1},\"543B4B8FF1D616FA250C648BE428A75C\":{n:\"Adventure (1978) (Warren Robinett) (Hack)\"},\"157BDDB7192754A45372BE196797F284\":{n:\"Adventure (1980) (Atari)\"},\"4B27F5397C442D25F0C418CCDACF1926\":{n:\"Adventure (1980) (Atari) (PAL)\"},\"9BE58A14E055B0E7581FC4D6C2F6B31D\":{n:\"Adventure (Color Scrolling) (Hack)\"},A5B7F420CA6CC1384DA0FED523920D8E:{n:\"Adventure (New Graphics) (Hack)\"},\"171CD6B55267573E6A9C2921FB720794\":{n:\"Adventure 34 (Kurt Howe) (Hack)\"},E923001015BEDD7901569F035D9C592C:{n:\"Adventure II (Hack)\"},E2846AF3E4D172B251AB77CBDD01761E:{n:\"Adventure Plus (2003) (Steve Engelhardt) (Hack)\"},CA4F8C5B4D6FB9D608BB96BC7EBD26C7:{n:\"Adventures of TRON (1982) (M Network)\"},\"06CFD57F0559F38B9293ADAE9128FF88\":{n:\"Adventures on GX-12 (1989) (Telegames) (PAL)\"},\"35BE55426C1FEC32DFB503B4F0651572\":{n:\"Air Raid (Men-A-Vision) (PAL)\",c:1},A9CB638CD2CB2E8E0643D7A67DB4281C:{n:\"Air Raiders (1982) (M Network)\"},F066BEA7AB0A37B83C83C924A87C5B67:{n:\"Air Raiders (1982) (Unknown)\"},DA0FB2A484D0D2D8F79D6E063C94063D:{n:\"Air Raiders (1982) (Unknown) [a]\"},CF3A9ADA2692BB42F81192897752B912:{n:\"Air Raiders (Unknown) (PAL)\"},\"16CB43492987D2F32B423817CDAAF7C4\":{n:\"Air-Sea Battle (1977) (Atari)\"},\"1D1D2603EC139867C1D1F5DDF83093F1\":{n:\"Air-Sea Battle (1977) (Atari) (4K)\"},\"0C7926D660F903A2D6910C254660C32C\":{\nn:\"Air-Sea Battle (1977) (Atari) (PAL)\"},\"8AAD33DA907BED78B76B87FCEAA838C1\":{n:\"Air-Sea Battle (32 in 1) (1988) (Atari) (PAL)\"},\"605DCB73D22F4EFDB90EF9DA2F290F7C\":{n:\"Air-Sea Battle (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"98E5E4D5C4DD9A986D30FD62BD2F75AE\":{n:\"Air-Sea Battle (Unknown) (Hack) (4K)\"},E5FCC62E1D73706BE7B895E887E90F84:{n:\"Air-Sea Battle (Unknown) (PAL) (4K)\"},\"4D77F291DCA1518D7D8E47838695F54B\":{n:\"Airlock (1982) (Data Age)\"},\"8C7E5E2329F4F4E06CBCC994A30FD352\":{n:\"Airlock (1982) (Data Age) (Prototype)\"},F1A0A23E6464D954E3A9579C4CCD01C8:{n:\"Alien (1982) (20th Century Fox)\",c:1},\"956496F81775DE0B69A116A0D1AD41CC\":{n:\"Alien (CCE)\",c:1},\"1287535256BF5DFF404839AC9E25C3E7\":{n:\"Alien Pac-Man (PacManPlus) (Hack)\",c:1},E1A51690792838C5C687DA80CD764D78:{n:\"Alligator People (1983) (20th Century Fox) (Prototype)\"},DF95E4AF466C809619299F49ECE92365:{n:\"Alpha Beam with Ernie (06-03-1983) (Atari) (Prototype) (PAL)\"},\"8F5AC5139419C5D49BACC296E342A247\":{n:\"Alpha Beam with Ernie (12-22-1983) (Atari) (Prototype)\"},\"9E01F7F95CB8596765E03B9A36E8E33C\":{n:\"Alpha Beam with Ernie (1983) (Atari)\"},F2D40C70CF3E1D03BC112796315888D9:{n:\"Alpha Beam with Ernie (1983) (Atari) (PAL)\"},B0BA51723B9330797985808DB598FC31:{n:\"Alpha Beam with Ernie (1983) (Atari) (PAL) [a]\"},\"2A10053FD08664C7CFBBB104386ED77F\":{n:\"Alpha Demo - The Beta Demo (2000) (MP)\"},FDF6680B2B1E8054293A39700A765692:{n:\"Alpha Demo - The Beta Demo 2 (2000) (MP)\"},\"26BC2BDF447A17376AEA7EF187FF6E44\":{n:\"Amanda Invaders (PD)\"},\"51F15B39D9F502C2361B6BA6A73464D4\":{n:\"Amanda Invaders (PD) [a]\"},ACB7750B4D0C4BD34969802A7DEB2990:{n:\"Amidar (1982) (Parker Bros)\"},\"056F5D886A4E7E6FDD83650554997D0D\":{n:\"Amidar (1982) (Parker Bros) (PAL)\"},\"6354F9C7588A27109C66905B0405825B\":{n:\"Amidar DS (2003) (TJ) (Hack)\"},\"93B9229FC0EA4FB959D604F83F8F603C\":{n:\"Amidar DS (Fast Enemies) (2003) (TJ) (Hack)\"},\"5BD79139A0C03B63F6F2CF00A7D385D2\":{n:\"An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD)\"},\"6F74ED915FFE73B524EF0F63819E2A1D\":{n:\"An Exercise In Minimalism (V2) (1999) (Eckhard Stolberg)\"},E39A13B13DC82C5FDBFBBFD55BA1230E:{n:\"Analog Clock (Additional Frame Info) (V0.0) (20-01-2003) (AD)\"},\"0AE3497E731CA0BF6A77B23441D9D9F9\":{n:\"Analog Clock (V0.0) (20-01-2003) (AD)\"},\"335793736CBF6FC99C9359ED2A32A49D\":{n:\"Analog Clock (V0.0) (20-01-2003) (AD) [a]\"},\"63C5FEF3208BB1424D26CF1AB984B40C\":{n:\"Analog Clock (V0.1) (20-01-2003) (AD)\"},FC9C1652FE3A2CADE6188F4D3692481F:{n:\"Andrew Davies early notBoulderDash demo (NTSC)\",c:1},\"4C606235F4EC5D2A4B89139093A69437\":{n:\"Andrew Davies early notBoulderDash demo (PAL)\",c:1},\"0866E22F6F56F92EA1A14C8D8D01D29C\":{n:\"AndroMan on the Moon (1984) (Western Tech) (Prototype)\"},\"6672DE8F82C4F7B8F7F1EF8B6B4F614D\":{n:\"Angeln I (Ariola) (PAL)\"},ADF1AFAC3BDD7B36D2EDA5949F1A0FA3:{n:\"Angriff der Luftflotten (1983) (Quelle) (PAL)\"},AFE4EEFC7D885C277FC0649507FBCD84:{n:\"Ant Party (32 in 1) (1988) (Atari) (PAL)\",c:1},\"6B01A519B413F8CFA2F399F4D2841B42\":{n:\"Aphex Invaders (Hack)\"},E73838C43040BCBC83E4204A3E72EEF4:{n:\"Apples and Dolls (CCE)\",c:1},\"038E1E79C3D4410DEFDE4BFE0B99CC32\":{n:\"Aquaventure (08-12-1983) (Atari) (Prototype)\"},F69D4FCF76942FCD9BDF3FD8FDE790FB:{n:\"Aquaventure (CCE)\"},A7B584937911D60C120677FE0D47F36F:{n:\"Armor Ambush (1982) (M Network)\"},D0AF33865512E9B6900714C26DB5FA23:{n:\"Armor Ambush (1989) (Telegames) (PAL)\"},C77C35A6FC3C0F12BF9E8BAE48CBA54B:{n:\"Artillery Duel (1983) (Xonox)\"},\"589C73BBCD77DB798CB92A992B4C06C3\":{n:\"Artillery Duel (1983) (Xonox) (PAL)\"},D341D39774277CEE6A1D378A013F92AC:{n:\"Artillery Duel (1983) (Xonox) (PAL) [a]\"},\"3F039981255691D3859D04EF813A1264\":{n:\"Artillery Duel (1983) (Xonox) [a]\"},\"3750F2375252B6A20E4628692E94E8B1\":{n:\"Ases do Ar (Dismac)\"},DE78B3A064D374390AC0710F95EDDE92:{n:\"Assault (1983) (Bomb)\"},\"327468D6C19697E65AB702F06502C7ED\":{n:\"Aster-Hawk (2002) (Charles Morgan) (Hack)\",c:1},\"89A68746EFF7F266BBF08DE2483ABE55\":{n:\"Asterix (1983) (Atari)\"},FAEBCB2EF1F3831B2FC1DBD39D36517C:{n:\"Asterix (1983) (Atari) (PAL)\"},C5C7CC66FEBF2D4E743B4459DE7ED868:{n:\"Asterix (1983) (Atari) (PAL) [a]\"},\"47B82D47E491AC7FDB5053A88FCCC832\":{n:\"Asteroid 2 (Atari Freak 1) (Hack)\",c:1},\"18F299EDB5BA709A64C80C8C9CEC24F2\":{n:\"Asteroid Fire (1983) (Home Vision) (PAL)\"},DD7884B4F93CAB423AC471AA1935E3DF:{n:\"Asteroids (1981) (Atari)\",c:1},\"8CF0D333BBE85B9549B1E6B1E2390B8D\":{n:\"Asteroids (1981) (Atari) (PAL)\",c:1},A957DBE7D85EA89133346AD56FBDA03F:{n:\"Asteroids (1981) (Atari) (PAL) [a1]\",c:1},\"19ABAF2144B6A7B281C4112CFF154904\":{n:\"Asteroids (1981) (Atari) (PAL) [a2]\",c:1},BB5049E4558DAADE0F87FED69A244C59:{n:\"Asteroids (1981) (Atari) (PAL) [no copyright]\",c:1},B227175699E372B8FE10CE243AD6DDA5:{n:\"Asteroids (1981) (Atari) [a1]\",c:1},D563BA38151B8204C9F5C9F58E781455:{n:\"Asteroids (1981) (Atari) [a2]\",c:1},CCBD36746ED4525821A8083B0D6D2C2C:{n:\"Asteroids (1981) (Atari) [no copyright]\",c:1},\"3E4B1137433CC1E617B5508619E13063\":{n:\"Asteroids (Genesis)\",c:1},DF40AF244A8D68B492BFBA9E97DEA4D6:{n:\"Asteroids 2 (Franlin Cruz) (Hack)\",c:1},\"2DBDCA3058035D2B40C734DCF06A86D9\":{n:\"Asteroids DC+ (Thomas Jentzsch) (Hack)\",c:1},\"8DF4BE9DDC54AC363B13DC57CEAF161A\":{n:\"Asteroids SS (Scott Stilphen) (Hack)\",c:1},\"75169C08B56E4E6C36681E599C4D8CC5\":{n:\"Astroblast (1982) (M Network)\",p:1},\"170E7589A48739CFB9CC782CBB0FE25A\":{n:\"Astroblast (1982) (M Network) [fixed]\",p:1},\"46E9428848C9EA71A4D8F91FF81AC9CC\":{n:\"Astroblast (1989) (Telegames) (PAL)\",p:1},\"8F53A3B925F0FD961D9B8C4D46EE6755\":{n:\"Astrowar (Unknown)\"},E643AAEC9A9E1C8AB7FE1EAE90BC77D7:{n:\"Asymmetric Playfield (Roger Williams)\"},\"4B753A97AEE91E4B3E4E02F5E9758C72\":{n:\"Asymmetric Reflected Playfield (Glenn Saunders)\"},A4AA7630E4C0AD7EBB9837D2D81DE801:{n:\"Atari 2600 Invaders (Hack)\"},D0A379946ED77B1B126230CA68461333:{n:\"Atari Invaders (Ataripoll) (Hack)\"},D61629BBBE035F45552E31CEF7D591B2:{n:\"Atari Logo Demo (PD) (PAL)\"},E932F44FAD2A66B6D5FAEC9ADDEC208E:{n:\"Atari Logo Demo 1 (PD)\"},\"13D8326BF5648DB4DAFCE45D25E62DDD\":{n:\"Atari Logo Demo 2 (PD)\"},\"3E49DA621193D2611A4EA152D5D5CA3A\":{n:\"Atari Logo Demo 3 (PD)\"},\"42E0EC5AB8F5DEBA53E4169FF2A5EFBE\":{n:\"Atari Logo Demo 5 (PD)\"},\"9526E3DB3BDFBC27989A9CBFD0EE34BF\":{n:\"Atari Logo Demo 6 (PD)\"},\"5DF32450B9FBCAF43F9D83BD66BD5A81\":{n:\"Atari Logo Playfield Demo (2001) (Eric Ball) (PD)\"},\"4EDB251F5F287C22EFC64B3A2D095504\":{n:\"Atari VCS Point-of-Purchase ROM (1982) (Atari)\"},\"3F540A30FDEE0B20AED7288E4A5EA528\":{n:\"Atari Video Cube (1982) (Atari)\"},\"2CA6445204FFB7686DDEE3E33BA64D5B\":{n:\"AtariVox Test ROM\"},\"9AD36E699EF6F45D9EB6C4CF90475C9F\":{n:\"Atlantis (1982) (Imagic)\"},ACB962473185D7A652F90ED6591AE13B:{n:\"Atlantis (1982) (Imagic) (16K)\"},\"5324CF5B6DC17AF4C64BF8696C39C2C1\":{n:\"Atlantis (1982) (Imagic) (8K)\"},\"3D2367B2B09C28F1659C082BB46A7334\":{n:\"Atlantis (1982) (Imagic) (PAL)\"},\"41818738AB1745E879024A17784D71F5\":{n:\"Atlantis (1983) (CCE)\"},\"0B33252B680B65001E91A411E56E72E9\":{n:\"Atlantis (1983) (CCE) [a]\"},\"71B193F46C88FB234329855452DFAC5B\":{n:\"Atlantis (1983) (Digitel)\"},\"3AAD0EF62885736A5B8C6CCAC0DBE00C\":{n:\"Atlantis (1983) (Dynacom)\"},\"6CEA35DED079863A846159C3A1101CC7\":{n:\"Atlantis (208 in 1) (Unknown) (PAL) (Hack)\"},A1403FEF01641DCD3980CAC9F24D63F9:{n:\"Atlantis (Dactari - Milmar)\"},\"72BDA70C75DFA2365B3F8894BACE9E6A\":{n:\"Atlantis (TJ) (Hack)\"},C4BBBB0C8FE203CBD3BE2E318E55BCC0:{n:\"Atlantis (Unknown) (PAL) (Hack)\"},AC0DDBCFF34D064009591607746E33B8:{n:\"Atlantis FH (2003) (TJ) (Hack)\"},\"826481F6FC53EA47C9F272F7050EEDF7\":{n:\"Atlantis II (1982) (Imagic)\"},A7CF2B9AFDBB3A161BF418DBCF0321DC:{n:\"Attack Of The Mutant Space Urchins (2002) (Barry Laws Jr.) (Hack)\",c:1},B5110F55ED99D5279F18266D001A8CD5:{n:\"Auto-mobile Demo (2001) (Eckhard Stolberg)\"},B4F87CE75F7329C18301A2505FE59CD3:{n:\"Autorennen (Ariola) (PAL)\"},\"7C757BB151269B2A626C907A22F5DAE7\":{n:\"BMX Air Master (1989) (TNT Games) (PAL)\"},\"968EFC79D500DCE52A906870A97358AB\":{n:\"BMX Air Master (1990) (Atari)\"},\"4F89B897444E7C3B36AED469B8836839\":{n:\"BMX Air Master (1990) (Atari) (PAL)\"},\"4E2C884D04B57B43F23A5A2F4E9D9750\":{\nn:\"Baby Center Animation (PD)\",c:1},\"5B124850DE9EEA66781A50B2E9837000\":{n:\"Bachelor Party (1982) (PlayAround)\",p:1,c:1},\"274D17CCD825EF9C728D68394B4569D2\":{n:\"Bachelorette Party (1982) (Playaround)\",p:1,c:1},\"8556B42AA05F94BC29FF39C39B11BFF4\":{n:\"Backgammon (1979) (Atari)\",p:1},\"85B1BCA93E69F13905107CC802A02470\":{n:\"Backgammon (1979) (Atari) (PAL)\",p:1},\"4E4895C3381AA4220F8C2795D6338237\":{n:\"Backwards Cannonball v1 (Hack)\"},\"2A33E21447BF9E13DCFED85077FF6B40\":{n:\"Backwards Cannonball v2 (Hack)\"},FCEA12625C071DDC49F4E409F4038C60:{n:\"Balls! (16-09-2002) (Fabrizio Zavagli)\",c:1},\"805F9A32EF97AC25F999A25014DC5C23\":{n:\"Balthazar (SnailSoft)\",c:1},\"00CE0BDD43AED84A983BEF38FE7F5EE3\":{n:\"Bank Heist (1983) (20th Century Fox)\"},\"83B8C01C72306D60DD9B753332EBD276\":{n:\"Bank Heist (208 in 1) (Unknown) (PAL)\"},E9C71F8CDBA6037521C9A3C70819D171:{n:\"Bank Heist (PAL)\"},C2A37F1C7603C5FD97DF47D6C562ABFA:{n:\"Bar-Score Demo (2001) (Roger Williams)\"},\"73A710E621D44E97039D640071908AEF\":{n:\"Barber Pole Demo (PD)\"},F8240E62D8C0A64A61E19388414E3104:{n:\"Barnstorming (1982) (Activision)\"},A29FC854838E08C247553A7D883DD65B:{n:\"Barnstorming (1982) (Activision) (16K)\"},\"9AEB5206C5BF974892A9CC59F1478DB3\":{n:\"Barnstorming (1982) (Activision) (8K)\"},E7DD8C2E6C100044002C1086D02B366E:{n:\"Barnstorming (1982) (Activision) (PAL)\"},\"5AE73916FA1DA8D38CEFF674FA25A78A\":{n:\"Barnstorming (CCE)\"},\"9AD362179C2EEA4EA115C7640B4B003E\":{n:\"Barnstorming (Unknown) (PAL)\"},DCEC46A98F45B193F07239611EB878C2:{n:\"Bars and Text Demo (PD)\"},D7891B0FAA4C7F764482762D0ED427A5:{n:\"Bars and Text Demo 2 (PD)\"},\"600D48EEF5C0EC27DB554B7328B3251C\":{n:\"Bars and Text Demo 3 (PD)\"},C469151655E333793472777052013F4F:{n:\"Base Attack (Unknown) (Hack)\"},\"034C1434280B0F2C9F229777D790D1E1\":{n:\"Baseball (1989) (Telegames) (PAL)\"},\"9848B5EF7A0C02FE808B920A2AC566D2\":{n:\"Baseball (2002) (Skyworks)\"},A41450333F8DD0E96E5E9F0AF3770AE9:{n:\"Basic Math (208 in 1) (Unknown) (PAL)\"},\"7EAB0284A0CD1043461D446A08D08CEC\":{n:\"Basic Math (Jone Yuan) (4K)\"},\"9F48EEB47836CF145A15771775F0767A\":{n:\"Basic Programming (1979) (Atari)\",c:1},B061E98A4C854A672AADEFA233236E51:{n:\"Basic Programming (1979) (Atari) (PAL)\",c:1},AB4AC994865FB16EBB85738316309457:{n:\"Basketball (1978) (Atari)\"},E13C7627B2E136B9C449D9E8925B4547:{n:\"Basketball (1978) (Atari) (4K)\"},\"218C0FE53DFAAA37F3C823F66EAFD3FC\":{n:\"Basketball (1978) (Atari) (PAL)\"},F4AB6BD5F80D8988141EDDE4C84B23B5:{n:\"Basketball (1978) (Atari) (PAL) (4K)\"},\"77BE57D872E3F5B7ECF8D19D97F73281\":{n:\"Basketball (208 in 1) (Unknown) (PAL)\"},\"5D132D121AABC5235DD039DFC46AA024\":{n:\"Basketball (208 in 1) (Unknown) (PAL) (Hack)\"},\"1228C01CD3C4B9C477540C5ADB306D2A\":{n:\"Basketball (32 in 1) (1988) (Atari) (PAL)\"},\"32D1260EA682E1BB10850FA94C04EC5F\":{n:\"Basketball (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"5C0227AD63300670A647FCEBF595EA37\":{n:\"Battle for Naboo (Josh) (Hack)\"},E434C0E161DD3C3FB435EB6BAD2E182C:{n:\"Battlezone (05-02-1983) (Atari) (Prototype)\"},\"5B85E987E2B1618769D97BA9182333D0\":{n:\"Battlezone (05-12-1983) (Atari) (Prototype)\"},\"41F252A66C6301F1E8AB3612C19BC5D4\":{n:\"Battlezone (1983) (Atari)\"},FBE554AA8F759226D251BA6B64A9CCE4:{n:\"Battlezone (1983) (Atari) (PAL)\"},E38DC1F81A02E325562CD285123F579B:{n:\"Battlezone (1983) (Atari) (PAL) [a1]\"},\"2319922DF4D0C820B3E5F15FAA870CC3\":{n:\"Battlezone (1983) (Atari) (PAL) [a]\"},\"6015A9CEF783E97E98A2AA2CF070AE06\":{n:\"Battlezone TC (Thomas Jentzsch) (Hack)\"},\"38C362DCD5CAD5A62E73AE52631BD9D8\":{n:\"Baubles (14-11-2001) (Jake Patterson) (PD)\"},\"3EB1E34A4F0EEC36F12E7336BADCECF2\":{n:\"Baubles (V0.001) (2001) (Jake Patterson) (PD)\"},\"599CBF919D47A05AF975AD447DF29497\":{n:\"Baubles (V0.002) (2001) (Jake Patterson) (PD)\"},FBFEBEE9C14694719E3EDA4854DC42EE:{n:\"Baubles 3 (Jake Patterson) (PD)\"},\"79AB4123A83DC11D468FB2108EA09E2E\":{n:\"Beamrider (1984) (Activision)\"},FEC0C2E2AB0588ED20C750B58CF3BAA3:{n:\"Beamrider (1984) (Activision) (PAL)\"},F4204FC92D17ED4CB567C40361AD58F1:{n:\"Beanie Baby Bash (Inky) (Hack)\"},D0B9DF57BFEA66378C0418EC68CFE37F:{n:\"Beany Bopper (1982) (20th Century Fox)\"},\"6A9E0C72FAB92DF70084ECCD9061FDBD\":{n:\"Beany Bopper (1983) (CCE)\"},\"235436AB0832370E73677C9C6F0C8B06\":{n:\"Beast Invaders (Double Shot) (Hack)\"},\"4D0A28443F7DF5F883CF669894164CFA\":{n:\"Beast Invaders (Hack)\"},B4F31EA8A6CC9F1FD4D5585A87C3B487:{n:\"Beat 'Em & Eat 'Em (1982) (Mystique) (PAL)\",p:1},\"59E96DE9628E8373D1C685F5E57DCF10\":{n:\"Beat 'Em & Eat 'Em (1982) (PlayAround)\",p:1},\"6C25F58FD184632CA76020F589BB3767\":{n:\"Beat 'Em & Eat 'Em (1983) (Dynacom)\",p:1},EE6665683EBDB539E89BA620981CB0F6:{n:\"Berenstain Bears (1983) (Coleco)\"},\"073D7AFF37B7601431E4F742C36C0DC1\":{n:\"Bermuda (Unknown) (PAL)\"},B8ED78AFDB1E6CFE44EF6E3428789D5F:{n:\"Bermuda Triangle (1982) (Data Age)\"},\"36C993DC328933E4DD6374A8FFE224F4\":{n:\"Bermuda Triangle (1983) (Gameworld) (PAL)\"},BCEF7880828A391CF6B50D5A6DCEF719:{n:\"Bermuda, The (Rainbow Vision) (PAL)\"},CF3C2725F736D4BCB84AD6F42DE62A41:{n:\"Bermuda, The (Rainbow Vision) (PAL) [a]\"},\"136F75C4DD02C29283752B7E5799F978\":{n:\"Berzerk (1982) (Atari)\"},\"0805366F1B165A64B6D4DF20D2C39D25\":{n:\"Berzerk (1982) (Atari) (PAL)\"},FAC28963307B6E85082CCD77C88325E7:{n:\"Berzerk (CCE)\"},\"4B205EF73A5779ACC5759BDE3F6D33ED\":{n:\"Berzerk (Unknown) (PAL)\"},\"490E3CC59D82F85FAE817CDF767EA7A0\":{n:\"Berzerk (Unknown) (PAL) [a]\"},BE41463CD918DAEF107D249F8CDE3409:{n:\"Berzerk (Voice Enhanced) (Hack)\"},\"5C618A50DFA23DAAC97BA459B9FF5206\":{n:\"Berzerk Renegade (2002) (Steve Engelhardt) (Hack)\",c:1},\"4C4CE802CBFD160F7B3EC0F13F2A29DF\":{n:\"Beta Demo (V1.1) (26-09-2002) (MP)\"},\"63A7445B1D3046D3CDCDBD488DCA38D9\":{n:\"Better Space Invaders (1999) (Rob Kudla) (Hack)\"},\"012020625A3227815E47B37FD025E480\":{n:\"Better Space Invaders (1999) (Rob Kudla) (Hack) [a]\"},\"4D5F6DB55F7F44FD0253258E810BDE21\":{n:\"Betterblast (Fabrizio Zavagli) (Hack)\"},\"7CD900E9ECCBB240FE9C37FA28F917B5\":{n:\"Bi! Bi! (Jone Yuan) (PAL)\"},F714A223954C28ECCF459295517DCAE6:{n:\"Big - Move This Demo (PD)\"},\"16CC6D1B4DDCE51C767A1BA8E5FF196C\":{n:\"Big - Move This Demo 2 (PD)\",c:1},\"151FA3218D8D7600114EB5BCD79C85CB\":{n:\"Big Bird's Egg Catch (05-02-1983) (Atari) (Prototype)\"},\"0B17ED42984000DA8B727CA46143F87A\":{n:\"Big Bird's Egg Catch (05-17-1983) (Atari) (Prototype)\"},AFD2CF258D51AE4965EE21ABBA3627AB:{n:\"Big Bird's Egg Catch (12-08-1982) (Atari) (Prototype)\"},\"1802CC46B879B229272501998C5DE04F\":{n:\"Big Bird's Egg Catch (1983) (Atari)\"},F283CC294ECE520C2BADF9DA20CFC025:{n:\"Big Bird's Egg Catch (1983) (Atari) (PAL)\"},\"2CB42CF62B2F25F59F909B5447821B14\":{n:\"Big Bird's Egg Catch (1983) (Atari) (PAL) [a]\"},F8FF34B53D86F55BD52D7A520AF6D1DC:{n:\"Big Dig (04-04-2003) (CT)\"},\"7CCF350354EE15CD9B85564A2014B08C\":{n:\"Big Dig (13-04-2003) (CT)\"},\"23E4CA038ABA11982E1694559F3BE10F\":{n:\"Big Dig (V3) (20-10-2002) (CT)\"},\"93C9F9239A4E5C956663DD7AFFA70DA2\":{n:\"Billard (1983) (Quelle) (PAL)\",c:1},BD1BD6F6B928DF17A702DEF0302F46F4:{n:\"Binary To Decimal Routine (2001) (AD)\"},\"84535AFB9A69712EC0AF4947329E08B8\":{n:\"Bingo (1983) (CCE) (PAL)\"},\"10F0ECAF962AEF1FC28ABED870B01B65\":{n:\"Bionic Breakthrough (06-22-1984) (Atari) (Prototype)\"},F0541D2F7CDA5EC7BAB6D62B6128B823:{n:\"Bionic Breakthrough (1984) (Atari) (Prototype)\"},AA8E4B2CB8A78FFE6B20580033F4DEC9:{n:\"Bitmap Demo (13-01-2003) (AD)\"},\"282A77841CB3D33AF5B56151ACBA770E\":{n:\"Black Hole (1983) (Quelle) (PAL)\"},CBEAFD37F15E0DDDB0540DBE15C545A4:{n:\"Black and White Fast Scolling Demo (PD)\"},\"0A981C03204AC2B278BA392674682560\":{n:\"Blackjack (1977) (Atari)\",p:1},B2761EFB8A11FC59B00A3B9D78022AD6:{n:\"Blackjack (1977) (Atari) (4K)\",p:1},FF3BD0C684F7144AEAA18758D8281A78:{n:\"Blackjack (1977) (Atari) (PAL)\",p:1},FF7627207E8AA03730C35C735A82C26C:{n:\"Blackjack (32 in 1) (1988) (Atari) (PAL)\",p:1},D726621C676552AFA503B7942AF5AFA2:{n:\"Blackjack (32 in 1) (1988) (Atari) (PAL) (4K)\",p:1},\"575C0FB61E66A31D982C95C9DEA6865C\":{n:\"Blackjack (Unknown) (PAL)\",p:1},\"19A9D3F9FA1B1358FB53009444247AAF\":{n:\"Blackjack (Unknown) (PAL) (4K)\",p:1},\"93420CC4CB1AF1F2175C63E52EC18332\":{n:\"Blair Witch Project (Tim Snider) (Hack)\"\n},\"07C76F2D88552D20AD2C0ED7AEF406C6\":{n:\"Blob (Cody Pittman) (Hack)\"},\"1086FF69F82B68D6776634F336FB4857\":{n:\"Bloody Human Freeway (Activision) (Prototype)\"},FCF8E306F6615F74FEBA5CB25550038C:{n:\"Blue Dot Demo (PD)\"},\"2942680C47BEB9BF713A910706FFABFE\":{n:\"Blue Line Demo (PD)\"},B7F184013991823FC02A6557341D2A7A:{n:\"Blue Rod Demo (PD)\"},DAD2AB5F66F98674F12C92ABCFBF3A20:{n:\"Blue and White Sprite Demo (PD)\"},\"33D68C3CD74E5BC4CF0DF3716C5848BC\":{n:\"Blueprint (1983) (CBS Electronics)\",c:1},\"2432F33FD278DEA5FE6AE94073627FCC\":{n:\"Blueprint (1983) (CBS Electronics) (PAL)\",c:1},\"345488D3B014B684A181108F0EF823CB\":{n:\"Blueprint (1983) (CBS Electronics) (Prototype)\"},\"6FBD05B0AD65B2A261FA154B34328A7F\":{n:\"Boardgame Demo (20-12-2002) (CT)\"},EBCB084A91D41865B2C1915779001CA7:{n:\"Bob Is Going Home (JVP)\"},\"521F4DD1EB84A09B2B19959A41839AAD\":{n:\"Bobby Is Going Home (1983) (BitCorp)\"},\"2823364702595FEEA24A3FBEE138A243\":{n:\"Bobby Is Going Home (1983) (BitCorp) (PAL)\"},CCB56107FF0492232065B85493DAA635:{n:\"Bobby Is Going Home (1983) (BitCorp) (PAL) [demo cart]\"},\"075069AD80CDE15ECA69E3C98BD66714\":{n:\"Bobby Is Going Home (1983) (CCE)\"},\"3CBDF71BB9FD261FBC433717F547D738\":{n:\"Bobby Is Going Home (1983) (CCE) (PAL)\"},F2F59629D7341C97644405DAEAC08845:{n:\"Bobby Is Going Home (Jone Yuan)\"},\"2F2F9061398A74C80420B99DDECF6448\":{n:\"Bobby Is Going Home (Rentacom)\"},\"48E5C4AE4F2D3B62B35A87BCA18DC9F5\":{n:\"Bobby geht nach Hause (1983) (Quelle) (PAL)\"},AFE776DB50E3378CD6F29C7CDD79104A:{n:\"Bobby is Going Home (TJ)\"},C59633DBEBD926C150FB6D30B0576405:{n:\"Bogey Blaster (1989) (Telegames)\"},B438A6AA9D4B9B8F0B2DDB51323B21E4:{n:\"Bogey Blaster (1989) (Telegames) (PAL)\"},A5855D73D304D83EF07DDE03E379619F:{n:\"Boggle (08-07-1978) (Atari) (Prototype)\",c:1},\"14C2548712099C220964D7F044C59FD9\":{n:\"Boing! (1983) (First Star Software)\",c:1},C471B97446A85304BBAC021C57C2CB49:{n:\"Boing! (1983) (First Star Software) (PAL)\",c:1},\"0E08CD2C5BCF11C6A7E5A009A7715B6A\":{n:\"Boing! (PD) [a1]\"},\"5D8FB14860C2F198472B233874F6B0C9\":{n:\"Boing! (PD) [a2]\"},\"956B99511C0F47B3A11D18E8B7AC8D47\":{n:\"Bones (Arcade Golf Hack)\"},E5359CBBBFF9C6D7FE8AEFF5FB471B46:{n:\"Boom Bang (1983) (CCE)\"},\"7F54FA6AA824001AF415503C313262F2\":{n:\"Boom Bang (HES) (PAL)\"},A2AAE759E4E76F85C8AFEC3B86529317:{n:\"Boom Bang (Unknown)\"},\"2825F4D068FEBA6973E61C84649489FE\":{n:\"Boom Bang (Unknown) (PAL)\"},\"02E3F4BA156FB578BEF7D7A0BF3400C1\":{n:\"Booster (Junkosoft) (PD)\"},\"5BC9998B7E9A970E31D2CB60E8696CC4\":{n:\"Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)\",c:1},\"05F11FB2E45C4E47424D3CB25414D278\":{n:\"Boring (NTSC) (AD)\"},\"9B246683F44C963A50E41D6B485BEE77\":{n:\"Boring (PAL) (AD)\"},F0CACAE1D1B79EE92F0DC035F42E0560:{n:\"Boring Donkey Kong (Hack)\"},CE17325834BF8B0A0D0D8DE08478D436:{n:\"Boring Freeway (Hack)\"},\"1733772165D7B886A94E2B4ED0F74CCD\":{n:\"Boring Journey Escape (Hack)\"},\"613ABF596C304EF6DBD8F3351920C37A\":{n:\"Boring Pac-Man (Hack)\"},\"96670D0BF3610DA2AFCABD8E21D8EABF\":{n:\"Boring Pitfall (Hack)\"},E8E7B9BDF4BF04930C2BCAA0278EE637:{n:\"Boring Taz (Hack)\"},\"8A49CF1785E3DEA2012D331A3AD476E1\":{n:\"Boulderdash (10 Blocks Wide) (02-04-2003) (AD)\"},E0DE3773F5B867795DB557BE7B8A703E:{n:\"Boulderdash (13 Blocks Wide) (02-04-2003) (AD)\"},\"29DFA26B7988AF9984D617708E4FC6E2\":{n:\"Boulderdash Demo (05-04-2003) (AD)\"},\"68CD2ADC6B1FC9A1F263AB4561112F30\":{n:\"Boulderdash Demo (09-12-2002) (TJ)\",c:1},D90205E29BB73A4CDF28EA7662BA0C3C:{n:\"Boulderdash Demo (Brighter Version) (09-12-2002) (TJ)\",c:1},B2D1E63F7F22864096B7B6C154151D55:{n:\"Bounce! (17-03-2003) (Fabrizio Zavagli)\",c:1},\"7EAF009A892F03D90682DC1E67E85F07\":{n:\"Bounce! (18-03-2003) (Fabrizio Zavagli)\",c:1},C9B7AFAD3BFD922E006A6BFC1D4F3FE7:{n:\"Bowling (1979) (Atari)\"},A28D872FC50FA6B64EB35981D0F4BB8D:{n:\"Bowling (1979) (Atari) (4K)\"},\"2AA5E56D36C2E58B6F2856109F2099A9\":{n:\"Bowling (1979) (Atari) (4K) [a]\"},\"969B968383D9F0E9D8FFD1056BCAEF49\":{n:\"Bowling (1979) (Atari) (PAL)\"},\"82C25D1C35E6AC6F893D1D7C2FC2F9C8\":{n:\"Bowling (1979) (Atari) (PAL) (4K)\"},\"11E7E0D9437EC98FA085284CF16D0EB4\":{n:\"Bowling (208 in 1) (Unknown) (PAL)\"},F69BB58B815A6BDCA548FA4D5E0D5A75:{n:\"Bowling (32 in 1) (1988) (Atari) (PAL)\"},\"4B71197153D651480830638CB6A03249\":{n:\"Bowling (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"32ECB5A652EB73D287E883EEA751D99C\":{n:\"Bowling (Dactar - Milmar)\"},\"58746219D8094EDFF869F0F5C2AEAAD5\":{n:\"Bowling (Jone Yuan) (4K)\"},\"7F07CD2E89DDA5A3A90D3AB064BFD1F6\":{n:\"Boxen (Ariola) (PAL)\"},C3EF5C4653212088EDA54DC91D787870:{n:\"Boxing (1980) (Activision)\"},\"88F74EC75EF696E7294B7B6AC5CA465F\":{n:\"Boxing (1980) (Activision) (16K)\"},\"277CCA62014FCEEBB46C549BAC25A2E3\":{n:\"Boxing (1980) (Activision) (4K)\"},\"5A80B857EB8B908AB477EC4EF902EDC8\":{n:\"Boxing (1980) (Activision) (8K)\"},\"25F2E760CD7F56B88AAC88D63757D41B\":{n:\"Boxing (1980) (Activision) (PAL)\"},C2BCD8F2378C3779067F3A551F662BB7:{n:\"Boxing (1980) (Activision) (PAL) (4K)\"},A8B3EA6836B99BEA77C8F603CF1EA187:{n:\"Boxing (1983) (CCE)\"},\"2C45C3EB819A797237820A1816C532EB\":{n:\"Boxing (32 in 1) (1988) (Atari) (PAL)\"},B77468D586957D1B7FB4CCCDA2684F47:{n:\"Boxing (32 in 1) (1988) (Atari) (PAL) (4K)\"},CFB3260C603B0341D49DDFC94051EC10:{n:\"Boxing (Dactari - Milmar)\"},\"34FD4FCB40FF5BABCE67F8B806D5969C\":{n:\"Boxing (Dactari) (4K)\"},AFC194534C1B346609EF05EFF6D3CEF6:{n:\"Boxing (Jone Yuan)\"},FD6E507B5DF68BEEEDDEAF696B6828FA:{n:\"Boxing (Unknown) (PAL)\"},\"1CCA2197D95C5A41F2ADD49A13738055\":{n:\"Brain Games (1978) (Atari)\"},CB9626517B440F099C0B6B27CA65142C:{n:\"Brain Games (1978) (Atari) (4K)\"},F280976D69D6E27A48506BD6BAD11DCD:{n:\"Brain Games (1978) (Atari) (PAL)\"},\"2162266B906C939B35C84FF9A0F50AD1\":{n:\"Brain Games (1978) (Atari) (PAL) (4K)\"},\"4DBF47C7F5AC767A3B07843A530D29A5\":{n:\"Breaking News (2002) (Ric Pryor) (Hack)\"},F34F08E5EB96E500E851A80BE3277A56:{n:\"Breakout (1978) (Atari)\",p:1},C738FC3F5AAE1E8F86F7249F6C82AC81:{n:\"Breakout (1978) (Atari) (16K)\",p:1},\"9A25B3CFE2BBB847B66A97282200CCA2\":{n:\"Breakout (1978) (Atari) (4K)\",p:1},\"6C76FE09AA8B39EE52035E0DA6D0808B\":{n:\"Breakout (1978) (Atari) (PAL)\",p:1},C5FE45F2734AFD47E27CA3B04A90213C:{n:\"Breakout (1978) (Atari) (PAL) (4K)\",p:1},\"4DF6124093CCB4F0B6C26A719F4B7706\":{n:\"Breakout (1978) (Atari) [a]\",p:1},CFD6A8B23D12B0462BAF6A05EF347CD8:{n:\"Bridge (1980) (Activision)\"},\"413C925C5FDCEA62842A63A4C671A5F2\":{n:\"Bridge (1980) (Activision) [fixed]\"},\"18A970BEA7AC4D29707C8D5CD559D03A\":{n:\"Bridge (208 in 1) (Unknown) (PAL)\"},\"428B2D36F5D716765460701F7016AC91\":{n:\"Brooni (2001) (Andrew Wallace) (PD)\"},A537879D8E82E1061D3AD800479D3B84:{n:\"Brooni (2001) (Andrew Wallace) (PD) (PAL)\"},\"1CF59FC7B11CDBCEFE931E41641772F6\":{n:\"Buck Rogers - Planet of Zoom (1983) (Sega)\",c:1},CD88EF1736497288C4533BCCA339F881:{n:\"Buck Rogers - Planet of Zoom (1983) (Sega) (PAL)\",c:1},\"68597264C8E57ADA93BE3A5BE4565096\":{n:\"Bugs (1982) (Data Age)\",p:1},E61210293B14C9C4ECC91705072C6A7E:{n:\"Bugs (1983) (Gameworld) (PAL)\",p:1},A3486C0B8110D9D4B1DB5D8A280723C6:{n:\"Bugs Bunny (08-04-1983) (Atari) (Prototype)\"},FA4404FABC094E3A31FCD7B559CDD029:{n:\"Bugs Bunny (1983) (Atari) (Prototype)\"},\"9E792A59F8795664CBAAFF1BA152D731\":{n:\"Bullet Demo (20-12-2002) (CT)\"},\"76F53ABBBF39A0063F24036D6EE0968A\":{n:\"Bump 'n' Jump (1983) (M Network)\"},\"9295570A141CDEC18074C55DC7229D08\":{n:\"Bump 'n' Jump (1989) (Telegames) (PAL)\"},AA1C41F86EC44C0A44EB64C332CE08AF:{n:\"Bumper Bash (1983) (Spectravideo)\"},\"1BF503C724001B09BE79C515ECFCBD03\":{n:\"Bumper Bash (1983) (Spectravideo) (PAL)\"},\"0443CFA9872CDB49069186413275FA21\":{n:\"BurgerTime (1983) (M Network)\"},B42DF8D92E3118DC594CECD575F515D7:{n:\"Burning Desire (1982) (Mystique) (PAL)\",c:1},\"19D6956FF17A959C48FCD8F4706A848D\":{n:\"Burning Desire (1982) (PlayAround)\",c:1},\"572D0A4633D6A9407D3BA83083536E0F\":{n:\"Busy Police (Funvision)\"},\"8905D54F48B8024FC718ED643E9033F7\":{n:\"Cabbage Patch Kids (05-24-1984) (Coleco) (Prototype)\"},E1486C7822C07117B4F94A32E5ED68C1:{n:\"Cabbage Patch Kids (06-14-1984) (Coleco) (Prototype)\"},\"80E5400470AC788143E6DB9BC8DD88CF\":{n:\"Cabbage Patch Kids (06-XX-1984) (Coleco) (Prototype)\"},\"4605A00F5B44A9CBD5803A7A55DE150E\":{\nn:\"Cabbage Patch Kids (07-03-1984) (Coleco) (Prototype)\"},\"7D726FA494F706784BAFEB1B50D87F23\":{n:\"Cabbage Patch Kids (07-27-1984) (Coleco) (Prototype)\"},F4DABD5BCC603E8464A478208037D423:{n:\"Cabbage Patch Kids (08-21-1984) (Coleco) (Prototype)\"},\"1FA7A42C2C7D6B7A0C6A05D38C7508F4\":{n:\"Cabbage Patch Kids (09-04-1984) (Coleco) (Prototype)\"},\"5D0E8A25CBD23E76F843C75A86B7E15B\":{n:\"Cabbage Patch Kids (09-07-1984) (Coleco) (Prototype)\"},\"66FCF7643D554F5E15D4D06BAB59FE70\":{n:\"Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype)\"},F6B5EBB65CBB2981AF4D546C470629D7:{n:\"Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype) [a]\"},\"7F6533386644C7D6358F871666C86E79\":{n:\"Cakewalk (1983) (CommaVid)\"},\"0060A89B4C956B9C703A59B181CB3018\":{n:\"Cakewalk (1983) (CommaVid) (PAL)\"},\"0EEBFB60D437796D536039701EC43845\":{n:\"Cakewalk (Fabrizio Zavagli)\"},\"9AB72D3FD2CC1A0C9ADB504502579037\":{n:\"California Games (1988) (Epyx)\"},\"8068E07B484DFD661158B3771D6621CA\":{n:\"California Games (1988) (Epyx) (PAL)\"},\"85478BB289DFA5C63726B9153992A920\":{n:\"Candi (Hack)\"},\"0E0808227EF41F6825C06F25082C2E56\":{n:\"Candi (Hack) [a]\"},FEEDCC20BC3CA34851CD5D9E38AA2CA6:{n:\"Canyon Bomber (1979) (Atari)\",p:1},\"3051B6071CB26377CD428AF155E1BFC4\":{n:\"Canyon Bomber (1979) (Atari) (4K)\",p:1},\"457F4AD2CDA5F4803F122508BFBDE3F5\":{n:\"Canyon Bomber (208 in 1) (Unknown) (PAL)\"},\"151C33A71B99E6BCFFB34B43C6F0EC23\":{n:\"Care Bears (1983) (Parker Bros) (Prototype)\"},DE29E46DBEA003C3C09C892D668B9413:{n:\"Carnival (1982) (CBS Electronics) (PAL)\"},\"028024FB8E5E5F18EA586652F9799C96\":{n:\"Carnival (1982) (Coleco)\"},\"8ED5A746C59571FEB255EAA7D6D0CF98\":{n:\"Carnival (208 in 1) (Unknown) (PAL) (Hack)\"},\"5409D20C1AEA0B89C56993AEC5DC5740\":{n:\"Carnival Shooter (PD)\"},B816296311019AB69A21CB9E9E235D12:{n:\"Casino (1979) (Atari)\",p:1},\"2BC26619E31710A9884C110D8430C1DA\":{n:\"Casino (1979) (Atari) (PAL)\",p:1},\"681206A6BDE73E71C19743607E96C4BB\":{n:\"Casino (Unknown) (PAL)\",p:1},\"76F66CE3B83D7A104A899B4B3354A2F2\":{n:\"Cat Trax (1983) (UA Limited) (Prototype)\",c:1},D071D2EC86B9D52B585CC0382480B351:{n:\"Cat Trax (1983) (UA Limited) (Prototype) [a]\",c:1},B7903268E235310DC346A164AF4C7022:{n:\"Cat Trax (Thomas Jentzsch) (PAL60)\",c:1},A2DE0FC85548871279ED2A3C1325C13E:{n:\"Cat and Mouse (George Veeder) (Hack)\"},E2904748DA63DFEFC8816652B924B642:{n:\"Catch Time (Jone Yuan)\"},\"9E192601829F5F5C2D3B51F8AE25DBE5\":{n:\"Cathouse Blues (1982) (PlayAround)\",c:1},\"8726C17EE7B559CB7BF2330D20972AD0\":{n:\"Cave Demo (21-04-2003) (CT)\"},\"91C2098E88A6B13F977AF8C003E0BCA5\":{n:\"Centipede (1982) (Atari)\"},\"17D000A2882F9FDAA8B4A391AD367F00\":{n:\"Centipede (1982) (Atari) (PAL)\"},\"2F11BA54609777E2C6A5DA9B302C98E8\":{n:\"Centipede (1982) (Atari) (Prototype) (PAL)\"},\"10958CD0A1A81D599005F1797AB0E51D\":{n:\"Centipede 2k (2000) (PD) (Hack)\"},\"713FDE2AF865B6EC464DFD72E2EBB83E\":{n:\"Challenge (208 in 1) (Unknown) (PAL)\",c:1},\"9905F9F4706223DADEE84F6867EDE8E3\":{n:\"Challenge (HES) (PAL)\"},\"4311A4115FB7BC68477C96CF44CEBACF\":{n:\"Challenge (Unknown)\"},\"73158EA51D77BF521E1369311D26C27B\":{n:\"Challenge (Zellers)\"},\"5D799BFA9E1E7B6224877162ACCADA0D\":{n:\"Challenge of.... Nexar, The (1982) (Spectravision)\"},\"1DA2DA7974D2CA73A823523F82F517B3\":{n:\"Challenge of.... Nexar, The (1982) (Spectravision) (PAL)\"},\"45C4413DD703B9CFEA49A13709D560EB\":{n:\"Challenge of.... Nexar, The (Jone Yuan) (Hack)\"},\"3D9C2FCCF8B11630762FF00811C19277\":{n:\"Challenge of.... Nexar, The (Unknown) (PAL)\"},\"3E33AC10DCF2DFF014BC1DECF8A9AEA4\":{n:\"Chase the Chuckwagon (1983) (Spectravideo)\",c:1},\"3F5A43602F960EDE330CD2F43A25139E\":{n:\"Checkers (1980) (Activision)\"},\"7EDC8FCB319B3FB61CAC87614AFD4FFA\":{n:\"Checkers (1980) (Activision) (4K)\"},\"191AC4EEC767358EE3EC3756C120423A\":{n:\"Checkers (208 in 1) (Unknown) (PAL)\"},BCE93984B920E9B56CF24064F740FE78:{n:\"Checkers (32 in 1) (1988) (Atari) (PAL)\"},\"499B612F6544AE71D4915AA63E403E10\":{n:\"Checkers (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"3D7749FB9C2F91A276DFE494495234C5\":{n:\"Checkers (Jone Yuan)\"},\"04E737C9D53CD84BFD5EE679954E4706\":{n:\"Checkers (Jone Yuan) (4K)\"},E5ECD78EDD24326A968809DECBC7B916:{n:\"Cheese (Dragonfire Beta) (05-21-1982) (Imagic) (Prototype)\"},\"749FEC9918160921576F850B2375B516\":{n:\"China Syndrome (1982) (Spectravision)\",c:1},E150F0D14F013A104B032305C0CE23EF:{n:\"China Syndrome (1982) (Spectravision) (PAL)\",c:1},\"36F9A953EBDD9A8BE97CCF27A2041903\":{n:\"Chinese Character Demo (PD)\"},C1CB228470A87BEB5F36E90AC745DA26:{n:\"Chopper Command (1982) (Activision)\"},\"25D4BE3309B89583C6B39D9F93BF654F\":{n:\"Chopper Command (1982) (Activision) (16K)\"},\"51F211C8FC879391FEE26EDFA7D3F11C\":{n:\"Chopper Command (1982) (Activision) (8K)\"},\"114C599454D32F74C728A6E1F71012BA\":{n:\"Chopper Command (1982) (Activision) (PAL)\"},\"85A4133F6DCF4180E36E70AD0FCA0921\":{n:\"Chopper Command (1983) (CCE)\"},FFDC0EB3543404EB4C353FBDDDFA33B6:{n:\"Chopper Command (1983) (CCE) [a]\"},DA66D75E4B47FAB99733529743F86F4F:{n:\"Chopper Command (1983) (Digitel)\"},C2C7A11717E255593E54D0ACAF653EE5:{n:\"Chopper Command (208 in 1) (Unknown) (PAL) (Hack)\"},\"1CAD3B56CC0E6E858554E46D08952861\":{n:\"Chopper Command (Jone Yuan)\"},F8811D45A9935CCA90C62F924712F8E6:{n:\"Chopper Command (Jone Yuan) (Hack)\"},B9F9C0FED0DB08C34346317F3957A945:{n:\"Chopper Command (SuperVision) (PAL)\"},ACB6787B938079F4E74313A905EC3CEB:{n:\"Chronocolor Donkey Kong (PD)\"},EE456542B93FA8D7E6A8C689B5A0413C:{n:\"Chronocolor Donkey Kong Clean (PD)\"},\"1D5EAC85E67B8CFF1377C8DBA1136929\":{n:\"Chronocolor Donkey Kong Sideways (PD)\"},D605ED12F4EAAAEC3DCD5AA909A4BAD7:{n:\"Chronocolor Frame Demo (10-01-2003) (AD)\"},DB339AEA2B65B84C7CFE0EEAB11E110A:{n:\"Chronocolor Frame Demo 2 (10-01-2003) (AD)\"},A30ECE6DC4787E474FBC4090512838DC:{n:\"Circus (Zellers)\"},A7B96A8150600B3E800A4689C3EC60A2:{n:\"Circus Atari (1980) (Atari)\",p:1},A29DF35557F31DFEA2E2AE4609C6EBB7:{n:\"Circus Atari (1980) (Atari) (Joystick)\"},\"30E0AB8BE713208AE9A978B34E9E8E8C\":{n:\"Circus Atari (1980) (Atari) (PAL)\",p:1},EFFFAFC17B7CB01B9CA35324AA767364:{n:\"Circus Atari (Unknown)\"},\"324CB4A749BCAC4F3DB9DA842B85D2F7\":{n:\"Climber 5 (01-05-2003) (Dennis Debro)\"},\"9D4BC7C6FE9A7C8C4AA24A237C340ADB\":{n:\"Climber 5 (16-04-2003) (Dennis Debro)\"},\"87B460DF21B7BBCFC57B1C082C6794B0\":{n:\"Climber 5 (20-03-2003) (Dennis Debro)\"},D82C8A58098A6B46C5B81C16180354D1:{n:\"Climber 5 (30-10-2002) (Dennis Debro) (Prototype)\"},\"1E587CA91518A47753A28217CD4FD586\":{n:\"Coco Nuts (1982) (Telesys)\"},\"5846B1D34C296BF7AFC2FA05BBC16E98\":{n:\"Codebreaker (1978) (Atari)\"},\"83F50FA0FBAE545E4B88BB53B788C341\":{n:\"Codebreaker (1978) (Atari) (4K)\"},A47E26096DE6F6487BF5DD2D1CCED294:{n:\"Codebreaker (1978) (Atari) (PAL)\"},\"71D005B60CF6E608D04EFB99A37362C3\":{n:\"Codebreaker (1978) (Atari) (PAL) (4K) [a]\"},\"551A64A945D7D6ECE81E9C1047ACEDBC\":{n:\"Coffee Cup Soccer (Matthias Jaap) (Hack)\"},\"76A9BF05A6DE8418A3EBC7FC254B71B4\":{n:\"Color Bar Generator (1984) (VideoSoft)\"},E5A6E0BB7D56E2F08B237E15076E5699:{n:\"Color Table Display Helper (PD)\"},C221607529CABC93450EF25DBAC6E8D2:{n:\"Color Test (26-09-2002) (Eckhard Stolberg)\"},\"58C396323EA3E85671E34C98EB54E2A4\":{n:\"Color Tweaker (B. Watson)\"},F6DAEBC0424FA0F8D9AAF26C86DF50F4:{n:\"Color Tweaker (V1.0) (2001) (B. Watson)\"},\"35AE903DFF7389755AD4A07F2FB7400C\":{n:\"Colored Wall Demo (PD)\"},\"97A9BB5C3679D67F5C2CD17F30B85D95\":{n:\"Colors (1980) (Atari) (Prototype) (PAL)\"},\"3F9431CC8C5E2F220B2AC14BBC8231F4\":{n:\"Colors Demo (PD)\"},CC74DDB45D7BC4D04C2E6F1907416699:{n:\"Colour Display Programme (1997) (Chris Cracknell)\"},\"9989F974C3CF9C641DB6C8A70A2A2267\":{n:\"Colours Selector (Eckhard Stolberg)\"},\"3C72DDAF41158FDD66E4F1CB90D4FD29\":{n:\"Comando Suicida (Dismac)\"},\"4C8832ED387BBAFC055320C05205BC08\":{n:\"Combat (1977) (Atari)\"},AC05C0E53A5E7009DDD75ED4B99949FC:{n:\"Combat (1977) (Atari) (4K)\"},BE35D8B37BBC03848A5F020662A99909:{n:\"Combat (1977) (Atari) (4K) [a]\"},E8AA36E3D49E9BFA654C25DCC19C74E6:{n:\"Combat (1977) (Atari) (PAL)\"},\"0EF64CDBECCCB7049752A3DE0B7ADE14\":{n:\"Combat (32 in 1) (1988) (Atari) (PAL)\"},E2ECCBBE963F80F291CB1F18803BF557:{n:\"Combat (32 in 1) (1988) (Atari) (PAL) (4K)\"},\nE94632B0D863DD76459D689A9865BB33:{n:\"Combat (Jone Yuan) (4K)\"},\"331938989F0F33CA39C10AF4C09FF640\":{n:\"Combat - Tank AI (19-04-2003) (Zach Matley)\"},\"176D3FBA7D687F2B23158098E103C34A\":{n:\"Combat AI (16-02-2003) (Zach Matley)\"},\"5385CF2A04DE1D36AB55C73174B84DB0\":{n:\"Combat Rock (PD) (Hack)\"},E63EFDFDA9A4003DCD77A854A781A06A:{n:\"Combat Rock (PD) (Hack) [a]\"},\"461029AB23800833E9645BE3E472D470\":{n:\"Combat TC (v0.1)\"},B0C9CF89A6D4E612524F4FD48B5BB562:{n:\"Combat Two (1982) (Atari) (Prototype)\"},E25E173740F7ECC0E23025445C4591F3:{n:\"Comitoid (Greg Zumwalt)\"},\"99F7C6C26046BBE95F1C604B25DA8360\":{n:\"Comitoid beta 2 (SnailSoft)\"},\"755FED16B48E81DE05130708A905D00D\":{n:\"Comitoid beta 3 (SnailSoft)\"},E4E9125A8741977583776729359614E1:{n:\"Comitoid beta 4 (SnailSoft)\"},\"5D2CC33CA798783DEE435EB29DEBF6D6\":{n:\"Commando (1988) (Activision)\"},DE1E9FB700BAF8D2E5AE242BFFE2DBDA:{n:\"Commando (1988) (Activision) (PAL)\"},\"61631C2F96221527E7DA9802B4704F93\":{n:\"Commando (1988) (Activision) [different logo]\"},F457674CEF449CFD85F21DB2B4F631A7:{n:\"Commando Raid (1982) (U.S. Games)\"},\"5864CAB0BC21A60BE3853B6BCD50C59F\":{n:\"Commando Raid (208 in 1) (Unknown) (PAL)\"},\"5F316973FFD107F7AB9117E93F50E4BD\":{n:\"Commando Raid (Unknown) (PAL)\"},\"2C8835AED7F52A0DA9ADE5226EE5AA75\":{n:\"Communist Mutants from Space (1982) (Arcadia)\"},E2C89F270F72CD256ED667507FA038A2:{n:\"Communist Mutants from Space (1982) (Arcadia) (PAL)\"},C4B73C35BC2F54B66CD786F55B668A82:{n:\"Communist Mutants from Space (1982) (Arcadia) [a]\"},D541B20EAE221A8EE321375E5971E766:{n:\"Communist Mutants from Space (Preview) (1982) (Arcadia)\"},\"7BA07D4EA18BF3B3245C374D8720AD30\":{n:\"Communist Mutants from Space (Preview) (1982) (Arcadia) (PAL)\"},B98CC2C6F7A0F05176F74F0F62C45488:{n:\"CompuMate (1983) (Spectravideo)\",c:1},E7F005DDB6902C648DE098511F6AE2E5:{n:\"CompuMate (1983) (Spectravideo) (PAL)\",c:1},\"6A2C68F7A77736BA02C0F21A6BA0985B\":{n:\"Computer Chess (07-07-1978) (Atari) (Prototype)\"},B49331B237C8F11D5F36FE2054A7B92B:{n:\"Condor Attack (Unknown) (PAL)\"},F965CC981CBB0822F955641F8D84E774:{n:\"Confrontation (1983) (Answer) (Prototype)\",c:1},\"00B7B4CBEC81570642283E7FC1EF17AF\":{n:\"Congo Bongo (1983) (Sega)\"},\"335A7C5CFA6FEE0F35F5824D1FA09AED\":{n:\"Congo Bongo (1983) (Sega) (PAL)\"},D078D25873C5B99F78FA267245A2AF02:{n:\"Congo Bongo (1983) (Sega) [a]\"},C2FBEF02B6EEA37D8DF3E91107F89950:{n:\"Conquest Of Mars (NTSC)\"},\"85BBEFB90E16BF386B304C1E9A1F6084\":{n:\"Conquest Of Mars (PAL60)\"},A81B29177F258494B499FBAC69789CEF:{n:\"Console Wars (Greg Thompson) (Hack)\"},\"57C5B351D4DE021785CF8ED8191A195C\":{n:\"Cookie Monster Munch (1983) (Atari)\"},A0297C4788F9E91D43E522F4C561B4AD:{n:\"Cookie Monster Munch (1983) (Atari) (PAL)\"},\"798B8921276EEC9E332DFCB47A2DBB17\":{n:\"Cookie Monster Munch (1983) (Atari) (PAL) [a]\"},\"01E5C81258860DD82F77339D58BC5F5C\":{n:\"Corrida da Matematica (CCE)\"},\"6A3B0C33CF74B1E213A629E3C142B73C\":{n:\"Cory The Interviewer (Cody Pittman) (Hack)\"},EEB92F3F46DF841487D1504F2896D61A:{n:\"Corys Adventure (Cody Pittman) (Hack)\"},AB5BF1EF5E463AD1CBB11B6A33797228:{n:\"Cosmic Ark (1982) (Imagic)\"},C5124E7D7A8C768E5A18BDE8B54AEB1D:{n:\"Cosmic Ark (1982) (Imagic) (PAL)\"},\"0FD72A13B3B6103FC825A692C71963B4\":{n:\"Cosmic Ark (1982) (Imagic) (PAL) [selectable starfield]\"},\"98EF1593624B409B9FB83A1C272A0AA7\":{n:\"Cosmic Ark (1983) (CCE)\"},\"69DF0411D4D176E558017F961F5C5849\":{n:\"Cosmic Ark (1983) (CCE) [a]\"},\"7D903411807704E725CF3FAFBEB97255\":{n:\"Cosmic Ark (Reaction) (1982) (Imagic) [selectable starfield]\"},\"72D0ACB5DE0DB662DE0360A6FC59334D\":{n:\"Cosmic Ark (Unknown) (PAL)\"},\"05D61B925D3D2474BAB83F0A79BB5DF1\":{n:\"Cosmic Ark Stars (1997) (Eckhard Stolberg)\"},\"00CE76AD69CDC2FA36ADA01AE092D5A6\":{n:\"Cosmic Avenger (4 Game in One) (1983) (BitCorp) (PAL)\"},\"133B56DE011D562CBAB665968BDE352B\":{n:\"Cosmic Commuter (1984) (Activision)\"},BA657D940A11E807FF314BBA2C8B389B:{n:\"Cosmic Commuter (1984) (Activision) (16K)\"},\"59734E1CC41822373845A09C51E6BA21\":{n:\"Cosmic Commuter (1984) (Activision) (8K)\"},\"5F1B7D5FA73AA071BA0A3C2819511505\":{n:\"Cosmic Commuter (CCE)\"},\"8E879AA58DB41EDB67CBF318B77766C4\":{n:\"Cosmic Commuter (Thomas Jentzsch) (PAL60)\"},F367E58667A30E7482175809E3CEC4D4:{n:\"Cosmic Corridor (1983) (ZiMAG)\"},\"3C853D864A1D5534ED0D4B325347F131\":{n:\"Cosmic Creeps (1982) (Telesys)\",c:1},E2CA84A2BB63D1A210EBB659929747A9:{n:\"Cosmic Creeps (1982) (Telesys) (PAL)\",c:1},\"5835A78A88F97ACEA38C964980B7DBC6\":{n:\"Cosmic Creeps (Unknown) (PAL)\",c:1},E5F17B3E62A21D0DF1CA9AEE1AA8C7C5:{n:\"Cosmic Swarm (1982) (CommaVid)\",c:1},\"9DEC0BE14D899E1AAC4337ACEF5AB94A\":{n:\"Cosmic Swarm (1982) (CommaVid) (4K)\",c:1},\"2A2F46B3F4000495239CBDAD70F17C59\":{n:\"Cosmic Swarm (1982) (CommaVid) (PAL)\",c:1},\"3E22C7EAF6459B67388602E4BEBBB3A8\":{n:\"Cosmic Swarm (1982) (CommaVid) (PAL) (4K)\"},\"8AF58A9B90B25907DA0251EC0FACF3B8\":{n:\"Cosmic Swarm (Jone Yuan)\"},\"1B0F3D7AF668EEEA38DDD6182D8F48FB\":{n:\"Cosmic Swarm (Jone Yuan) (4K)\",c:1},\"36547BC6FAA5132B87504E18D088E1D7\":{n:\"Cosmic Swarm (Unknown) (PAL) (4K)\",c:1},\"6C91AC51421CB9FC72C9833C4F440D65\":{n:\"Cosmic Town (1983) (ITT Family Games) (PAL)\"},\"4981CEFE5493EA512284E7F9F27D1E54\":{n:\"Cosmic War (1983) (Home Vision) (PAL)\"},BE561B286B6432CAC71BCCBAE68002F7:{n:\"Counter Demo (PD)\"},FE67087F9C22655CE519616FC6C6EF4D:{n:\"Crack'ed (11-28-1988) (Atari) (Prototype)\"},A184846D8904396830951217B47D13D9:{n:\"Crackpots (1983) (Activision)\"},\"88ED87C011F699DD27321DBE404DB6C8\":{n:\"Crackpots (1983) (Activision) (16K)\"},\"5A17E30E6E911E74CCD7B716D02B16C6\":{n:\"Crackpots (1983) (Activision) (8K)\"},\"3F3AD2765C874CA13C015CA6A44A40A1\":{n:\"Crackpots (1983) (CCE)\"},\"3091AF0EF1A61E801F4867783C21D45C\":{n:\"Crackpots (1983) (CCE) [a]\"},\"13448EB5BA575E8D7B8D5B280EA6788F\":{n:\"Crackpots (Digivision)\"},\"606C2C1753051E03C1F1AC096C9D2832\":{n:\"Crackpots (Jone Yuan)\"},F3C431930E035A457FE370ED4D230659:{n:\"Crackpots (Unknown) (PAL)\"},FB88C400D602FE759AE74EF1716EE84E:{n:\"Crash Dive (1983) (20th Century Fox)\"},\"0CEBB0BB45A856B23F56D21CE7D1BC34\":{n:\"Crash Dive (1983) (20th Century Fox) (PAL)\"},\"9072C142728A3A3D994956D03BFACBA2\":{n:\"Crash Dive (Fabrizio Zavagli) (PAL60)\"},\"55EF7B65066428367844342ED59F956C\":{n:\"Crazy Climber (1982) (Atari)\"},\"4A7EEE19C2DFB6AEB4D9D0A01D37E127\":{n:\"Crazy Valet (Hozer Video Games)\"},C17BDC7D14A36E10837D039F43EE5FA3:{n:\"Cross Force (1982) (Spectravision)\"},\"8F88309AFAD108936CA70F8B2B084718\":{n:\"Cross Force (1982) (Spectravision) (PAL)\"},\"8372EEC01A08C60DBED063C5524CDFB1\":{n:\"Cross Force (Unknown) (PAL)\"},\"8CD26DCF249456FE4AEB8DB42D49DF74\":{n:\"Crossbow (1987) (Atari)\"},\"7E4783A59972AE2CD8384F231757EA0B\":{n:\"Crossbow (1987) (Atari) (PAL)\"},\"384F5FBF57B5E92ED708935EBF8A8610\":{n:\"Crypts of Chaos (1982) (20th Century Fox)\"},F12AFBFFA080DD3B2801DD14D4837CF6:{n:\"Crystal Castles (01-04-1984) (Atari) (Prototype)\",c:1},\"1C6EB740D3C485766CADE566ABAB8208\":{n:\"Crystal Castles (1984) (Atari)\"},CA7ABC774A2FA95014688BC0849EEE47:{n:\"Crystal Castles (1984) (Atari) (PAL)\"},C68A6BAFB667BAD2F6D020F879BE1D11:{n:\"Crystal Castles (1984) (Atari) (Prototype)\"},A6127F470306EED359D85EB4A9CF3C96:{n:\"Crystal Castles (1984) (Atari) [a]\"},\"0ABF64CA504A116ADCA80F77F85E00FB\":{n:\"Cube Conquest (Billy Eno) (PD)\"},\"58E313E2B5613B2439B5F12BB41E3EEF\":{n:\"Cube Conquest (Demo Interlace) (Billy Eno) (PD)\",c:1},F1929BB9B5DB22D98DD992AA3FE72920:{n:\"Cube Conquest (Improved Interlace) (Billy Eno) (PD)\",c:1},\"36A701C60A9F9768D057BC2A83526A80\":{n:\"Cube Conquest (Interlaced) (Billy Eno) (PD)\",c:1},\"292F2446A0325B7B423E88A2EBFEB5A0\":{n:\"Cube Conquest (Non Interlaced) (Billy Eno) (PD)\",c:1},\"6FA0AC6943E33637D8E77DF14962FBFC\":{n:\"Cubicolor (1982) (Imagic) (Prototype)\"},F74AD642552385C3DAA203A2A6FC2291:{n:\"Cubis (1997) (Eckhard Stolberg)\"},D2C957DD7746521B51BB09FDE25C5774:{n:\"Cubis (6K) (1997) (Eckhard Stolberg)\"},\"281FF9BD0470643853DE5CBD6D9E17F5\":{n:\"Cubis (EM) (1997) (Eckhard Stolberg)\"},\"64CA518905311D2D9AEB56273F6CAA04\":{n:\"Cubo Magico (CCE)\"},\"58513BAE774360B96866A07CA0E8FD8E\":{n:\"Custer's Revenge (1982) (Mystique)\"},\"50200F697AEEF38A3CE31C4F49739551\":{\nn:\"Custer's Revenge (1982) (Mystique) (PAL60)\"},D57EB282D7540051BC9B5427CF966F03:{n:\"Custer's Viagra (Atari Troll) (Hack)\"},\"93EB1795C8B1065B1B3D62BB9EC0CCDC\":{n:\"Custer's Viagra (JSK) (Hack)\"},\"211F76DFF0B7DAD3F6FCAC9D938EE61A\":{n:\"Custer's Viagra (JSK) (Hack) [a]\"},\"5355F80CACF0E63A49CBF4ADE4E27034\":{n:\"Cute Dead Things House (Christian Samuel) (Hack)\"},\"60358EDF0C2CC76B1E549E031E50E130\":{n:\"Cyber Goth Galaxian (Manuel Polik) (Hack)\"},\"52615AE358A68DE6E76467E95EB404C7\":{n:\"DJdsl-wopd (PD)\",c:1},\"2B42DA79A682ED6E2D735FACBF70107E\":{n:\"DKjr Improved (Hack)\"},B719ADA17771A8D206C7976553825139:{n:\"DUP Space Invaders (Ron Corcoran) (Hack)\"},\"929E8A84ED50601D9AF8C49B0425C7EA\":{n:\"Dancing Plate (1982) (BitCorp) (PAL)\",c:1},ECE463ABDE92E8B89BCD867EC71751B8:{n:\"Dancing Plate (1982) (Puzzy) (PAL)\",c:1},F48735115EC302BA8BB2D2F3A442E814:{n:\"Dancing Plate (Unknown) (PAL)\",c:1},\"2D1CF85FBC732856BF76470CD4060F4A\":{n:\"Daredevil (V1) (Stunt_Cycle_Rules!) (PD)\"},CD8FA2E9F6255EF3D3B9B5A4F24A54F7:{n:\"Daredevil (V2) (Stunt_Cycle_Rules!) (PD)\"},\"585F73010E205AE5B04EE5C1A67E632D\":{n:\"Daredevil (V3) (Stunt_Cycle_Rules!) (PD)\"},A422194290C64EF9D444DA9D6A207807:{n:\"Dark Cavern (1982) (M Network)\"},\"106855474C69D08C8FFA308D47337269\":{n:\"Dark Chambers (1988) (Atari)\",c:1},\"0D5AF65AD3F19558E6F8E29BF2A9D0F8\":{n:\"Dark Chambers (1988) (Atari) (PAL)\",c:1},\"951E8CEC7A1A1D6C01FD649E7FF7743A\":{n:\"Dark Chambers (1988) (Atari) (Prototype) (PAL)\"},DBA270850AE997969A18EE0001675821:{n:\"Dark Mage (Greg Troutman) (PD) (4K)\",c:1},\"6333EF5B5CBB77ACD47F558C8B7A95D3\":{n:\"Dark Mage (Greg Troutman) (PD) (8K)\",c:1},\"6CD506509E8FD5627F55603780E862A8\":{n:\"Dark Mage (SuperCharger) (Greg Troutman) (PD)\",c:1},\"2B71A59A53BE5883399917BF582B7772\":{n:\"Dark Mage (final beta) (Greg Troutman) (PD)\",c:1},\"1345E972DBE08EA3E70850902E20E1A5\":{n:\"Dark Mage (rough beta) (Greg Troutman) (PD)\",c:1},C1F209D80F0624DADA5866CE05DD3399:{n:\"Deadly Discs (1989) (Telegames) (PAL)\"},E4C00BEB17FDC5881757855F2838C816:{n:\"Deadly Duck (1982) (20th Century Fox)\"},\"80CD42881E670E4B74A9CCD10D0D7B2E\":{n:\"Deadly Duck (1982) (20th Century Fox) [a]\"},\"4E15DDFD48BCA4F0BF999240C47B49F5\":{n:\"Death Trap (1983) (Avalon Hill)\",c:1},AC7C2260378975614192CA2BC3D20E0B:{n:\"Decathlon (1983) (Activision)\"},\"883258DCD68CEFC6CD4D40B1185116DC\":{n:\"Decathlon (1983) (Activision) (PAL)\"},\"525F2DFC8B21B0186CFF2568E0509BFC\":{n:\"Decathlon (1983) (Activision) [fixed]\"},BF52327C2197D9D2C4544BE053CADED1:{n:\"Decathlon (HES) (PAL) (16K)\"},E1029676EDB3D35B76CA943DA7434DA8:{n:\"Defender (10-30-1981) (Atari) (Prototype)\"},\"0F643C34E40E3F1DAAFD9C524D3FFE64\":{n:\"Defender (1982) (Atari)\"},E4BFF1D5DF70163C0428A1EAD309C22D:{n:\"Defender (1982) (Atari) (PAL)\"},\"808C3B1E60EE0E7C65205FA4BD772221\":{n:\"Defender (CCE)\"},\"6596B3737AE4B976E4AADB68D836C5C7\":{n:\"Defender (Digivision)\"},\"35B10A248A7E67493EC43AEB9743538C\":{n:\"Defender (Dor-x) (Hack)\"},\"3C4223316C835CEAAD619651E25DF0F9\":{n:\"Defender (Genesis)\"},\"047AC3B9FAEA64522B7A23C4465A7AA8\":{n:\"Defender (Unknown) (PAL)\"},CE82A675C773FF21E0FFC0A4D1C90A71:{n:\"Defender 2 (Genesis)\"},\"6F3E3306DA2AA6E74A5E046FF43BF028\":{n:\"Defender Arcade (Genesis)\"},\"3A771876E4B61D42E3A3892AD885D889\":{n:\"Defender II (1988) (Atari)\"},\"5F786B67E05FB9985B77D4BEB35E06EE\":{n:\"Defender II (1988) (Atari) (PAL)\"},\"278531CC31915747018D22145823D2C9\":{n:\"Defender MegaDrive (PAL) (Genesis)\"},\"039CF18B459D33B8A8FCA31D06C4C244\":{n:\"Demo Image Series #0 (12-02-2003) (AD)\"},A4AB331E8768EAFDC20CE8B0411FF77A:{n:\"Demo Image Series #1 - Sam (19-02-2003) (AD)\"},EA86176B27AB0DA8CCE8F0179884BFAA:{n:\"Demo Image Series #10 - It's Art (28-02-2003) (AD)\"},\"678C1D71A1616D9D022F03D8545B64BB\":{n:\"Demo Image Series #11 - Donald And Mario (28-02-2003) (AD)\"},CB8399DC0D409FF1F531EF86B3B34953:{n:\"Demo Image Series #12 - Luigi And Mario (01-03-2003) (AD)\"},\"83F05ECECAE8BE59BA1E51135F4BDCBF\":{n:\"Demo Image Series #13 - Mario (4K Interleaved Chronocolour) (05-03-2003) (AD)\"},\"3025BDC30B5AEC9FB40668787F67D24C\":{n:\"Demo Image Series #14 - Two Marios (4K Interleaved Chronocolour Vertical Movement) (05-03-2003) (AD)\"},\"25710BDE8FA181B0C5CF0846B983BEC1\":{n:\"Demo Image Series #15 - Three Marios (NTSC) (06-03-2003) (AD)\"},FB0C32EF7AF5B45486DB663510094BE8:{n:\"Demo Image Series #15 - Three Marios (NTSC) (Non-Interleave) (06-03-2003) (AD)\"},\"8D8B7D7B983F75DEBBDAAC651E814768\":{n:\"Demo Image Series #15 - Three Marios (PAL) (06-03-2003) (AD)\"},\"14DBB3686DD31964332DC2EF0C55CAD0\":{n:\"Demo Image Series #15 - Three Marios (PAL) (Non-Interleave) (06-03-2003) (AD)\"},EDE7E8BF865B0AFB4744F86D13624F9A:{n:\"Demo Image Series #2 - Clown (19-02-2003) (AD)\"},\"02066B17F29082412C6754C1A2D6302E\":{n:\"Demo Image Series #3 - Baboon (19-02-2003) (AD)\"},C1B1049B88BCD98437D8872D1D62BA31:{n:\"Demo Image Series #4 - Donald (19-02-2003) (AD)\"},BB6A5A2F7B67BEE5D1F237F62F1E643F:{n:\"Demo Image Series #5 - Animegirl (19-02-2003) (AD)\"},A47878A760F5FA3AA99F95C3FDC70A0B:{n:\"Demo Image Series #5 - Baboon (19-02-2003) (AD)\"},\"373B8A081ACD98A895DB0CB02DF35673\":{n:\"Demo Image Series #5 - Boofly (19-02-2003) (AD)\"},\"7CD379DA92C93679F3B6D2548617746A\":{n:\"Demo Image Series #5 - Clown (19-02-2003) (AD)\"},CD38AD19F51B1048D8E5E99C86A2A655:{n:\"Demo Image Series #5 - Flag (19-02-2003) (AD)\"},A0D502DC8B90B1D7DAA5F6EFFB10D349:{n:\"Demo Image Series #5 - Sam (19-02-2003) (AD)\"},A310494AD5BA2B5B221A30D7180A0336:{n:\"Demo Image Series #6 - Mario (19-02-2003) (AD)\"},B451307B8B5E29F1C5F2CF064F6C7227:{n:\"Demo Image Series #6 - Mario (Fixed) (26-02-2003) (AD)\"},D1B4075925E8D3031A7616D2F02FDD1F:{n:\"Demo Image Series #7 - Two Marios (27-02-2003) (AD)\"},\"5C1B1AA78B7609D43C5144C3B3B60ADF\":{n:\"Demo Image Series #8 - Two Marios (Different Interlacing) (27-02-2003) (AD)\"},C8C7DA12F087E8D16D3E6A21B371A5D3:{n:\"Demo Image Series #9 - Genius (28-02-2003) (AD)\"},D09935802D6760AE58253685FF649268:{n:\"Demolition Herby (1983) (Telesys)\",c:1},\"7DFD100BDA9ABB0F3744361BC7112681\":{n:\"Demolition Herby (1983) (Telesys) (PAL)\",c:1},\"4A6BE79310F86F0BEBC7DFCBA4D74161\":{n:\"Demolition Herby (Unknown) (PAL)\",c:1},F0E0ADDC07971561AB80D9ABE1B8D333:{n:\"Demon Attack (1982) (Imagic)\"},\"4901C05068512828367FDE3FB22199FE\":{n:\"Demon Attack (1982) (Imagic) (PAL)\"},B12A7F63787A6BB08E683837A8ED3F18:{n:\"Demon Attack (1982) (Imagic) [fixed]\"},B24F6A5820A4B7763A3D547E3E07441D:{n:\"Demon Attack (1983) (CCE)\"},\"9718B85AC5A55CBC7348963C63FFA35A\":{n:\"Demon Attack (Robby)\"},BAC28D06DFC03D3D2F4A7C13383E84EE:{n:\"Demon Attack (Supergame)\"},\"110AC8ECAF1B69F41BC94C59DFCB8B2D\":{n:\"Demon Attack (Unknown)\"},\"442602713CB45B9321EE93C6EA28A5D0\":{n:\"Demon Attack (Unknown) (PAL)\"},F91FB8DA3223B79F1C9A07B77EBFA0B2:{n:\"Demons to Diamonds (1982) (Atari)\",p:1},D62283AED0F4199ADB2333DE4C263E9C:{n:\"Demons to Diamonds (1982) (Atari) (PAL)\",p:1},BF84F528DE44225DD733C0E6A8E400A0:{n:\"Demons to Diamonds (CCE)\",p:1},\"698F569EAB5A9906EEC3BC7C6B3E0980\":{n:\"Demons! (2003) (SpkLeader) (Hack)\"},\"2D16A8B59A225EA551667BE45F554652\":{n:\"Der Geheimkurier (1983) (Quelle) (PAL)\"},A1CA372388B6465A693E4626CC98B865:{n:\"Der Vielfrass (1983) (Quelle) (PAL)\"},\"25A21C47AFE925A3CA0806876A2B4F3F\":{n:\"Der kleine Baer (1983) (Quelle) (PAL)\"},A1F9159121142D42E63E6FB807D337AA:{n:\"Der moderne Ritter (1983) (Quelle) (PAL)\"},E9E6AD30549A6E2CD89FE93B7691D447:{n:\"Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)\"},FD4F5536FD80F35C64D365DF85873418:{n:\"Desert Falcon (1987) (Atari)\"},D4806775693FCAAA24CF00FC00EDCDF3:{n:\"Desert Falcon (1987) (Atari) (PAL)\"},\"626D67918F4B5E3F961E4B2AF2F41F1D\":{n:\"Diagnostic Test Cartridge 2.0 (1980) (Atari) (Prototype)\"},\"38BD172DA8B2A3A176E517C213FCD5A6\":{n:\"Diagnostic Test Cartridge 2.6 (1982) (Atari)\"},\"02AB2C47BC21E7FEAFA015F90D7DF776\":{n:\"Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype)\"},\"09F89BBFA2AB00F1964D200E12D7CED0\":{n:\"Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype) (4K)\"},\"740F39E71104E90416C29A73560B9C6B\":{n:\"Diagnostic Test Cartridge 2.6P (1982) (Atari) (PAL) (4K)\"},\"9222B25A0875022B412E8DA37E7F6887\":{\nn:\"Dice Puzzle (1983) (Panda)\",c:1},E02156294393818FF872D4314FC2F38E:{n:\"Dice Puzzle (1983) (Sancho) (PAL)\",c:1},\"72876FD7C7435F41D571F1101FC456EA\":{n:\"Die Ente und der Wolf (1983) (Quelle) (PAL)\"},\"31DF1C50C4351E144C9A378ADB8C10BA\":{n:\"Die Ratte und die Karotten (1983) (Quelle) (PAL)\"},\"834A2273E97AEC3181EE127917B4B269\":{n:\"Die hungrigen Froesche (1983) (Quelle) (PAL)\"},\"6DDA84FB8E442ECF34241AC0D1D91D69\":{n:\"Dig Dug (1983) (Atari)\"},\"977294AE6526C31C7F9A166EE00964AD\":{n:\"Dig Dug (1983) (Atari) (PAL)\"},\"21D2C435BCCCDE7792D82844B3CF60F4\":{n:\"Dig Dug (1983) (Atari) (PAL) [a]\"},BAE1A23F9B6ACDADF465CFB330BA0ACB:{n:\"Dig Dug (1983) (Atari) [a]\"},EF66AF190840871409FE1702D2483554:{n:\"DiscoTech (12-02-2003) (Andrew Davie)\"},\"939CE554F5C0E74CC6E4E62810EC2111\":{n:\"Dishaster (1983) (ZiMAG)\",c:1},\"740B47DF422372FBEF700B42CEA4E0BF\":{n:\"Dizzy Wiz (2001) (B. Watson)\"},A5E9ED3033FB2836E80AA7A420376788:{n:\"Dodge 'Em (1980) (Atari) (PAL)\"},\"10F62443F1AE087DC588A77F9E8F43E9\":{n:\"Dodge 'Em (1980) (Atari) (PAL) [fixed]\"},C3472FA98C3B452FA2FD37D1C219FB6F:{n:\"Dodge 'Em (1980) (Atari) [a]\"},\"83BDC819980DB99BF89A7F2ED6A2DE59\":{n:\"Dodge 'Em (1980) (Atari) [fixed]\"},D28AFE0517A046265C418181FA9DD9A1:{n:\"Dodge 'Em (Unknown) (PAL)\"},BC526185AD324241782DC68BA5D0540B:{n:\"Dodge Demo 1 (PD)\"},\"5ACF9865A72C0CE944979F76FF9610F0\":{n:\"Dodge Demo 2 (PD)\"},\"0C0392DB94A20E4D006D885ABBE60D8E\":{n:\"Dodge Demo 3 (PD)\"},E2B682F6E6D76B35C180C7D847E93B4F:{n:\"Dodge Demo 4 (PD)\"},CA09FA7406B7D2AEA10D969B6FC90195:{n:\"Dolphin (1983) (Activision)\"},D09A7504EE8C8717AC3E24D263E7814D:{n:\"Dolphin (1983) (Activision) (16K)\"},E237EE91514D5ED535C95A14FC608C11:{n:\"Dolphin (1983) (Activision) (8K)\"},\"3889351C6C2100B9F3AEF817A7E17A7A\":{n:\"Dolphin (CCE)\"},\"7FFC2D80FD49A124808315306D19868E\":{n:\"Domino (Ishido) (PD)\"},\"937736D899337036DE818391A87271E0\":{n:\"Donald Duck's Speedboat (04-12-1983) (Atari) (Prototype)\"},FA7CE62E7FD77E02B3E2198D70742F80:{n:\"Donald Duck's Speedboat (04-18-1983) (Atari) (Prototype) (PAL)\"},F473F99E47D4026A7A571184922EBF04:{n:\"Donkey Claus (Philip R. Frey) (Hack)\"},\"8B5B1E3A434EBBDC2C2A49DC68F46360\":{n:\"Donkey Kong (1982) (CBS Electronics) (PAL)\"},\"3A526E6A1F9FE918AF0F2CE997DFEA73\":{n:\"Donkey Kong (1982) (CBS Electronics) (PAL) [a1]\"},\"0894AA7BE77521F9DF562BE8D9555FE6\":{n:\"Donkey Kong (1982) (CBS Electronics) (PAL) [a2]\"},B59417D083B0BE2D49A7D93769880A4B:{n:\"Donkey Kong (1983) (Pet Boat) (PAL)\"},\"36B20C427975760CB9CF4A47E41369E4\":{n:\"Donkey Kong (1987) (Atari)\"},\"7511C34518A9A124EA773F5B0B5C9A48\":{n:\"Donkey Kong (208 in 1) (Unknown) (PAL)\"},DE5AAB22E5ABA5EDCB29A3E7491FF319:{n:\"Donkey Kong (Star Game)\"},E7864CAAF9EC49ED67B1904CE8602690:{n:\"Donkey Kong 2K3 Pic (PD)\"},\"5B98E0536C3F60547DD708AE22ADB04B\":{n:\"Donkey Kong Gingerbread Man (Ben Hudman) (Prototype)\"},\"5A6FEBB9554483D8C71C86A84A0AA74E\":{n:\"Donkey Kong Jr (1983) (CCE)\"},\"2880C6B59BD54B153174676E465167C7\":{n:\"Donkey Kong Jr. (Tron)\"},\"2091AF29B4E7B86914D79D9AAA4CBD20\":{n:\"Donkey Kong Junior (1983) (CBS Electronics) (PAL)\"},C8FA5D69D9E555EB16068EF87B1C9C45:{n:\"Donkey Kong Junior (1987) (Atari)\"},\"278155FC9956E9B6EF2359EB238F7C7F\":{n:\"Donkey Kong Junior (Unknown) (Hack)\"},\"200A9D2A7CB4441CE4F002DF6AA47E38\":{n:\"Doomzerk (PD) (Hack)\"},\"7E2FE40A788E56765FE56A3576019968\":{n:\"Double Dragon (1989) (Activision)\"},\"3624E5568368929FABB55D7F9DF1022E\":{n:\"Double Dragon (1989) (Activision) (PAL)\"},\"47464694E9CCE07FDBFD096605BF39D4\":{n:\"Double Dragon (1989) (Activision) (PAL) [a]\"},\"4999B45BE0AB5A85BAC1B7C0E551542B\":{n:\"Double Dragon (CCE) (PAL)\"},\"740A7FA80F52CC7287BA37677AFB6B21\":{n:\"Double Dragon (PAL) (Genesis)\"},\"368D88A6C071CABA60B4F778615AAE94\":{n:\"Double Dunk (1989) (Atari)\"},CFC226D04D7490B69E155ABD7741E98C:{n:\"Double Dunk (1989) (Atari) (PAL)\"},\"3B966BF3C2CA34AC6CA1DE4CF6383582\":{n:\"Double-Height 6-Digit Score Display (2001) (AD)\"},\"707ECD80030E85751EF311CED66220BC\":{n:\"Double-Height 6-Digit Score Display (Background Color Change) (2001) (AD)\"},\"88DCE4037471424BB38AB6841AAA8CAB\":{n:\"Double-Height 6-Digit Score Display (Two Background Color Change) (2001) (AD)\"},\"6A882FB1413912D2CE5CF5FA62CF3875\":{n:\"Dragon Defender (Ariola) (PAL)\",c:1},\"24D9A55D8F0633E886A1B33EE1E0E797\":{n:\"Dragon Defender (Thomas Jentzsch)\",c:1},\"41810DD94BD0DE1110BEDC5092BEF5B0\":{n:\"Dragon Treasure (Funvision)\"},\"6FC394DBF21CF541A60E3B3631B817F1\":{n:\"Dragonfire (1982) (Imagic) (PAL)\"},\"1267E3C6CA951FF1DF6F222C8F813D97\":{n:\"Dragonfire (Unknown) (PAL)\"},\"78B84CFB1C57B0488D674D2374E656E6\":{n:\"Dragonstomper (1 of 3) (1982) (Arcadia)\"},\"2D9E65959808A6098C16C82A59C9D9DC\":{n:\"Dragonstomper (1 of 3) (1982) (Arcadia) (PAL)\"},\"90CCF4F30A5AD8C801090B388DDD5613\":{n:\"Dragonstomper (1982) (Arcadia)\"},\"8B04E9D132B8E30D447ACAA6BD049C32\":{n:\"Dragonstomper (1982) (Arcadia) (PAL)\"},\"5B7EA6AA6B35DC947C65CE665FDE624B\":{n:\"Dragonstomper (2 of 3) (1982) (Arcadia)\"},\"66C4E0298D4120DF333BC2F3E163657E\":{n:\"Dragonstomper (2 of 3) (1982) (Arcadia) (PAL)\"},DD8A2124D4EDA200DF715C698A6EA887:{n:\"Dragonstomper (3 of 3) (1982) (Arcadia)\"},AFF8CBA0F2D2EB239953DD7116894A08:{n:\"Dragonstomper (3 of 3) (1982) (Arcadia) (PAL)\"},A302B922A8DBEC47743F28B7F91D4CD8:{n:\"Dragonstomper (Preview) (1982) (Arcadia)\"},FBAC6476E7B2B20D246202AF81662C88:{n:\"Dragonstomper (Preview) (1982) (Arcadia) (PAL)\"},A867B76098786C4091DBA2FCEE5084C3:{n:\"Dragrace (Hack)\"},\"77057D9D14B99E465EA9E29783AF0AE3\":{n:\"Dragster (1980) (Activision)\"},D763E3A9CDCDD56C715EC826106FAB6A:{n:\"Dragster (1980) (Activision) (16K)\"},\"63A6EDA1DA30446569AC76211D0F861C\":{n:\"Dragster (1980) (Activision) (4K)\"},\"9D1556AE5890398BE7E3D57449774B40\":{n:\"Dragster (1980) (Activision) (8K)\"},\"0C54811CF3B1F1573C9164D5F19ECA65\":{n:\"Dragster (1980) (Activision) (PAL)\"},BB18189021D58362D9E4D317CD2E28B7:{n:\"Dragster (1980) (Activision) (PAL) (4K)\"},C216B91F5DB21A093DED6A5AAEC85709:{n:\"Dragster (Jone Yuan)\"},\"3BB9793C60C92911895CF44530846136\":{n:\"Dragster (Jone Yuan) (4K)\"},B1339C56A9EA63122232FE4328373AC5:{n:\"Dream Flight (1983) (Goliath) (PAL)\"},\"2BC6C53B19E0097A242F22375A6A60FF\":{n:\"Droid Demo 2 (David Conrad Schweinsberg) (PD)\"},\"37F42AB50018497114F6B0F4F01AA9A1\":{n:\"Droid Demo 2-M (David Conrad Schweinsberg) (PD)\"},BFF8F8F53A8AEB1EE804004CCBB08313:{n:\"Droid Demo 22 (David Conrad Schweinsberg) (PD)\"},C1B7AEABC3EC41556D924C8372A9BA5B:{n:\"Dukes of Hazard (1980) (Atari) (Prototype)\"},\"34CA2FCBC8BA4A0B544ACD94991CFB50\":{n:\"Dukes of Hazzard (1980) (Atari) (Prototype) (4K)\"},\"51DE328E79D919D7234CF19C1CD77FBC\":{n:\"Dukes of Hazzard (1983) (Atari)\"},\"2BA02F509A4991AA176BA8D9E540DF3D\":{n:\"Dukes of Hazzard (1983) (Atari) [a]\"},\"3897744DD3C756EA4B1542E5E181E02A\":{n:\"Dumbo's Flying Circus (05-05-1983) (Atari) (Prototype)\"},\"1F773A94D919B2A3C647172BBB97F6B4\":{n:\"Dumbo's Flying Circus (07-11-1983) (Atari) (Prototype) (PAL)\"},\"31FCBCE1CFA6EC9F5B6DE318E1F57647\":{n:\"Dumbo's Flying Circus (1983) (Atari) (Prototype) (PAL)\"},\"469473FF6FED8CC8D65F3C334F963AAB\":{n:\"Dune (07-10-1984) (Atari) (Prototype)\",c:1},AFB3BC45C6A82739CC82582127CD96E6:{n:\"Dungeon (11-22-1985) (Atari) (Prototype)\"},\"615A3BF251A38EB6638CDC7FFBDE5480\":{n:\"E.T. - The Extra-Terrestrial (1982) (Atari)\"},\"8FEBDD9142960D084AB6EEB1D3E88969\":{n:\"E.T. - The Extra-Terrestrial (1982) (Atari) (PAL)\"},A511F7EE13E4B35512F9217A677B4028:{n:\"E.T. - The Extra-Terrestrial (1982) (Atari) (PAL) [a]\"},C82EC00335CBB4B74494AECF31608FA1:{n:\"E.T. - The Extra-Terrestrial (CCE)\"},F71694BD8E89D5A28DAA73BF856635DF:{n:\"E.T. Book Cart (NTSC)\",c:1},\"91191666186117F5BF78B40623D79039\":{n:\"E.T. Book Cart (PAL)\",c:1},\"84DF0704E6C777E1F9A16EC92AD80DF0\":{n:\"E.T. Book Cart (PAL60)\",c:1},EFA1098C7D091B940C2543ABE372F036:{n:\"E.T. The Extra-Terrestrial (Scott Stilphen) (Hack)\"},\"13ABC32F803165C458BB086FA57195FB\":{n:\"E.T. The Extra-Testical (Christian Samuel) (Hack)\"},\"6982854657A2CC87D712F718E402BF85\":{n:\"Earth Attack (Zellers)\"},\"033E21521E0BF4E54E8816873943406D\":{n:\"Earth Dies Screaming, The (1983) (20th Century Fox)\"},\"2C0DC885D5EDE94AA664BF3081ADD34E\":{n:\"Earth Dies Screaming, The (Unknown) (PAL)\"\n},\"2BF34B6AD7D2317A2D0808B3FB93571B\":{n:\"Easy Playfield Graphics (1997) (Chris Cracknell)\"},\"9CBB07F1993A027BC2F87D5205457EC9\":{n:\"Eckhard Stolberg's Scrolling Text Demo 1 (PD)\"},F8BFD99163D2C4EC688357786E6FBA28:{n:\"Eckhard Stolberg's Scrolling Text Demo 2 (PD)\"},\"32E65D1E4DFCBCD9B57FEE72CAFE074C\":{n:\"Eckhard Stolberg's Scrolling Text Demo 3 (PD)\"},\"3B5751A8D20F7DE41EB069F76FECD5D7\":{n:\"Eckhard Stolberg's Scrolling Text Demo 4 (PD)\"},\"3E6DAB92009D6034618CB6B7844C5216\":{n:\"Ed Invaders (Hack)\"},\"07973BE3ECFD55235BF59AA56BDEF28C\":{n:\"Eddy Langfinger, der Museumsdieb (1983) (Quelle) (PAL)\",c:1},C6D48C6AE6461E0E82753540A985AC9E:{n:\"Edtris (1994) (Ed Federmeyer)\"},\"683DC64EF7316C13BA04EE4398E2B93A\":{n:\"Edtris (1995) (Ed Federmeyer)\"},A00EE0AED5C8979ADD4C170F5322C706:{n:\"Egghead (Barry Laws Jr.) (Hack)\"},\"42B2C3B4545F1499A083CFBC4A3B7640\":{n:\"Eggomania (1982) (U.S. Games)\",p:1},\"2B1589C7E1F394AE6A1C046944F06688\":{n:\"Eggomania (1983) (Carrere Video) (PAL)\",p:1},A3F2A0FCF74BBC5FA763B0EE979B05B1:{n:\"Eishockey-Fieber (1983) (Quelle) (PAL)\"},\"71F8BACFBDCA019113F3F0801849057E\":{n:\"Elevator Action (1983) (Atari) (Prototype)\"},B6812EAF87127F043E78F91F2028F9F4:{n:\"Eli's Ladder (1982) (Simage)\"},\"7EAFC9827E8D5B1336905939E097AAE7\":{n:\"Elk Attack (1987) (Atari) (Prototype)\"},DBC8829EF6F12DB8F463E30F60AF209F:{n:\"Encounter at L-5 (1982) (Data Age)\",p:1},\"5188FEE071D3C5EF0D66FB45C123E4A5\":{n:\"Encounter at L-5 (1983) (Gameworld) (PAL)\",p:1},\"94B92A882F6DBAA6993A46E2DCC58402\":{n:\"Enduro (1983) (Activision)\",l:\"ENDURO\"},CFE62ED7125FF9FAE99B4C8A367C0399:{n:\"Enduro (1983) (Activision) (16K)\",l:\"ENDURO\"},\"265C74A956500BD31EFD24ADC6D5CCF6\":{n:\"Enduro (1983) (Activision) (8K)\",l:\"ENDURO\"},\"6A82B8ECC663F371B19076D99F46C598\":{n:\"Enduro (1983) (Activision) (PAL)\",l:\"ENDURO\"},DE62F8A30298E2325249FE112ECB5C10:{n:\"Enduro (1983) (CCE)\",l:\"ENDURO\"},\"360C0DCB11506E73BD0B77207C81BC62\":{n:\"Enduro (1983) (Digitel)\",l:\"ENDURO\"},E1EFE2EF7664BB6758B1A22FF8EA16A1:{n:\"Enduro (1983) (Dynacom)\",l:\"ENDURO\"},\"07F84DB31E97EF8D08DC9FA8A5250755\":{n:\"Enduro (1984) (Supergame)\",l:\"ENDURO\"},\"5DF559A36347D8572F9A6E8075A31322\":{n:\"Enduro (Digivision)\",l:\"ENDURO\"},D2F713C78A9EBBA9DA6D10AEEFC6F20F:{n:\"Enduro (Digivision) [a]\",l:\"ENDURO\"},A8E49D7E24CE293629CA29614862821B:{n:\"Enduro (Genesis)\"},\"2BB0A1F1DEE5226DE648EB5F1C97F067\":{n:\"Enduro (Robby)\",l:\"ENDURO\"},E9E646F730B8400CD5DA08C849EF3E3B:{n:\"Enduro (Tron)\",l:\"ENDURO\"},\"4279485E922B34F127A88904B31CE9FA\":{n:\"Enduro (Unknown)\",l:\"ENDURO\"},\"61719A8BDAFBD8DAB3CA9CE7B171B9E2\":{n:\"Enduro (Unknown) (PAL)\",l:\"ENDURO\"},\"9F5096A6F1A5049DF87798EB59707583\":{n:\"Entity, The (1983) (20th Century Fox) (Prototype)\"},\"6B683BE69F92958ABE0E2A9945157AD5\":{n:\"Entombed (1982) (U.S. Games)\",c:1},D7F5BF138CFC7FEAB7B8EF1534C8B477:{n:\"Eric Bergstrom's KC-135 (Radar Map) (Aaron Bergstrom)\"},\"8538C5E3EE83267774480649F83FA8D6\":{n:\"Escape Demo (PD)\"},D1A1841B7F2007A24439AC248374630A:{n:\"Escape from the Mindmaster (1 of 4) (1982) (Arcadia)\"},\"3576037C9281656655FA114A835BE553\":{n:\"Escape from the Mindmaster (1 of 4) (1982) (Arcadia) (PAL)\"},\"81F4F0285F651399A12FF2E2F35BAB77\":{n:\"Escape from the Mindmaster (1982) (Arcadia)\"},C9E721EB29C940C2E743485B044C0A3F:{n:\"Escape from the Mindmaster (1982) (Arcadia) (PAL)\"},\"64198BB6470C78AC24FCF13FE76AB28C\":{n:\"Escape from the Mindmaster (1982) (Arcadia) [a]\"},FDF0DE38517E0CF7F0885F98CCC95836:{n:\"Escape from the Mindmaster (2 of 4) (1982) (Arcadia)\"},A075AD332942740C386F4C3814925ECE:{n:\"Escape from the Mindmaster (2 of 4) (1982) (Arcadia) (PAL)\"},\"7A63D7EA3F2851BCF04F0BB4BA1A3929\":{n:\"Escape from the Mindmaster (3 of 4) (1982) (Arcadia)\"},CC1939E4769D0C157ACE326EFCFDCF80:{n:\"Escape from the Mindmaster (3 of 4) (1982) (Arcadia) (PAL)\"},F0536303F49006806BAC3AEC15738336:{n:\"Escape from the Mindmaster (4 of 4) (1982) (Arcadia)\"},\"1EE2CFC7D0333B96BD11F7F3EC8CE8BC\":{n:\"Escape from the Mindmaster (4 of 4) (1982) (Arcadia) (PAL)\"},F1127ADE54037236E75A133B1DFC389D:{n:\"Escape from the Mindmaster (Preview) (1982) (Arcadia)\"},\"271BFD5DC2673D382019F1FB6CAB9332\":{n:\"Escape from the Mindmaster (Preview) (1982) (Arcadia) (PAL)\"},F344AC1279152157D63E64AA39479599:{n:\"Espial (1984) (Tigervision)\"},F7A138EED69665B5CD1BFA796A550B01:{n:\"Espial (1984) (Tigervision) (PAL)\"},\"66362890EB78D6EA65301592CCE65F5B\":{n:\"Euchre (13-07-2001) (Eric Eid) (PD)\"},\"72097E9DC366900BA2DA73A47E3E80F5\":{n:\"Euchre (15-06-2001) (Eric Eid) (PD)\"},\"524693B337F7ECC9E8B9126E04A232AF\":{n:\"Euchre (19-08-2001) (Eric Eid) (PD)\"},\"8EE3F64DC0F349ADC893FE93DF5245D8\":{n:\"Euchre (20-07-2001) (Eric Eid) (PD)\"},EB71743C6C7CCCE5B108FAD70A326AD9:{n:\"Euchre (25-11-2001) (Erik Eid) (PD)\"},\"65562F686B267B21B81C4DDDC129D724\":{n:\"Euchre (28-07-2001) (Eric Eid) (PD)\"},\"29949F893EF6CB9E8ECB368B9E99EEE4\":{n:\"Euchre (Alpha) (NTSC) (31-08-2002) (Erik Eid)\"},\"407A0C6CC0FF777F67B669440D68A242\":{n:\"Euchre (Alpha) (PAL) (31-08-2002) (Erik Eid)\"},FFB1CD548563158CE33F9D10268187E7:{n:\"Euchre (Beta) (NTSC) (12-09-2002) (Erik Eid)\"},\"877A5397F3F205BF6750398C98F33DE1\":{n:\"Euchre (Beta) (PAL) (12-09-2002) (Erik Eid)\"},\"873FB75A7788BA0F4AE715229A05545E\":{n:\"Euchre (Improved Colors) (PAL) (26-09-2002) (Erik Eid)\"},\"15BF2EF7583BFCBBBA630847A1DC5539\":{n:\"Euchre (Jul 15) (2002) (Eric Eid) (PD)\"},\"80E52315919BD8A8B82A407CCD9BB13F\":{n:\"Euchre (Jul 28) (2002) (Eric Eid) (PD)\"},\"40AA851E8D0F1C555176A5E209A5FABB\":{n:\"Euchre (More for less) (NTSC) (22-08-2002) (Erik Eid)\"},C9D02D3CFEEF8B48FB71CB4520A4AA84:{n:\"Euchre (More for less) (PAL) (22-08-2002) (Erik Eid)\"},B1B20536AEF4EED9C79DC5804F077862:{n:\"Euchre (NTSC) (09-11-2001) (Erik Eid)\"},D4AA89E96D2902692F5C45F36903D336:{n:\"Euchre (NTSC) (Erik Eid) (PD)\"},E5D5085123A98C1E61818CAA2971E999:{n:\"Euchre (PAL) (Erik Eid) (PD)\"},\"6205855CC848D1F6C4551391B9BFA279\":{n:\"Euchre (Release Candidate 2) (NTSC) (01-10-2002) (Erik Eid)\"},\"199985CAE1C0123AB1AEF921DAACE8BE\":{n:\"Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)\"},\"4690FDB70C86604BB35DA26696818667\":{n:\"Euchre (Release Candidate) (NTSC) (28-09-2002) (Erik Eid)\"},BFFE34516AAA3CBF5D307EAB382A7E95:{n:\"Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)\"},\"77CD9A9DD810CE8042BDB9D40E256DFE\":{n:\"Evil Dead (2003) (Kyle Pittman) (Hack)\"},B5657D4C1C732FBB6AF150668464247F:{n:\"Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype)\"},\"1B4B06C2A14ED3EE73B7D0FD61B6AAF5\":{n:\"Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype) [a]\"},\"3AD58B53A1E972396890BD86C735E78D\":{n:\"Excalibur Version 36 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)\"},\"2EAF8FA9E9FDF1FCFC896926A4BDBF85\":{n:\"Excalibur Version 39 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)\"},\"6362396C8344EEC3E86731A700B13ABF\":{n:\"Exocet (1983) (Panda)\"},\"295F3679BDF91CA5E37DA3F787B29997\":{n:\"Exorcise (Hack)\"},EBD2488DCACE40474C1A78FA53EBFADF:{n:\"Extra Terrestrials (1983) (SSG)\"},\"7926083AD423ED685DE3B3A04A914315\":{n:\"Face Invaders 2 (Barry Laws Jr.) (Hack)\"},\"0AF51CEB4AECC7A8FC89781AC44A1973\":{n:\"Face Invaders Deluxe (Barry Laws Jr.) (Hack)\"},B80D50ECEE73919A507498D0A4D922AE:{n:\"Fantastic Voyage (1982) (20th Century Fox)\"},\"0F24CA5668B4AB5DFAF217933C505926\":{n:\"Fantastic Voyage (208 in 1) (Unknown) (PAL)\"},F7E07080ED8396B68F2E5788A5C245E2:{n:\"Farmyard Fun (Ariola)\"},\"9DE0D45731F90A0A922AB09228510393\":{n:\"Fast Eddie (1982) (20th Century Fox)\"},A97733B0852EE3096300102CB0689175:{n:\"Fast Eddie (1983) (CCE)\"},\"665B8F8EAD0EEF220ED53886FBD61EC9\":{n:\"Fast Food (1982) (Telesys)\"},\"48411C9EF7E2CEF1D6B2BEE0E6055C27\":{n:\"Fast Food (1982) (Telesys) (PAL)\"},\"313243FC41E49EF6BD3AA9EBC0D372DD\":{n:\"Fast Food (Unknown) (PAL)\"},\"6B7E1C11448C4D3F28160D2DE884EBC8\":{n:\"Fast Food (Zirok)\"},\"63E783994DF824CAF289B69A084CBF3E\":{n:\"Fat Albert (David Marli) (Hack)\"},\"8A159EE58B2F0A54805162984B0F07E5\":{n:\"Fatal Run (1989) (Atari) (PAL) [a]\"},\"85470DCB7989E5E856F36B962D815537\":{n:\"Fatal Run (1989) (Atari) (Prototype)\"},EF263D40A23483AB339CAC44D9515A56:{n:\"Fatal Run (TJ)\"},\"074EC425EC20579E64A7DED592155D48\":{\nn:\"Fatal Run (Ultimate Driving) (1989) (Atari) (PAL)\"},\"0B55399CF640A2A00BA72DD155A0C140\":{n:\"Fathom (1983) (Imagic)\",c:1},\"47CD61F83457A0890DE381E478F5CF5F\":{n:\"Fathom (1983) (Imagic) (PAL)\",c:1},\"962FFD3EAF865230A7A312B80E6C5CFD\":{n:\"Fathom (1983) (Imagic) (PAL) [a]\",c:1},\"540075F657D4B244A1F74DA1B9E4BF92\":{n:\"Festival (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\"},\"8E737A88A566CC94BD50174C2D019593\":{n:\"Feuerwehr im Einsatz (1983) (Quelle) (PAL)\"},\"2AC3A08CFBF1942BA169C3E9E6C47E09\":{n:\"Fighter Pilot (1988) (Activision) (PAL)\"},\"211FBBDBBCA1102DC5B43DC8157C09B3\":{n:\"Final Approach (1982) (Apollo)\"},\"51E390424F20E468D2B480030CE95D7B\":{n:\"Fire Bird (Video Game Program) (PAL)\"},\"01E60A109A6A67C70D3C0528381D0187\":{n:\"Fire Birds (1983) (ITT Family Games) (PAL)\"},D09F1830FB316515B90694C45728D702:{n:\"Fire Fighter (1982) (Imagic)\"},\"90D77E966793754AB4312C47B42900B1\":{n:\"Fire Fighter (1982) (Imagic) (PAL)\"},\"20DCA534B997BF607D658E77FBB3C0EE\":{n:\"Fire Fly (1983) (Mythicon)\"},\"386FF28AC5E254BA1B1BAC6916BCC93A\":{n:\"Fireball (1982) (Arcadia)\",p:1},CDB81BF33D830EE4EE0606EE99E84DBA:{n:\"Fireball (1982) (Arcadia) (PAL)\",p:1},\"5438E84B90E50A5362F01CC843B358D4\":{n:\"Fireball (1982) (Arcadia) (Prototype)\",p:1},\"683BB0D0F0C5DF58557FBA9DFFC32C40\":{n:\"Fireball (1982) (Arcadia) [a]\",p:1},\"66BC1BEF269EA59033928BAC2D1D81E6\":{n:\"Fireball (Preview) (1982) (Arcadia)\",p:1},A3D7C299FBCD7B637898EE0FDCFC47FC:{n:\"Fireball (Preview) (1982) (Arcadia) (PAL)\",p:1},\"6C85098518D3F94F7622C42FD1D819AC\":{n:\"Firebug (Suntek) (PAL)\"},D2901C34BB6496BB96C7BC78A9E6142A:{n:\"Fish Revenge (2003) (Greg Zumwalt) (Hack)\"},\"3FE43915E5655CF69485364E9F464097\":{n:\"Fisher Price (1983) (CCE)\"},\"2517827950FEE41A3B9DE60275C8AA6A\":{n:\"Fishing (32 in 1) (1988) (Atari) (PAL)\"},F9967369943209B4788D4E92CEFC0795:{n:\"Fishing (32 in 1) (1988) (Atari) (PAL) (4K)\"},B8865F05676E64F3BEC72B9DEFDACFA7:{n:\"Fishing Derby (1980) (Activision)\"},\"3C82E808FE0E6A006DC0C4E714D36209\":{n:\"Fishing Derby (1980) (Activision) (16K)\"},\"85227160F37AAA29F5E3A6C7A3219F54\":{n:\"Fishing Derby (1980) (Activision) (4K)\"},\"5131AB3797FE8C127E3E135B18B4D2C8\":{n:\"Fishing Derby (1980) (Activision) (8K)\"},\"571C6D9BC71CB97617422851F787F8FE\":{n:\"Fishing Derby (1980) (Activision) (PAL)\"},ECFA04523DDE82FE42CDC7315A8F61B6:{n:\"Fishing Derby (1980) (Activision) (PAL) (4K)\"},\"7628D3CADEEE0FD2E41E68B3B8FBE229\":{n:\"Fishing Derby (32 in 1) (1988) (Atari) (PAL)\"},D782543818B6320E4F60D77DA2B596DE:{n:\"Fishing Derby (32 in 1) (1988) (Atari) (PAL) (4K)\"},DEA0ADE296F7093E71185E802B500DB8:{n:\"Fishing Derby (CCE)\"},\"804ED85EADF1CE3E93721547CBEA7592\":{n:\"Fishing Derby (CCE) (4K)\"},\"0651216C4A4A9C9AC5ADA3013A317C72\":{n:\"Fishing Derby (Jone Yuan) (4K) (Hack)\"},\"74023E0F2E739FC5A9BA7CAAEEEE8B6B\":{n:\"Fishing Derby (Jone Yuan) (Hack)\"},\"1D2A28EB8C95DA0D6D6B18294211839F\":{n:\"Fishing Derby (Unknown) (PAL) (4K)\"},\"6B72B691EA86F61438ED0D84C4D711DE\":{n:\"Fishing Derby (Unknown) (PAL) (4K) (Hack)\"},\"458883F1D952CD772CF0057ABCA57497\":{n:\"Fishing Derby (Unknown) (PAL) (Hack)\"},\"30512E0E83903FC05541D2F6A6A62654\":{n:\"Flag Capture (1978) (Atari)\"},\"4B143D7DCF6C96796C37090CBA045F4F\":{n:\"Flag Capture (1978) (Atari) (4K)\"},DA7A17DCDAA62D6971393C0A6FAF202A:{n:\"Flag Capture (208 in 1) (Unknown) (PAL)\"},F5445B52999E229E3789C39E7EE99947:{n:\"Flag Capture (32 in 1) (1988) (Atari) (PAL)\"},B897F9E3F939B9F21566D56DB812A84E:{n:\"Flag Capture (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"19162393786098D50587827588198A86\":{n:\"Flag Capture (Jone Yuan) (4K)\"},\"4AE8C76CD6F24A2E181AE874D4D2AA3D\":{n:\"Flash Gordon (Unknown) (PAL)\"},\"7A2AF383014F5D810AD26D322823549D\":{n:\"FlickerSort Demo (20-04-2002) (MP)\"},\"02811151906E477D47C135DB5B1699C6\":{n:\"FlickerSort Demo (Updated) (20-04-2002) (MP)\"},\"5A2F2DCD775207536D9299E768BCD2DF\":{n:\"Flippern (Double-Game Package) (1983) (Quelle) (PAL)\"},E549F1178E038FA88DC6D657DC441146:{n:\"Football (1979) (Atari)\"},D86DEB100C6ABED1588AA84B2F7B3A98:{n:\"Football (1979) (Atari) (4K)\"},\"5F9B62350B31BE8BD270D9A241CBD50E\":{n:\"Football (1989) (Telegames) (PAL)\"},CFE2185F84CE8501933BEB5C5E1FD053:{n:\"Football (208 in 1) (Unknown) (PAL)\"},E6D5948F451A24994DFAACA51DFDB4E1:{n:\"Football (Jone Yuan) (4K)\"},\"213E5E82ECB42AF237CFED8612C128AC\":{n:\"Forest (1983) (Sancho) (PAL)\",c:1},\"7AB210F448DE518FA61A5924120BA872\":{n:\"Fortress (20-04-2003) (CT)\"},\"2008C76DEBA5953201EF75A09B2FF7DC\":{n:\"Fortress (21-04-2003) (CT)\"},\"19D9B5F8428947EAE6F8E97C7F33BF44\":{n:\"Fortress (Dual Version) (20-04-2003) (CT)\"},\"6D74EBABA914A5CFC868DE9DD1A5C434\":{n:\"Fortress (Smooth Version) (20-04-2003) (CT)\"},\"76EE917D817EF9A654BC4783E0273AC4\":{n:\"Fox & Goat (Double-Game Package) (1983) (Quelle) (PAL)\"},\"0856F202B18CD46E44FD1DC3B42E9BFB\":{n:\"Frame Counter 1 (2001) (Jake Patterson) (PD)\"},DB1753CC702C18D3917EC7F3B0E8659F:{n:\"Frame Counter 2 (2001) (Jake Patterson) (PD)\"},\"8290DAEA8391F96D7C8E1482E184D19C\":{n:\"Frame Timed Sound Effects (Eckhard Stolberg)\"},\"442B7863683E5F084716FDA050474FEB\":{n:\"Frame Timed Sound Effects-EM (Eckhard Stolberg)\"},\"15DD21C2608E0D7D9F54C0D3F08CCA1F\":{n:\"Frankenstein's Monster (1983) (Data Age)\"},\"7D0B49EA4FE3A5F1E119A6D14843DB17\":{n:\"Frankenstein's Monster (1983) (Gameworld) (PAL)\"},\"8E0AB801B1705A740B476B7F588C6D16\":{n:\"Freeway (1981) (Activision)\"},\"69974DD5D6420B90898CDE50AEC5EF39\":{n:\"Freeway (1981) (Activision) (16K)\"},\"851CC1F3C64EAEDD10361EA26345ACEA\":{n:\"Freeway (1981) (Activision) (4K)\"},\"0F95264089C99FC2A839A19872552004\":{n:\"Freeway (1981) (Activision) (8K)\"},\"2EC6B045CFD7BC52D9CDFD1B1447D1E5\":{n:\"Freeway (1981) (Activision) (PAL)\"},E4AFE157C09962CF39CDB25845D83D47:{n:\"Freeway (1981) (Activision) (PAL) (4K)\"},EDDEF10FDC0029301064115AE0CD41D4:{n:\"Freeway (CCE)\"},\"28148A52B1955CE12C7A74D3A3E620A4\":{n:\"Freeway (CCE) (4K)\"},\"7D5C3B7B908752B98E30690E2A3322C2\":{n:\"Freeway (Dactari - Milmar)\"},B822FBA8B7C8A97EA4E92AEB2C455EF9:{n:\"Freeway (Dactari) (4K)\"},\"7B7B4AC05232490C28F9B680C72998F9\":{n:\"Freeway (Zellers)\"},\"914A8FEAF6D0A1BBED9EB61D33817679\":{n:\"Freeway Chicken (32 in 1) (1988) (Atari) (PAL)\"},B7B1D3CE07E75976C43A2DCA3866237E:{n:\"Freeway Chicken (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"481D20EC22E7A63E818D5EF9679D548B\":{n:\"Freeway Rabbit (32 in 1) (1988) (Atari) (PAL)\"},\"060C865C782DEBB047E6FD101C8923FC\":{n:\"Freeway Rabbit (32 in 1) (1988) (Atari) (PAL) (4K)\"},E80A4026D29777C3C7993FBFAEE8920F:{n:\"Frisco (Unknown)\"},\"056FF67DD9715FAFA91FB8B0DDCC4A46\":{n:\"Frisco (Unknown) (PAL) (Hack)\"},\"45A4F55BB9A5083D470AD479AFD8BCA2\":{n:\"Frog Demo (1983) (CommaVid)\"},F67181B3A01B9C9159840B15449B87B0:{n:\"Frog Pond (08-27-1982) (Atari) (Prototype)\"},\"5F73E7175474C1C22FB8030C3158E9B3\":{n:\"Frog Pond (1982) (Atari) (Prototype)\"},\"081E2C114C9C20B61ACF25FC95C71BF4\":{n:\"Frogger (1982) (Parker Bros)\"},\"02CED7EA2B7CB509748DB6BFA227EBEC\":{n:\"Frogger (1982) (Parker Bros) (PAL)\"},\"27C6A2CA16AD7D814626CEEA62FA8FB4\":{n:\"Frogger II (1984) (Parker Bros)\",c:1},FB91DFC36CDDAA54B09924AE8FD96199:{n:\"Frogger II (1984) (Parker Bros) (PAL)\",c:1},DCC2956C7A39FDBF1E861FC5C595DA0D:{n:\"Frogs and Flies (1982) (M Network)\"},\"1B8C3C0BFB815B2A1010BBA95998B66E\":{n:\"Frogs and Flies (1989) (Telegames) (PAL)\"},\"4A196713A21EF07A3F74CF51784C6B12\":{n:\"Frogs and Flies (Jone Yuan) (Hack)\"},E556E07CC06C803F2955986F53EF63ED:{n:\"Front Line (1984) (Coleco)\"},\"4CA73EB959299471788F0B685C3BA0B5\":{n:\"Frostbite (1983) (Activision)\"},\"5A93265095146458DF2BAF2162014889\":{n:\"Frostbite (1983) (Activision) (PAL)\"},\"70CE036E59BE92821C4C7FD735EC6F68\":{n:\"Frostbite (1983) (Activision) (PAL) (16K)\"},\"9831EFC7F4CB8FFB4DF0082BAB2F07A3\":{n:\"Frostbite (1983) (Activision) (PAL) (8K)\"},F4469178CD8998CB437FA110A228EACA:{n:\"Frostbite (1983) (Digitel)\"},C225379E7C4FB6F886EF9C8C522275B4:{n:\"Frostbite (1983) (Video Mania)\"},C6AE21CACEAAD734987CB24243793BD5:{n:\"Frostbite (CCE)\"},ADB79F9AC1A633CDD44954E2EAC14774:{n:\"Frostbite (Digivision)\"},\"6B71F20C857574B732E7A8E840BD3CB2\":{n:\"Frostbite (Unknown) (PAL)\"},\"6A9B30CA46B0DBA9E719F4CBD340E01C\":{n:\"Frostbite (Unknown) (PAL) (Hack)\"},\"415C11FCAC66BBD2ACE2096687774B5A\":{\nn:\"Fu Kung! (V0.00) (07-01-2003) (AD)\"},EB3D680699F8762F71F38E28E321234D:{n:\"Fu Kung! (V0.01) (08-01-2003) (AD)\"},\"9F2D58DCE1B81C6BA201ED103507C025\":{n:\"Fu Kung! (V0.02) (2003) (AD)\"},DFF33523CCD2FDC8912E84CAB8E0D982:{n:\"Fu Kung! (V0.03) (10-01-2003) (AD)\"},AB2EA35DCC1098C87455BB8210B018CF:{n:\"Fu Kung! (V0.04 Single Line Resolution) (10-01-2003) (AD)\"},\"81341F00B61AB37D19D1529F483D496D\":{n:\"Fu Kung! (V0.04) (10-01-2003) (AD)\"},\"7ED7130A6E4020161836414332B11983\":{n:\"Fu Kung! (V0.05 Cuttle Card Compatible) (13-01-2003) (AD)\"},\"61621A556AD3228F0234F5FEB3AB135C\":{n:\"Fu Kung! (V0.05 Cuttle Card Compattle Revision) (14-01-2003) (AD)\"},D026716B3C5BE2C951CC4C064317C524:{n:\"Fu Kung! (V0.06) (14-01-2003) (AD)\"},CBAD928E10AEEE848786CC55394FB692:{n:\"Fu Kung! (V0.06a Cuttle Cart Compatible) (15-01-2003) (AD)\"},\"78C2DE58E42CD1FAAC2EA7DF783EAEB3\":{n:\"Fu Kung! (V0.07) (25-01-2003) (AD)\"},\"9ECA521DB1959156A115DEE85A405194\":{n:\"Fu Kung! (V0.08) (2003) (AD)\"},\"58D331C23297ED98663D11B869636F16\":{n:\"Fu Kung! (V0.09) (26-01-2003) (AD)\"},\"2228C67D25E507603D4873D3934F0757\":{n:\"Fu Kung! (V0.10) (28-01-2003) (AD)\"},\"52E9DB3FE8B5D336843ACAC234AAEA79\":{n:\"Fu Kung! (V0.11) (28-01-2003) (AD)\"},D632B74FEA533D593AF82CF16E7C5E4A:{n:\"Fu Kung! (V0.13) (01-02-2003) (AD)\"},\"6076B187A5D8EA7A2A05111C19B5D5CD\":{n:\"Fu Kung! (V0.14) (01-02-2003) (AD)\"},F80CF77164079D774B9B0FAE33DFFCA9:{n:\"Fu Kung! (V0.15) (Negative Version) (05-02-2003) (AD)\"},F1BECA5A198CF08190487E5C27B8E540:{n:\"Fu Kung! (V0.16) (2003) (AD)\"},\"2240655247D6DE1C585564004A853AB7\":{n:\"Fu Kung! (V0.17) (07-02-2003) (AD)\"},\"0DE53160A8B54C3AA5AED8D68C970B62\":{n:\"Fuchs & Schweinchen Schlau (1983) (Quelle) (PAL)\"},\"456453A54CA65191781AEF316343AE00\":{n:\"Full Screen Bitmap (3-D Green) (PD)\"},C3F53993ADE534B0982CA3A286C85BB5:{n:\"Full Screen Bitmap Drawing System (12-02-2003) (AD)\"},\"819AEEB9A2E11DEB54E6DE334F843894\":{n:\"Fun with Numbers (1980) (Atari)\"},DFC03EF371CF5163F54C50D8EE73C8CF:{n:\"Fun with Numbers (1980) (Atari) (4K)\"},\"5F46D1FF6D7CDEB4B09C39D04DFD50A1\":{n:\"Fun with Numbers (1980) (Atari) (PAL)\"},D0CB28E1B7BD6C7F683A0917B59F707E:{n:\"Fun with Numbers (1980) (Atari) (PAL) (4K)\"},D816FEA559B47F9A672604DF06F9D2E3:{n:\"Fun with Numbers (32 in 1) (1988) (Atari) (PAL)\"},\"08989FA4FF537F5DBD611AFF4019521A\":{n:\"Fun with Numbers (32 in 1) (1988) (Atari) (PAL) (4K)\"},D3BB42228A6CD452C111C1932503CC03:{n:\"Funky Fish (1983) (UA Limited) (Prototype)\",c:1},CD568D6ACB2F14477EBF7E59FB382292:{n:\"Fussball (Ariola) (PAL)\"},C1FDD44EFDA916414BE3527A47752C75:{n:\"G.I. Joe - Cobra Strike (1983) (Parker Bros)\",p:1},\"840A5A2EAEA24D95D289F514FD12F9BB\":{n:\"GBImprov (Hack)\"},A3B9D2BE822EAB07E7F4B10593FB5EAA:{n:\"GREGXM Demo (PD)\"},\"13A991BC9C2FF03753AEB322D3E3E2E5\":{n:\"Galactic (Funvision) (PAL)\"},C745487828A1A6A743488ECEBC55AD44:{n:\"Galactic (Rainbow Vision) (PAL)\"},EA7E25ADE3FE68F5B786EE0AA82B1FE5:{n:\"Galatic (208 in 1) (Unknown) (PAL)\"},\"590AC71FA5F71D3EB29C41023B09ADE9\":{n:\"Galaxian (01-05-1983) (Atari) (Prototype)\"},\"803393ED29A9E9346569DD1BF209907B\":{n:\"Galaxian (02-04-1983) (Atari) (Prototype)\"},\"211774F4C5739042618BE8FF67351177\":{n:\"Galaxian (1983) (Atari)\"},\"13A37CF8170A3A34CE311B89BDE82032\":{n:\"Galaxian (1983) (Atari) (PAL)\"},\"18DC28BC22402F21E1C9B81344B3B8C5\":{n:\"Galaxian (1983) (Atari) (PAL) [a1]\"},\"218B76F5A4142DC2EA9051A768583D70\":{n:\"Galaxian (1983) (Atari) (PAL) [a2]\"},D65028524761EF52FBBDEBAB46F79D0F:{n:\"Galaxian (CCE)\"},\"93C8D9D24F9C5F1F570694848D087DF7\":{n:\"Galaxian (Digivision)\"},\"579BAA6A4AA44F035D245908EA7A044D\":{n:\"Galaxian Enhanced Graphics (Jess Ragan) (Hack)\"},D6B8BEEB05E5B730084D4B8F381BBF8D:{n:\"Game Select (208 in 1) (Unknown) (PAL)\"},\"31F4692EE2CA07A7CE1F7A6A1DAB4AC9\":{n:\"Game of Concentration (1980) (Atari) (4K)\"},F539E32BF6CE39C8CA47CB0CDD2C5CB8:{n:\"GameLine Master Module ROM (1983) (Control Video)\"},DB971B6AFC9D243F614EBF380AF0AC60:{n:\"Gamma-Attack (1983) (Gammation)\"},A7523DB9A33E9417637BE0E71FA4377C:{n:\"Gangster (Ariola) (PAL)\"},\"20EDCC3AA6C189259FA7E2F044A99C49\":{n:\"Gangster Alley (1982) (Spectravision)\"},BAE66907C3200BC63592EFE5A9A69DBB:{n:\"Gangster Alley (1982) (Spectravision) (PAL)\"},DC13DF8420EC69841A7C51E41B9FBBA5:{n:\"Garfield (06-21-1984) (Atari) (Prototype)\"},E0EFF071F578ECF19EDC2AB276644E46:{n:\"Gas Gauge Demo (2001) (Joe Grand) (PD)\"},\"61EF8C2FC43BE9A04FE13FDB79FF2BD9\":{n:\"Gas Gauge Demo - Revisited (2001) (Joe Grand) (PD)\"},\"728152F5AE6FDD0D3A9B88709BEE6C7A\":{n:\"Gas Hog (1983) (Spectravideo)\"},\"5CBD7C31443FB9C308E9F0B54D94A395\":{n:\"Gas Hog (1983) (Spectravideo) [fixed]\"},E64A8008812327853877A37BEFEB6465:{n:\"Gauntlet (1983) (Answer Software)\"},E784A9D26707CFCD170A4C1C60422A72:{n:\"Gefecht im All (1983) (Quelle) (PAL)\"},\"7E464186BA384069582D9F0C141F7491\":{n:\"General Re-Treat (1982) (PlayAround) (PAL)\"},\"2BEE7F226D506C217163BAD4AB1768C0\":{n:\"Ghost Manor (1983) (Xonox)\"},\"0EECB5F58F55DE9DB4EEDB3A0F6B74A8\":{n:\"Ghost Manor (1983) (Xonox) (4K)\"},\"40D8ED6A5106245AA79F05642A961485\":{n:\"Ghost Manor (1983) (Xonox) (PAL)\"},\"3B10106836565E5DB28C7823C0898FBB\":{n:\"Ghost Manor (1983) (Xonox) (PAL) [a]\"},\"7B33407B2B198AF74906B936CE1EECBB\":{n:\"Ghostbuster 2 (King Atari)\",c:1},D36308387241E98F813646F346E7F9F7:{n:\"Ghostbuster 2 (King Atari) (PAL)\",c:1},E314B42761CD13C03DEF744B4AFC7B1B:{n:\"Ghostbusters (1985) (Activision)\"},F7D6592DCB773C81C278140ED4D01669:{n:\"Ghostbusters (1985) (Activision) (PAL)\"},\"721A5567F76856F6B50A6707AA8F8316\":{n:\"Ghostbusters (1985) (Activision) (PAL) [a]\"},C2B5C50CCB59816867036D7CF730BF75:{n:\"Ghostbusters II (1992) (Salu) (PAL)\",c:1},\"643E6451EB6B8AB793EB60BA9C02E000\":{n:\"Ghostbusters II (1992) (Salu) (PAL) [different tune]\",c:1},\"718EE85EA7EC27D5BEA60D11F6D40030\":{n:\"Ghostbusters II (1992) (Thomas Jentzsch)\",c:1},\"1C8C42D1AEE5010B30E7F1992D69216E\":{n:\"Gigolo (1982) (PlayAround)\",c:1},F303630A2D7316787AECD67FFF6B2E33:{n:\"Gingerbread Man (Fred Quimby)\"},\"37E828675D556775AE8285C0CAF7D11C\":{n:\"Gingerbread Man (Fred Quimby) (Genesis)\"},\"5E0C37F534AB5CCC4661768E2DDF0162\":{n:\"Glacier Patrol (1989) (Telegames)\"},\"2D9E5D8D083B6367EDA880E80DFDFAEB\":{n:\"Glib (1983) (Selchow & Righter)\"},A591B5E8587AAE0D984A0F6FE2CC7D1C:{n:\"Globe Trotter Demo (24-03-2003) (Weston)\"},\"0F6676B05621F80C670966E2995B227A\":{n:\"Globe Trotter Demo 1 (24-03-2003) (Weston)\"},\"103F1756D9DC0DD2B16B53AD0F0F1859\":{n:\"Go Go Home Monster (1983) (Quelle) (PAL)\"},\"4093382187F8387E6D011883E8EA519B\":{n:\"Go Go Home Monster (Unknown)\"},CFB83A3B0513ACAF8BE4CAE1512281DC:{n:\"Going-Up (1983) (Starpath) (Prototype)\"},\"2E663EAA0D6B723B645E643750B942FD\":{n:\"Golf (1980) (Atari)\"},F542B5D0193A3959B54F3C4C803BA242:{n:\"Golf (1980) (Atari) (4K)\"},\"9D522A3759AA855668E75962C84546F7\":{n:\"Golf (1980) (Atari) (PAL)\"},BB756AA98B847DDDC8FC170BC79F92B2:{n:\"Golf (208 in 1) (Unknown) (PAL)\"},\"95351B46FA9C45471D852D28B9B4E00B\":{n:\"Golf (32 in 1) (1988) (Atari) (PAL)\"},DB5073BD75EB05F7D62A7268396D1E77:{n:\"Golf (32 in 1) (1988) (Atari) (PAL) (4K)\"},C16C79AAD6272BAFFB8AAE9A7FFF0864:{n:\"Gopher (1982) (U.S. Games)\"},A56B642A3D3AB9BBEEE63CD44EB73216:{n:\"Gopher (1983) (Carrere Video) (PAL)\"},\"8F90590DBA143D783DF5A6CFF2000E4D\":{n:\"Gopher (208 in 1) (Unknown) (PAL)\"},\"06DB908011065E5EBB37F4E253C2A0B0\":{n:\"Gopher (Unknown) (PAL)\"},\"81B3BF17CF01039D311B4CD738AE608E\":{n:\"Gorf (1982) (CBS Electronics)\",c:1},\"3E03086DA53ECC29D855D8EDF10962CB\":{n:\"Gorf (1982) (CBS Electronics) (PAL)\",c:1},\"98BA601A60172CB46C5BF9A962FD5B1F\":{n:\"Gorilla Kong (Hack)\"},\"2903896D88A341511586D69FCFC20F7D\":{n:\"Grand Prix (1982) (Activision)\"},DE4436EAA41E5D7B7609512632B90078:{n:\"Grand Prix (1982) (Activision) (16K)\"},\"5E1B7A6078AF428EF056FE85A37A95CA\":{n:\"Grand Prix (1982) (Activision) (8K)\"},\"757F529026696E13838364DEA382A4ED\":{n:\"Grand Prix (1982) (Activision) (PAL)\"},\"41C4E3D45A06DF9D21B7AAE6AE7E9912\":{n:\"Grand Prix (1983) (CCE)\"},E5F84930AA468DB33C0D0F7B26DD8293:{n:\"Grand Prix (1983) (CCE) [a]\"},D5D2D44FB73785996CCC24AE3A0F5CEF:{n:\"Grand Prix (Robby)\"},\"0F738DC44437557624EB277ED7AD91C9\":{n:\"Grand Prix (Unknown) (PAL)\"},\n\"9E437229136F1C5E6EF4C5F36178ED18\":{n:\"Grand Prize (Funvision)\"},\"5A9685C4D51A6C1D6A9544946D9E8DC3\":{n:\"Grandma's Revenge (AtariAge)\"},\"4767356FA0ED3EBE21437B4473D4EE28\":{n:\"Gravitar (04-12-1983) (Atari) (Prototype)\"},\"8AC18076D01A6B63ACF6E2CAB4968940\":{n:\"Gravitar (1983) (Atari)\"},A81697B0C8BBC338AE4D0046EDE0646B:{n:\"Gravitar (CCE)\"},\"9245A84E9851565D565CB6C9FAC5802B\":{n:\"Great Escape (1983) (Bomb)\"},ED014BEEEB77DBB2BBCF9B5F6850B2F4:{n:\"Green Bar Text Demo (PD)\"},ABC64037CA5D5B04AE8A7EEDBCA3ED74:{n:\"Green and Yellow Number 1 Demo (PD)\",c:1},B41FDD4A522E1D5A2721840028684AC2:{n:\"Green and Yellow Number 1 Demo 2 (PD)\",c:1},\"42B5E3A35B032F033809AFB0EA28802D\":{n:\"Gremlins (03-12-1984) (Atari) (Prototype)\"},\"01CB3E8DFAB7203A9C62BA3B94B4E59F\":{n:\"Gremlins (1984) (Atari)\"},\"9962034EA7B3D4A905D0991804670087\":{n:\"Grid Demo (PD)\"},\"95A69CF8C08EF1522B050529464F0BCA\":{n:\"Grid Pattern Demo 1 (20-12-2002) (CT)\"},\"8D9A06101EBB0F147936356E645309B8\":{n:\"Grid Pattern Demo 2 (20-12-2002) (CT)\"},D65900FEFA7DC18AC3AD99C213E2FA4E:{n:\"Grid and Purple Dot Demo (PD)\"},EB46E99EC15858F8CD8C91CEF384CE09:{n:\"Ground Zero (1983) (Goliath) (PAL)\"},\"66B89BA44E7AE0B51F9EF000EBBA1EB7\":{n:\"Grover's Music Maker (01-18-1983) (Atari) (Prototype)\"},\"4AC9F40DDFCF194BD8732A75B3F2F214\":{n:\"Grover's Music Maker (12-29-1982) (Atari) (Prototype)\"},\"7AB2F190D4E59E8742E76A6E870B567E\":{n:\"Guardian (1982) (Apollo)\",p:1},\"6A07836C382195DD5305CE61D992AAA6\":{n:\"Guardian (1982) (Apollo) (Prototype)\",p:1},F750B5D613796963ACECAB1690F554AE:{n:\"Gunfight 2600 (MP)\"},\"18B28B386ABDADB3A700AC8FB68E639A\":{n:\"Gunfight 2600 (MP) (PAL)\"},\"6CBE945E16D9F827D0D295546AC11B22\":{n:\"Gunfight 2600 - AI (MP)\"},\"2ABC3D46B3F2140160759E2E10BC86D9\":{n:\"Gunfight 2600 - Beta Release! (2001) (MP)\"},\"9853089672116117258097DBBDB939B7\":{n:\"Gunfight 2600 - Cowboy Hair (2001) (MP)\"},A025A8F83A42A4D6D46C4887E799BFAC:{n:\"Gunfight 2600 - Descissions had to be made (2001) (MP)\"},\"25472DFDEEF6A42581A231D631D6B04D\":{n:\"Gunfight 2600 - Design thoughts (MP)\"},\"14A56B493A8D9D10E94A3E100362E3A2\":{n:\"Gunfight 2600 - Early Play-kernel (2001) (MP)\"},\"0FBA7D8C3520BDB681F75494E498EC36\":{n:\"Gunfight 2600 - Final Run (MP)\"},\"91A3749FF7B7E72B7FA09E05396A0E7B\":{n:\"Gunfight 2600 - Final Run Part 2 (2002) (MP)\"},\"29396DB58406084E416032C372734A3E\":{n:\"Gunfight 2600 - Fixed Beta Release! (2001) (MP)\"},\"862CF669CBCED78F9ED31A5D375B2EBE\":{n:\"Gunfight 2600 - Flicker acceptance (2001) (MP)\"},\"910DD9BF98CC5BC080943E5128B15BF5\":{n:\"Gunfight 2600 - Improved AI (MP)\"},C21450C21EFB7715746E9FA87AD6F145:{n:\"Gunfight 2600 - It could've been soooo cool, but... (2001) (MP)\"},D17A671029B1532B197DEFCA5F3649A7:{n:\"Gunfight 2600 - Limit broken again! (2001) (MP)\"},E6F49A1053C79211F82BE4D90DC9FE3D:{n:\"Gunfight 2600 - Little progress... (2001) (MP)\"},C67FF409F28F44883BD5251CEA79727D:{n:\"Gunfight 2600 - Music & Bugfixes 1 (2001) (MP)\"},\"7D93071B3E3616093A6B5A98B0315751\":{n:\"Gunfight 2600 - Music & Bugfixes 2 (2001) (MP)\"},BC703EA6AFB20BC089F04D8C9D79A2BD:{n:\"Gunfight 2600 - Not mergeable with Colbert wizardry... (2001) (MP)\"},\"111029770226B319524134193886A10E\":{n:\"Gunfight 2600 - One Limit Reached! (2001) (MP)\"},\"68C80E7E1D30DF98A0CF67ECBF39CC67\":{n:\"Gunfight 2600 - One Step Forward & Two Steps Back (2001) (MP)\"},E4A0B28BEFAAA2915DF1FA01238B1E29:{n:\"Gunfight 2600 - Red River (MP)\"},CFDB4D0427A1EA8085C6BC6EB90259D8:{n:\"Gunfight 2600 - Release Candidate (2001) (MP)\"},\"83D15FB9843D9F84AA3710538403F434\":{n:\"Gunfight 2600 - Release Candidate (2001) (MP) (PAL)\"},DFCDD6F593BB7B05DBC2E8E1FC6EE0DE:{n:\"Gunfight 2600 - Scenarios complete (MP)\"},D245E2F27C84016041E9496B66B722FE:{n:\"Gunfight 2600 - The Final Kernel (MP)\"},\"991D57BBCD529AD62925098E0AEC1241\":{n:\"Gunfight 2600 - The Final Kernel (MP) [a1]\"},A4F1CEA2C8479284E2A2292F8D51B5FA:{n:\"Gunfight 2600 - The Final Kernel Part 2 (MP)\"},D81BB6965E6C99B3BE99FFD8978740E4:{n:\"Gunfight 2600 - The Final Kernel Part 3 (MP)\"},A15B5831A1FAB52E4C416068C85EC011:{n:\"Gunfight 2600 - The Good, The Bad, The Ugly (2001) (MP)\"},\"24AD538291EB5F5CAC4B9998F3B851C3\":{n:\"Gunfight 2600 - This time it's your decission! (2001) (MP)\"},\"801BA40F3290FC413E8C816C467C765C\":{n:\"Gunfight 2600 - Westward Ho! (2001) (MP)\"},\"24759BE31E8FE55D2829FD86BDF3181F\":{n:\"Gunfight 2600 - Worst Nightmare... (2001) (MP)\"},B311AB95E85BC0162308390728A7361D:{n:\"Gyruss (1984) (Parker Bros)\",c:1},E600F5E98A20FAFA47676198EFE6834D:{n:\"Gyruss (1984) (Parker Bros) (PAL)\",c:1},FCA4A5BE1251927027F2C24774A02160:{n:\"H.E.R.O. (1984) (Activision)\"},D9B49F0678776E04916FA5478685A819:{n:\"H.E.R.O. (1984) (Activision) (PAL)\"},\"48BCF2C5A8C80F18B24C55DB96845472\":{n:\"H.E.R.O. (1984) (Activision) (PAL) (16K)\"},\"467340A18158649AA5E02A4372DCFCCD\":{n:\"H.E.R.O. (1984) (Activision) (PAL) [a1]\"},\"66B92EDE655B73B402ECD1F4D8CD9C50\":{n:\"H.E.R.O. (1984) (Activision) (PAL) [a2]\"},\"1D284D6A3F850BAFB25635A12B316F3D\":{n:\"H.E.R.O. (CCE)\"},\"769DDC995DBB9EDB8167EFCEA9F34A7C\":{n:\"H.E.R.O. (Genesis)\"},BDF1996E2DD64BAF8EFF5511811CA6CA:{n:\"H.E.R.O. (Tron)\"},\"98E7CAAAB8EC237558378D2776C66616\":{n:\"HMOVE Test (Bradford W. Mott) (1998) (PD)\"},\"30516CFBAA1BC3B5335EE53AD811F17A\":{n:\"Halloween (1983) (Wizard Video Games)\"},C450A285DAA7A3B65188C2C3CF04FB3E:{n:\"Halloween (1983) (Wizard Video Games) [a]\"},\"54DA3B0B3F43F5B37911C135B9432B49\":{n:\"Halloween III Revision (Hack)\",p:1},\"4AFA7F377EAE1CAFB4265C68F73F2718\":{n:\"Halo 2600 (2010) (Ed Fries)\"},F16C709DF0A6C52F47FF52B9D95B7D8D:{n:\"Hangman (1978) (Atari)\"},\"378C118B3BDA502C73E76190CA089EEF\":{n:\"Hangman (1978) (Atari) (PAL)\"},C3E4AA718F46291311F1CCE53E6CCD79:{n:\"Hangman Ghost 4letter (Hack)\"},\"99A24D7BB31D49B720B422550B32C35F\":{n:\"Hangman Ghost Biglist1 (Hack)\"},\"6AA66E9C3EEA76A0C40EF05513497C40\":{n:\"Hangman Ghost Biglist2 (Hack)\"},A62E3E19280FF958407E05CA0A2D5EC7:{n:\"Hangman Ghost Biglist3 (Hack)\"},\"4E37992A37EA36489283F7EB90913BBC\":{n:\"Hangman Ghost Halloween (Kris) (Hack)\"},\"8E822B39A71C84AC875F0107FB61D6F0\":{n:\"Hangman Ghost Original Words (Hack)\"},\"9671B658286E276CC4A3D02AA25931D2\":{n:\"Hangman Ghost Wordlist (Hack)\"},\"502044B1AC111B394E6FBB0D821FCA41\":{n:\"Hangman Invader 4letter (Hack)\"},\"2C9FADD510509CC7F28F1CCBA931855F\":{n:\"Hangman Invader Biglist1 (Hack)\"},\"6C658B52D03E01828B9D2D4718A998AC\":{n:\"Hangman Invader Biglist2 (Hack)\"},\"8A9D953AC3DB52A313A90D6A9B139C76\":{n:\"Hangman Invader Biglist3 (Hack)\"},E8F7679359C4F532F5D5E93AF7D8A985:{n:\"Hangman Invader Original Words (Hack)\"},\"8A42E2C7266439D8997A55D0124C912C\":{n:\"Hangman Invader Wordlist (Hack)\"},\"898748D5EAAC3164B0391A64AE1E0E32\":{n:\"Hangman Man 4letter (Hack)\"},\"135708B9A7DD20576C1B66AB2A41860D\":{n:\"Hangman Man Biglist1 (Hack)\"},\"1F562B89D081E36D58E6FC943512EC05\":{n:\"Hangman Man Biglist2 (Hack)\"},\"5CE98F22ADE915108860424D8DDE0D35\":{n:\"Hangman Man Biglist3 (Hack)\"},\"227532D82505C3C185A878273C285D5F\":{n:\"Hangman Man Original Words (Hack)\"},\"4CA90BA45ECED6F5AD560EA8938641B2\":{n:\"Hangman Man Wordlist (Hack)\"},\"67CF913D1DF0BF2D7AE668060D0B6694\":{n:\"Hangman Monkey 4letter (Hack)\"},\"1738B2E3F25AB3EEF3CECB95E1D0D957\":{n:\"Hangman Monkey Biglist1 (Hack)\"},\"205070B6A0D454961DD9196A8E81D877\":{n:\"Hangman Monkey Biglist2 (Hack)\"},DAC38B4DD3DA73BB7B2E9D70C61D2B7C:{n:\"Hangman Monkey Biglist3 (Hack)\"},\"30C92C685224DC7A72B9BBE5EB62D004\":{n:\"Hangman Monkey Original Words (Hack)\"},\"7860716FA5DBC0FFFAB93FB9A4CB4132\":{n:\"Hangman Monkey Wordlist (Hack)\"},CD032AB6764B55438A7B0BFB5E78595A:{n:\"Hangman Pac-Man 4letter (Hack)\"},\"0A1B98937911D621B004B1617446D124\":{n:\"Hangman Pac-Man Biglist1 (Hack)\"},DCA941DAB5C6F859B71883B13ADE9744:{n:\"Hangman Pac-Man Biglist2 (Hack)\"},\"662ECA7E3D89175BA0802E8E3425DEDB\":{n:\"Hangman Pac-Man Biglist3 (Hack)\"},\"9BD4E0D5F28BA6DA417C26649171F8E4\":{n:\"Hangman Pac-Man Original Words (Hack)\"},\"79D4AF56036EC28F298CAD964A2E2494\":{n:\"Hangman Pac-Man Wordlist (Hack)\"},BE1922BD8E09D74DA471287E1E968653:{n:\"Hangman Pacman Demo (Cropsy) (Hack)\"},A8435EC570141DE5D833C4ABEC499E55:{n:\"Happy Birthday Demo (2001) (Dennis Debro) (PD)\"},B9232C1DE494875EFE1858FC8390616D:{\nn:\"Harbor Escape (1983) (Panda)\"},A34560841E0878C7B14CC65F79F6967D:{n:\"Harem (1982) (Multivision)\"},F0A6E99F5875891246C3DBECBF2D2CEA:{n:\"Haunted House (1982) (Atari)\"},\"09E1ECF9BD2A3030D5670DBA7A65E78D\":{n:\"Haunted House (1982) (Atari) (PAL)\"},\"06742CF522F23797157F215A1DC8A1A9\":{n:\"Healthbars (PD)\"},\"260C787E8925BF3649C8AEAE5B97DCC0\":{n:\"Hell Driver (Thomas Jentzsch)\"},E77F332B71F13884C84771E7A121182D:{n:\"Hey! Stop! (Jone Yuan)\"},FE9AE625D924B54C9F8A14AC9A0F6C6D:{n:\"High Bid! (BG Dodson) (Hack)\"},\"8FE00172E7FFF4C1878DABCF11BB8DCE\":{n:\"Hili Ball (1983) (Quelle) (PAL)\",c:1},CD34B3B3EF9E485201E841BA71BEB253:{n:\"Hit HMOVE At Various Cycles After WSYNC Test (Bradford W. Mott) (1998) (PD)\"},\"3D48B8B586A09BDBF49F1A016BF4D29A\":{n:\"Hole Hunter (Video Game Cartridge)\"},C52D9BBDC5530E1EF8E8BA7BE692B01E:{n:\"Holey Moley (02-29-1984) (Atari) (Prototype)\"},\"0BFABF1E98BDB180643F35F2165995D0\":{n:\"Home Run (1978) (Atari)\"},\"9F901509F0474BF9760E6EBD80E629CD\":{n:\"Home Run (1978) (Atari) (4K)\"},\"328949872E454181223A80389D03C122\":{n:\"Home Run (Unknown) (PAL)\"},\"24B5F4BBDB853ECA38EA0CAE2DFE73A1\":{n:\"Home Run (Unknown) (PAL) (4K)\"},CA7AAEBD861A9EF47967D31C5A6C4555:{n:\"Homerun (32 in 1) (1988) (Atari) (PAL)\"},\"63811ED69BDBC35C69D8AA7806C3D6E9\":{n:\"Homerun (32 in 1) (1988) (Atari) (PAL) (4K)\"},F7A651972D78F9BA485B14690452D4BE:{n:\"Homestar Runner Demo #2 (2004-03-29)\",c:1},\"6B7A56B6AC2CA4BF9254474BF6ED7D80\":{n:\"Horizonal Color Bars Demo (PD)\"},\"68449E4AABA677ABCD7CDE4264E02168\":{n:\"Horizonal Color Bars Demo 2 (PD)\"},\"70A8480CFAF08776E5420365732159D2\":{n:\"Horizontally Scrolling Playfield Thing (Rob Kudla) (PD)\"},\"78821EF76EBC3934850D1BC1B9E4F4B0\":{n:\"Hot Action Pak - Ghostbusters, Tennis, Plaque Attack (1990) (HES) (PAL)\"},CCD6CE508EEE4B3FCA67212833EDCD85:{n:\"Hot Wave (Double-Game Package) (1983) (Quelle) (PAL)\"},\"2DBC92688F9BA92A7E086D62BE9DF79D\":{n:\"How to Draw a Playfield (1997) (Jim Crawford) (PD)\"},D6D5DD8FD322D3CF874E651E7B6C1657:{n:\"How to Draw a Playfield (1997) (Nick Bensema) (PD)\"},\"9E904E2EAA471C050C491289B8B80F60\":{n:\"How to Draw a Playfield II (1997) (Erik Mooney) (PD)\"},\"4A45C6D75B1BA131F94A9C13194D8E46\":{n:\"How to Draw a Playfield II (Joystick Hack) (1997) (Eric Bacher) (PD)\"},\"7DC03A1F56D0E6A8AAE3E3E50D654A08\":{n:\"Hozer Video Demo (PD)\"},\"11330EAA5DD2629052FAC37CFE1A0B7D\":{n:\"Human Cannonball (128-in-1 Junior Console) (PAL)\"},C6C63DA3BC2E47291F63280E057061D0:{n:\"Human Cannonball (128-in-1 Junior Console) (PAL) (4K)\"},\"7972E5101FA548B952D852DB24AD6060\":{n:\"Human Cannonball (1979) (Atari)\"},FFE51989BA6DA2C6AE5A12D277862E16:{n:\"Human Cannonball (1979) (Atari) (4K)\"},\"10A3CD14E5DCFDDE6FF216A14CE7B7DD\":{n:\"Human Cannonball (1979) (Atari) (PAL)\"},AD42E3CA3144E2159E26BE123471BFFC:{n:\"Human Cannonball (32 in 1) (1988) (Atari) (PAL)\"},\"4BDAE9246D6EE258C26665512C1C8DE3\":{n:\"Human Cannonball (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"42DCC02777B0BCFACD85AEB61D33558A\":{n:\"Human Cannonball (Unknown) (PAL) (4K)\"},\"5BE03A1FE7B2C114725150BE04B38704\":{n:\"Hunt & Score (1978) (Atari) (PAL)\"},B26506FBF411009E5E3F7365F442960E:{n:\"Hunt & Score (1978) (Atari) (PAL) (4K)\"},\"102672BBD7E25CD79F4384DD7214C32B\":{n:\"Hunt & Score - Memory Match (1978) (Atari)\"},F4C2E50B01DFF99BDDBE037B3489511C:{n:\"Hypnotic (V0.04) (2001) (Inkling) (PD)\"},\"7C9B3B8B25ACF2FE3B8DA834F69629C6\":{n:\"I Robot (1984) (Atari) (Prototype) [!]\"},F6A282374441012B01714E19699FC62A:{n:\"I Want My Mommy (1983) (ZiMAG)\",c:1},DC33479D66615A3B09670775DE4C2A38:{n:\"I.Q. Memory Teaser (Suntek) (PAL)\"},\"2016726DB38AD6A68B4C48BA6FE51557\":{n:\"INV 2 (Piero Cavina, Erik Mooney)\"},\"9EA8ED9DEC03082973244A080941E58A\":{n:\"INV+\"},AB301D3D7F2F4FE3FDD8A3540B7A74F5:{n:\"IQ 180 (Jone Yuan)\"},\"4B9581C3100A1EF05EAC1535D25385AA\":{n:\"IQ 180 (Unknown)\"},A4C08C4994EB9D24FB78BE1793E82E26:{n:\"Ice Hockey (1981) (Activision)\"},\"5BCC83677D68F7EF74C1B4A0697BA2A8\":{n:\"Ice Hockey (1981) (Activision) (16K)\"},\"3EB21313EA5D5764C5ED9160A5A55A83\":{n:\"Ice Hockey (1981) (Activision) (8K)\"},AC9ADBD6DE786A242E19D4BEC527982B:{n:\"Ice Hockey (1981) (Activision) (PAL)\"},C7D5819B26B480A49EB26AEB63CC831E:{n:\"Ice Hockey (4 Game in One Light Green) (1983) (BitCorp) (PAL)\"},\"47711C44723DA5D67047990157DCB5DD\":{n:\"Ice Hockey (CCE)\"},C3AEB796FDAF9429E8CD6AF6346F337E:{n:\"If It's Not One Thing It's Another (1997) (Chris Cracknell)\"},\"9A21FBA9EE9794E0FADD7C7EB6BE4E12\":{n:\"Ikari Warriors (1989) (Atari)\"},\"321C3451129357AF42A375D12AFD4450\":{n:\"Ikari Warriors (1989) (Atari) (PAL)\"},\"9813B9E4B8A6FD919C86A40C6BDA8C93\":{n:\"Ikari Warriors (1989) (Atari) (PAL) [a]\"},\"3F251C50AA7237E61A38AB42315EBED4\":{n:\"Ikari Warriors (1990) (Thomas Jentzsch)\"},\"95E542A7467C94B1E4AB24A3EBE907F1\":{n:\"Im Schutz der Drachen (1983) (Quelle) (PAL)\",c:1},C4BC8C2E130D76346EBF8EB544991B46:{n:\"Imagic Selector ROM (1982) (Imagic)\"},\"9B21D8FC78CC4308990D99A4D906EC52\":{n:\"Immies & Aggies (1983) (CCE)\"},\"75A303FD46AD12457ED8E853016815A0\":{n:\"Immies & Aggies (1983) (ZiMAG) (Prototype)\"},\"47ABFB993FF14F502F88CF988092E055\":{n:\"Inca Gold (Zellers)\"},F137211537438B1FCE3D811BAEF25457:{n:\"Incoming (02-10-2002) (Ben Larson) (PD)\"},FE870018332A0221EB59FB18B0C6BCCC:{n:\"Incoming (08-11-2002) (Ben Larson) (PD)\"},\"86B4AA76BBEB70E1A4F9211A9880BA8E\":{n:\"Incoming (1 Player Version) (05-11-2002) (Ben Larson)\"},\"3556E125681AEA864E17B09F3F3B2A75\":{n:\"Incoming (2 Player Demo) (PD)\"},\"15BCD74F2F1F2A63E1AA93E90D2C0555\":{n:\"Incoming (22-08-2002) (Ben Larson) (PD)\"},\"03B1051C9374678363C899914412CFC5\":{n:\"Incoming (30-10-2002) (Ben Larson) (PD)\"},\"76C88341017EAE660EFC6E49C4B6AB40\":{n:\"Indiana Pitfall (Hack)\"},C5301F549D0722049BB0ADD6B10D1E09:{n:\"Indy 500 (1977) (Atari)\"},\"08188785E2B8300983529946DBEFF4D2\":{n:\"Indy 500 (1977) (Atari) (4K)\"},DAC762E4D01D445BDEF20B7771F6570E:{n:\"Indy 500 (1977) (Atari) (4K) [a]\"},\"81591A221419024060B890665BEB0FB8\":{n:\"Indy 500 (1977) (Atari) (PAL)\"},\"63166867F75869A3592B7A94EA62D147\":{n:\"Indy 500 (Hack) [a1]\"},\"30E012E8D50330C8972F126B8E913BC4\":{n:\"Indy 500 (Hack) [a2]\"},\"4F781F0476493C50DC578336F1132A67\":{n:\"Indy 500 (Unknown) (PAL) (4K)\"},\"0C7BD935D9A7F2522155E48315F44FA0\":{n:\"Infernal Tower (1983) (Carrere Video) (PAL)\",c:1},AFE88AAE81D99E0947C0CFB687B16251:{n:\"Infiltrate (1981) (Apollo)\",c:1},\"3B69F8929373598E1752F43F8DA61AA4\":{n:\"Infiltrate (1981) (Apollo) (PAL)\",c:1},FB5C8AF97BD8FFE88323656F462645A7:{n:\"Interlace Demo (Glenn Saunders)\",c:1},\"463E66AD98806A49106CFFA49C08E2ED\":{n:\"Interlace Game Demo (01-09-2002) (Billy Eno)\"},\"91FDB6541F70C40B16AABF8308123BE8\":{n:\"Interlacing Game (19-08-2002) (Billy Eno)\"},\"888DEBB162D7D1AE71025B4AB794257F\":{n:\"Interleaved ChronoColour - Nude Art (17-04-2003) (AD)\"},A25BB76E9E773117E567FD4300B1BB23:{n:\"Interleaved ChronoColour Demo (NTSC) (05-03-2003) (AD)\"},\"3B097A7ED5BD2A84DC3D3ED361E9C31C\":{n:\"Interleaved ChronoColour Demo (PAL) (05-03-2003) (AD)\"},FB0E84CEE4C108D24253BCB7E382CFFD:{n:\"Interleaved ChronoColour Demo (SECAM) (05-03-2003) (AD)\"},B4030C38A720DD84B84178B6CE1FC749:{n:\"International Soccer (1982) (M Network)\"},\"29630A20D356FB58685B150BFA8F00C3\":{n:\"International Soccer (1982) (Mattel) [a]\"},CE904C0AE58D36D085CD506989116B0B:{n:\"International Soccer (1989) (Telegames) (PAL)\"},A0185C06297B2818F786D11A3F9E42C3:{n:\"International Soccer (Unknown) (PAL)\"},ADB770FF70E9ADF08BBB907A7ECCD240:{n:\"Inv Demo 3 (2001) (Erik Mooney) (PD)\"},E0CF2DCC4C1348C468F5BB1E421C9164:{n:\"Invader Sprites in a Line Demo (PD)\"},\"425EE444A41D218598893D6B6E03431A\":{n:\"Invaders Demo (2001) (TJ)\"},\"46C43FDCBCE8FDE3A91EBEAFC05B7CBD\":{n:\"Invaders Demo (PAL) (2001) (Eckhard Stolberg)\"},CD139AE6D09F3665AD09EB79DA3F9E49:{n:\"Invaders by Erik Mooney (4-24-97) (PD)\"},\"8874B68751FD2BA6D3306A263AE57A7D\":{n:\"Invaders by Erik Mooney (Alpha 1) (PD)\"},\"6D475019EA30D0B29F695E9DCFD8F730\":{n:\"Invaders by Erik Mooney (Alpha 2) (PD)\"},\"62992392EA651A16AA724A92E4596ED6\":{n:\"Invaders by Erik Mooney (Beta) (PD)\"},\"4868A81E1B6031ED66ECD60547E6EC85\":{n:\"Invaders by Erik Mooney (V2.1) (1-3-98) (PD)\"},\"80CEC82239913CB8C4016EB13749DE44\":{\nn:\"Invaders from Space by David Marli (Space Invaders Hack)\"},\"850FFD5849C911946B24544EA1E60496\":{n:\"Invasion (07-10-2002) (CT)\"},\"273CE50DB5A0D6DA7EA827A54F44DEE9\":{n:\"Island Flyer Demo (PD)\"},C2778507B83D9540E9BE5713758FF945:{n:\"Island Flyer Demo 2 (PD)\"},\"2F0546C4D238551C7D64D884B618100C\":{n:\"Ixion (1984) (Sega) (Prototype)\"},\"9C729017DD2F9CCBADCB511187F80E6B\":{n:\"J-Pac (Hack)\"},A5262FE6D01D6A1253692682A47F79DD:{n:\"JKH Text Scrolling Demo (PD)\"},CE243747BF34A2DE366F846B3F4CA772:{n:\"Jacky Jump (1983) (Home Vision) (PAL)\"},\"98EA10C47C13F1B3306C7B13DB304865\":{n:\"Jam Demo 1 (PD)\"},\"60D304582D33E2957B73EB300A7495BB\":{n:\"Jam Demo 2 (PD)\"},E51030251E440CFFAAB1AC63438B44AE:{n:\"James Bond 007 (1983) (Parker Bros)\",c:1},\"04DFB4ACAC1D0909E4C360FD2AC04480\":{n:\"Jammed (2001) (XYPE) (NTSC)\"},BA317F83CDFCD58CBC65AAC1CCB87BC5:{n:\"Jammed (2001) (XYPE) [a1]\"},\"911D385EE0805FF5B8F96C5A63DA7DE5\":{n:\"Jammed (V0.1) (Demo) (2001) (TJ)\"},\"15B498199ED0ED28057BF0DBDCE9B8D8\":{n:\"Jammed (V0.2) (Demo) (2001) (TJ)\"},EF5C02C95A1E7ED24F24193935755CD3:{n:\"Jammed Demo (1999) (Hozer Video Games)\"},\"58A82E1DA64A692FD727C25FAEF2ECC9\":{n:\"Jaw Breaker (1983) (CCE)\"},A406D2F6D84E61D842F4CB13B2B1CFA7:{n:\"Jawbreaker (1982) (Tigervision) (PAL)\"},\"97327D6962F8C64E6F926F79CD01C6B9\":{n:\"Jawbreaker (Unknown) (PAL)\"},\"8F33BCE5BA1053DCF4CEA9C1C69981E4\":{n:\"Jawbreaker (Unknown) (PAL) [a]\"},EB4252FAFF7A4F2BA5284A98B8F78D1A:{n:\"John K Harvey's Equalizer (NTSC) (PD)\",c:1},\"30997031B668E37168D4D0E299CCC46F\":{n:\"John K Harvey's Equalizer (PAL) (PD)\",c:1},\"4FC1B85B8074B4B9436D097900E34F29\":{n:\"John K. Harvey's Equalizer (John K. Harvey)\",c:1},E39843C56B7A4A08B18FA7949EC3EE6B:{n:\"Joshua Invaders (Hack)\"},\"718AE62C70AF4E5FD8E932FEE216948A\":{n:\"Journey Escape (1982) (Data Age)\",c:1},\"6B4EB5B3DF80995B8D9117CB7E9AEB3C\":{n:\"Journey Escape (1983) (Gameworld) (PAL)\",c:1},B2D3BCEE001CFF2BD2D8A21B2CB55109:{n:\"Joust (08-09-1983) (Atari) (Prototype)\",c:1},\"3276C777CBE97CDD2B4A63FFC16B7151\":{n:\"Joust (1983) (Atari)\",c:1},\"640A08E9CA019172D612DF22A9190AFB\":{n:\"Joust (1983) (Atari) (PAL)\",c:1},\"17EE158D15E4A34F57A837BC1CE2B0CE\":{n:\"Joust (1983) (Atari) (PAL) [a]\",c:1},\"22319BE7A640AF5314EC3C482CCEB676\":{n:\"Joustpong (05-07-2002) (Kirk Israel) (PD)\"},\"706E3CC4931F984447213B92D1417AFF\":{n:\"Joustpong (06-07-2002) (Kirk Israel) (PD)\"},\"94102FEBC53B4A78342D11B645342ED4\":{n:\"Joustpong (14-07-2002) (Kirk Israel) (PD)\"},\"814210C0E121F7DBC25661B93C06311C\":{n:\"Joustpong (16-09-2002) (Kirk Israel) (PD)\"},C225ABFB584960EFE1F359FC94B73379:{n:\"Joustpong (21-09-2002) (Kirk Israel) (PD)\"},\"36C29CEEE2C151B23A1AD7AA04BD529D\":{n:\"Jr. Pac-Man (1984) (Atari)\"},\"297C405AFD01F3AC48CDB67B00D273FE\":{n:\"Jr. Pac-Man (1984) (Atari) (PAL)\"},\"25265D0E7F88B3026003809F25EE025E\":{n:\"Jr. Pac-Man (1984) (Atari) [a]\"},\"161DED4A85D3C78E44FFFD40426F537F\":{n:\"JtzBall (Alpha) (TJ)\"},\"80E1410EC98089E0733CC09E584DBA4B\":{n:\"Jumping Jack (1983) (Dynamics) (PAL)\"},\"2CCCC079C15E9AF94246F867FFC7E9BF\":{n:\"Jungle Fever (1982) (PlayAround)\",c:1},FD16949913AAAB5BEAEFED73BF2CA67C:{n:\"Jungle Hunt (02-03-1983) (Atari) (Prototype)\"},\"0EC93F519BB769E0D9F80E61F6CC8023\":{n:\"Jungle Hunt (02-25-1983) (Atari) (Prototype)\"},\"2BB9F4686F7E08C5FCC69EC1A1C66FE7\":{n:\"Jungle Hunt (1983) (Atari)\"},\"9FC2D1627DCDD8925F4C042E38EB0BC9\":{n:\"Jungle Hunt (1983) (Atari) (PAL)\"},C47244F5557AE12C61E8E01C140E2173:{n:\"Jungle Hunt (1983) (Atari) (PAL) [a1]\"},\"2DCF9CE486393CD36CA0928CD53B96CB\":{n:\"Jungle Hunt (1983) (Atari) (PAL) [a2]\"},\"88A6C9C88CB329EE5FA7D168BD6C7C63\":{n:\"Jungle Hunt (1983) (CCE)\"},\"2496D404BFC561A40A80BEA6A69695C3\":{n:\"Jungle Hunt (1983) (CCE) [a]\"},\"000509D1ED2B8D30A9D94BE1B3B5FEBB\":{n:\"Jungle Jane (2003) (Greg Zumwalt) (Hack)\"},E1D5C8213E82820128FA9C4775F1E166:{n:\"Jungle King (2003) (Jess Ragan) (Hack)\"},\"65917AE29A8C9785BB1F2ACB0D6AAFD0\":{n:\"Junkosoft One Year Demo (1999) (PD)\"},\"90B647BFB6B18AF35FCF613573AD2EEC\":{n:\"Juno First (2009)\",c:1},FA98D48CD609C9BABC819E0A1BD8D598:{n:\"Juno First (2009) (PAL60)\",c:1},\"72A5B5052272AC785FA076709D16CEF4\":{n:\"KC Munckin (29-01-2003) (J. Parlee)\"},B9D1E3BE30B131324482345959AED5E5:{n:\"Kabobber (07-25-1983) (Activision) (Prototype)\"},\"5428CDFADA281C569C74C7308C7F2C26\":{n:\"Kaboom! (1981) (Activision)\",p:1},E14DC36B24FE22C04FA076E298F2E15F:{n:\"Kaboom! (1981) (Activision) (16K)\",p:1},AF6AB88D3D7C7417DB2B3B3C70B0DA0A:{n:\"Kaboom! (1981) (Activision) (4K)\",p:1},ED8F319E82D355832195EB7715644795:{n:\"Kaboom! (1981) (Activision) (8K)\",p:1},F9E99596345A84358BC5D1FBE877134B:{n:\"Kaboom! (1981) (Activision) (PAL)\",p:1},B09B79C9628878BE051E89F7F1E77378:{n:\"Kaboom! (1981) (Activision) (PAL) (4K)\",p:1},DBDAF82F4F0C415A94D1030271A9EF44:{n:\"Kaboom! (CCE)\",p:1},E49AC0EC879A0D7820BC2598FC2CFCD4:{n:\"Kaboom! (CCE) (4K)\",p:1},A93E8EA1F565C3C1E86B708CF0DC2FA9:{n:\"Kabul! (Jess Ragan) (Hack)\",p:1},\"7B43C32E3D4FF5932F39AFCB4C551627\":{n:\"Kamikaze Saucers (1983) (Syncro) (Prototype)\"},\"73AA02458B413091AC940C0489301710\":{n:\"Kampf dem Steinfresser (1983) (Quelle) (PAL)\"},\"4326EDB70FF20D0EE5BA58FA5CB09D60\":{n:\"Kangaroo (1983) (Atari)\"},\"6FE67F525C39200A798985E419431805\":{n:\"Kangaroo (1983) (Atari) (PAL)\"},DD08E18CFEE87A0E7FC19A684B36E124:{n:\"Kangaroo (1983) (Atari) (PAL) [a]\"},\"4431428A7500C96FC0E2798A5DBD36D6\":{n:\"Kangaroo (Genesis)\"},\"6D8A04EE15951480CB7C466E5951EEE0\":{n:\"Kanguru (1983) (Zirok)\"},\"10EAE73A07B3DA044B72473D8D366267\":{n:\"Karate (1982) (Funvision) (PAL)\"},CEDBD67D1FF321C996051EEC843F8716:{n:\"Karate (1982) (Ultravision)\"},DD17711A30AD60109C8BEACE0D4A76E8:{n:\"Karate (Unknown) (PAL)\"},\"65BA1A4C643D1AB44481BDDDEB403827\":{n:\"Katastrophen-Einsatz (1983) (Quelle) (PAL)\"},A1770EF47146AB7B12E2C4BECCD68806:{n:\"Kaystone Kapers (1983) (Digitel)\"},\"810D8952AF5A6036FCA8D0C4E1B23DB6\":{n:\"Keystone (Tiger Vision)\"},BE929419902E21BD7830A7A7D746195D:{n:\"Keystone Kapers (1983) (Activision)\"},\"6C1F3F2E359DBF55DF462CCBCDD2F6BF\":{n:\"Keystone Kapers (1983) (Activision) (PAL)\"},BEDFBDE71FB606601F936B5B057F26F7:{n:\"Keystone Kapers (1983) (Activision) (PAL) (16K)\"},\"91925ABCE3A29E33B6A8B81482F4F5AF\":{n:\"Keystone Kapers (1983) (Activision) (PAL) (8K)\"},\"1351C67B42770C1BD758C3E42F553FEA\":{n:\"Keystone Kapers (Digivision)\"},F5A3E051730D45FEA518F2E8B926565B:{n:\"Keystone Kapers (Robby)\"},E558BE88EEF569F33716E8E330D2F5BC:{n:\"Keystone Kapers (Shock Vision)\"},\"8DB152458ABAEF3CFA7A4E420DDBDA59\":{n:\"Keystone Kapers (Unknown)\"},\"05AEDF04803C43EB5E09DFD098D3FD01\":{n:\"Keystone Kapers (Unknown) (PAL)\"},\"4FBE0F10A6327A76F83F83958C3CBEFF\":{n:\"Keystone Kappers (1983) (CCE)\"},E28113D10C0C14CC3B5F430B0D142FCB:{n:\"Keystone Kappers (1983) (CCE) [a]\"},\"7187118674FF3C0BB932E049D9DBB379\":{n:\"Keystone Keypers (1983) (Zirok)\"},\"7A7F6AB9215A3A6B5940B8737F116359\":{n:\"Killer Satellites (1983) (Arcadia)\"},\"75E276BA12DC4504659481C31345703A\":{n:\"Killer Satellites (1983) (Arcadia) (PAL)\"},C0A68837C60E15D1FC5A40C9A62894BC:{n:\"Killer Satellites (1983) (Arcadia) (Prototype)\"},\"9C27EF3BD01C611CDB80182A59463A82\":{n:\"Killer Satellites (1983) (Arcadia) [a]\"},\"05CCF96247AF12EEF59698F1A060A54F\":{n:\"King Arthur (1983) (Quelle) (PAL)\"},E21EE3541EBD2C23E817FFB449939C37:{n:\"King Kong (1982) (Tigervision)\"},\"0DD4C69B5F9A7AE96A7A08329496779A\":{n:\"King Kong (1982) (Tigervision) (PAL)\"},\"0B1056F1091CFDC5EB0E2301F47AC6C3\":{n:\"King Kong (1982) (Tigervision) (PAL) [a]\"},E4D41F2D59A56A9D917038682B8E0B8C:{n:\"Kiss Meets Pacman (Cody Pittman) (Hack)\"},B5EFE0271D2214E4D5DC798881486884:{n:\"Klax (06-14-1990) (Atari) (Prototype)\"},\"2C29182EDF0965A7F56FE0897D2F84BA\":{n:\"Klax (08-18-1990) (Atari) (Prototype)\"},EED9EAF1A0B6A2B9BC4C8032CB43E3FB:{n:\"Klax (1990) (Atari) (PAL)\"},\"7FCD1766DE75C614A3CCC31B25DD5B7A\":{n:\"Knight on the Town (1982) (PlayAround)\",c:1},ED0451010D022B96A464FEBCBA70B9C4:{n:\"Knight on the Town (1982) (PlayAround) (PAL)\",c:1},A2EB84CFEED55ACD7FECE7FEFDC83FBB:{n:\"Kool Aid Man (Fixed) (15-11-2002) (CT)\"},\"2C8C11295D8613F875B7BCF5253AB9BB\":{n:\"Kool Aid Man (PAL Conversion) (16-11-2002) (Fabrizio Zavagli) (PAL60)\"},\"534E23210DD1993C828D944C6AC4D9FB\":{\nn:\"Kool-Aid Man (1983) (M Network)\"},\"071F84D10B343C7C05CE3E32AF631687\":{n:\"Krieg der Sterne (Ariola) (PAL)\"},CC724EBE74A109E39C0B2784DDC980CA:{n:\"Krull (05-27-1983) (Atari) (Prototype)\"},\"4BAADA22435320D185C95B7DD2BCDB24\":{n:\"Krull (1983) (Atari)\"},\"00DC28B881989C39A6CF87A892BD3C6B\":{n:\"Krull (CCE)\"},\"6805734A0B7BCC8925D9305B071BF147\":{n:\"Kung Fu (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\"},\"0B4E793C9425175498F5A65A3E960086\":{n:\"Kung Fu Master (CCE)\"},A9E3C23599C0D77151602F8E31DAF879:{n:\"Kung Fu Master (Genesis)\"},A8101CB667E50A46165C6FB48C608B6B:{n:\"Kung Fu Sprite Demo (PD)\",c:1},CE89529D6E98A13DDF3D84827BBDFE68:{n:\"Kung Fu Sprite Demo 2 (PD)\",c:1},\"3F58F972276D1E4E0E09582521ED7A5B\":{n:\"Kung Fu Superkicks (1989) (Telegames)\"},E5D72FF8BAB4450BE57785CC9E83F3C0:{n:\"Kung Fu Superkicks (1989) (Telegames) (PAL)\"},\"5B92A93B23523FF16E2789B820E2A4C5\":{n:\"Kung-Fu Master (1987) (Activision)\"},\"4474B3AD3BF6AABE719A2D7F1D1FB4CC\":{n:\"Kung-Fu Master (1987) (Activision) (PAL)\"},\"9945A22F60BBAF6D04A8D73B3CF3DB75\":{n:\"Kung-Fu Master (1987) (Activision) (PAL) [a]\"},\"7AD782952E5147B88B65A25CADCDF9E0\":{n:\"Kwibble (1983) (Imagic) (Prototype)\"},B86552198F52CFCE721BAFB496363099:{n:\"Kyphus (1982) (Apollo) (Prototype)\"},\"0FBF618BE43D4396856D4244126FE7DC\":{n:\"Labyrinth (1983) (Quelle) (PAL)\"},\"01F584BF67B0E464014A8C8B5EA470E3\":{n:\"Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia)\"},\"710497DF2CAAB69CDCC45E919C69E13F\":{n:\"Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia) [a]\"},ADFBD2E8A38F96E03751717F7422851D:{n:\"Lady Bug (NTSC)\",c:1},F1489E27A4539A0C6C8529262F9F7E18:{n:\"Lady Bug (PAL60)\",c:1},\"95A89D1BF767D7CC9D0D5093D579BA61\":{n:\"Lady in Wading (1982) (PlayAround)\",c:1},EC407A206B718A0A9F69B03E920A0185:{n:\"Landung in der Normandie (1983) (Quelle) (PAL)\"},B7345220A0C587F3B0C47AF33EBE533C:{n:\"Landungskommando (1983) (Quelle) (PAL)\"},\"85564DD0665AA0A1359037AEF1A48D58\":{n:\"Laser Base (1983) (ITT Family Games) (PAL) [a]\",c:1},\"8C103A79B007A2FD5AF602334937B4E1\":{n:\"Laser Base (Thomas Jentzsch)\"},D2C8E6AA8172B16C8AA9AAE739AC9C5E:{n:\"Laser Blast (08-08-1980) (Activision) (Prototype)\"},\"931B91A8EA2D39FE4DCA1A23832B591A\":{n:\"Laser Blast (1981) (Activision)\"},\"9EC1B259A1BCFFA63042A3C2B3B90F0A\":{n:\"Laser Blast (1981) (Activision) (16K)\"},D5E27051512C1E7445A9BF91501BDA09:{n:\"Laser Blast (1981) (Activision) (4K)\"},F6676E3FE901EB8515FC7AE310302C3C:{n:\"Laser Blast (1981) (Activision) (8K)\"},\"8A8E401369E2B63A13E18A4D685387C6\":{n:\"Laser Blast (1981) (Activision) (PAL)\"},F7F50D9C9D28BCC9F7D3075668B7AC89:{n:\"Laser Blast (1981) (Activision) (PAL) (4K)\"},\"0D1B3ABF681A2FC9A6AA31A9B0E8B445\":{n:\"Laser Blast (32 in 1) (1988) (Atari) (PAL)\"},\"303242C239474F2D7763B843DE58C1C3\":{n:\"Laser Blast (CCE)\"},F9420173EFCB4B9F2B01C2A7B595CCA7:{n:\"Laser Blast (CCE) (4K)\"},D078674AFDF24A4547B4B32890FDC614:{n:\"Laser Blast (Jone Yuan)\"},\"3F6938AA6CE66E6F42E582C1EB19B18C\":{n:\"Laser Blast (Jone Yuan) (4K) (Hack)\"},\"91B007F33F9B790BE64F57220EC52E80\":{n:\"Laser Blast (Jone Yuan) (Hack)\"},D339B95F273F8C3550DC4DAA67A4AA94:{n:\"Laser Blast (Unknown) (PAL) (4K)\"},\"0277C449FAE63F6F1C8F94DEDFCF0058\":{n:\"Laser Demo (B. Watson)\"},\"68760B82FC5DCF3FEDF84376A4944BF9\":{n:\"Laser Gate (1983) (CCE)\"},CD4DED1EDE63C4DD09F3DD01BDA7458C:{n:\"Laser Gate (Future Video Games) (PAL)\"},\"1FA58679D4A39052BD9DB059E8CDA4AD\":{n:\"Laser Gates (1983) (Imagic)\"},\"8E4CD60D93FCDE8065C1A2B972A26377\":{n:\"Laser Gates (1983) (Imagic) (PAL)\"},\"48287A9323A0AE6AB15E671AC2A87598\":{n:\"Laser Volley (Zellers)\"},\"1FAB68FD67FE5A86B2C0A9227A59BB95\":{n:\"Lasercade (1983) (20th Century Fox) (Prototype)\"},\"19098C46DA0640F2B5763167DEA6C716\":{n:\"Laseresal 2002 (NTSC) (PD)\"},F9655ED51462ECFC690C7B97CEC649F9:{n:\"Laseresal 2002 (PAL) (PD)\"},\"02DCBA28C614FEC7CA25955327128ABB\":{n:\"Laseresal 2002 (PAL) (PD) [a]\"},\"9C6FD6ED3599978AB7B6F900484B9BE6\":{n:\"Laseresal 2002 (PAL60) (PD)\"},FABCA526D57DE46768B392F758F1A008:{n:\"Laseresal 2600 (16-12-2001) (Andrew Wallace) (PD)\"},\"31E518DEBBA46DF6226B535FA8BD2543\":{n:\"Last Starfighter (1984) (Atari) (Prototype)\"},BB579404924C40CA378B4AFF6CCF302D:{n:\"Lightbulb Lightens, The (PD) (Non Functional)\"},D0CDAFCB000B9AE04AC465F17788AD11:{n:\"Lilly Adventure (1983) (Quelle) (PAL)\"},\"3947EB7305B0C904256CDBC5C5956C0F\":{n:\"Lilly Adventure (Jone Yuan)\"},\"64D43859258DC8CA54949E9FF4174202\":{n:\"Lilly Adventure (Thomas Jentzsch)\"},FE0B7F27E3AD50BBF9FF468EE56D553D:{n:\"Lines Demo (Eckhard Stolberg) (PAL) (PD)\"},\"86128001E69AB049937F265911CE7E8A\":{n:\"Lochjaw (1981) (Apollo)\"},\"71464C54DA46ADAE9447926FDBFC1ABE\":{n:\"Lock 'n' Chase (1982) (M Network)\"},\"493E90602A4434B117C91C95E73828D1\":{n:\"Lock 'n' Chase (1989) (Telegames) (PAL)\"},E88340F5BD2F03E2E9CE5ECFA9C644F5:{n:\"Lock 'n' Chase (Unknown) (PAL)\"},B4E2FD27D3180F0F4EB1065AFC0D7FC9:{n:\"London Blitz (1983) (Avalon Hill)\"},\"5BABE0CAD3EC99D76B0AA1D36A695D2F\":{n:\"Looping (1983) (Coleco) (Prototype)\"},E24D7D879281FFEC0641E9C3F52E505A:{n:\"Lord of the Rings (1983) (Parker Bros) (Prototype)\"},C6D7FE7A46DC46F962FE8413C6F53FC9:{n:\"Lord of the Rings (1983) (Parker Bros) (Prototype) [a]\"},DAEF7D8E5A09981C4AA81573D4DBB380:{n:\"Lord of the Rings (Adam Thornton) (Hack)\",c:1},E4B12DEAAFD1DBF5AC31AFE4B8E9C233:{n:\"Lord of the Rings (Adam Thornton) (Hack) [a]\",c:1},\"7C00E7A205D3FDA98EB20DA7C9C50A55\":{n:\"Lost Luggage (1981) (Apollo)\"},D0B26E908370683AD99BC6B52137A784:{n:\"Lost Luggage (1981) (Apollo) (PAL)\"},\"2D76C5D1AAD506442B9E9FB67765E051\":{n:\"Lost Luggage (1981) (Apollo) [no opening scene]\"},DF5CC5CCCDC140EB7107F5B8ADFACDA1:{n:\"Lumberman (Cracker Jack) (Hack)\"},\"97D0151BEB84ACBE82AA6DB18CD91B98\":{n:\"Lunar Attack (2002) (Steve Engelhardt) (Hack)\"},\"393E41CA8BDD35B52BF6256A968A9B89\":{n:\"M.A.D. (1982) (U.S. Games)\"},\"090F0A7EF8A3F885048D213FAA59B2F8\":{n:\"M.A.D. (1983) (Carrere Video) (PAL)\"},\"835759FF95C2CDC2324D7C1E7C5FA237\":{n:\"M.A.S.H (1983) (20th Century Fox)\"},\"43C6CFFFEDDAB6B3787357FED9D44529\":{n:\"M.A.S.H (1983) (20th Century Fox) (PAL)\"},E97EAFD0635651D3999CECE953C06BD5:{n:\"M.A.S.H (208 in 1) (Unknown) (PAL)\"},\"9193B6FFF6897D43274741D4F9855B6D\":{n:\"M.A.S.H (Unknown) (PAL) (Hack)\"},CF63FFAC9DA89EF09C6C973083061A47:{n:\"MASH (1983) (CCE)\"},\"1423F560062C4F3C669D55891A2BCBE7\":{n:\"MASH (1983) (CCE) [a]\"},E9BE3E8E4A7E73DD63ED4235A3A1A25F:{n:\"MMetall (Hack)\"},\"47AAD247CCE2534FD70C412CB483C7E0\":{n:\"Mafia (Rainbow Vision) (PAL)\"},CDDABFD68363A76CD30BEE4E8094C646:{n:\"MagiCard (1981) (CommaVid)\"},\"7DA9DE8D62FCDD3A2C545B2E720C2A61\":{n:\"MagiCard (1981) (CommaVid) (4K)\"},CCB5FA954FB76F09CAAE9A8C66462190:{n:\"Malagai (1983) (Answer Software)\",c:1},\"402D876EC4A73F9E3133F8F7F7992A1E\":{n:\"Man Goes Down (2006) (A. Herbert) (Prototype)\"},\"54A1C1255ED45EB8F71414DADB1CF669\":{n:\"Mangia' (1983) (Spectravideo)\"},D8295EFF5DCC43360AFA87221EA6021F:{n:\"Mangia' (1983) (Spectravideo) (PAL)\"},E4C2077A18E3C27F4819AA7757903AA0:{n:\"Many Blue Bars Demo (PD)\"},CEF01595000627EE50863D4290372C27:{n:\"Many Blue Bars and Text Demo (PD)\"},\"163E7E757E2DC44469123FF0E5DAEC5E\":{n:\"Many Blue Bars and Text Demo 2 (PD)\"},F032B2F2D8323404A6B4541F92DD1825:{n:\"Many Blue Bars and Text Demo 3 (PD)\"},EF60B06FDDB675B0D783AFBFA5FC5232:{n:\"Many Blue Bars and Text Demo 4 (PD)\"},\"13895EF15610AF0D0F89D588F376B3FE\":{n:\"Marauder (1982) (Tigervision)\"},\"512E874A240731D7378586A05F28AEC6\":{n:\"Marauder (1982) (Tigervision) (PAL)\"},CC03C68B8348B62331964D7A3DBEC381:{n:\"Marauder (Jone Yuan)\"},\"319A142AAB6260842AB616382848C204\":{n:\"Marble Craze (05-02-2002) (Paul Slocum)\"},F777444FC21A5925E066B68B1D350575:{n:\"Marble Craze (Kernel Works) (Paul Slocum)\"},F2E4FB2D3600C0F76D05864E658CC57B:{n:\"Marble Craze (Kernel) (17-02-2002) (Paul Slocum)\"},\"89A65B83203980D5D4D60F52A584A5B8\":{n:\"Marble Craze (PAL) (02-02-2003) (Paul Slocum)\"},\"21B09C40295C2D7074A83AE040F22EDF\":{n:\"Marble Craze (V0.90) (Easy Version) (Paul Slocum)\"},\"097074F24CDE141FE6A0F26A10333265\":{n:\"Marble Craze (V0.90) (Paul Slocum)\"},\"34B269387FA1AA5A396636F5ECDD63DD\":{n:\"Marble Craze (mc7_23) (Paul Slocum)\"},CD9FEA12051E414A6DFE17052067DA8E:{\nn:\"Marble Craze Demo (PD)\"},\"966B11D3C147D894DD9E4EBB971EA309\":{n:\"Marble Craze Song (Paul Slocum) (PD)\"},\"6141C095D0AEE4E734BEBFAAC939030A\":{n:\"Mariana (Rainbow Vision) (PAL)\"},EE84BDC5DAE268E227E407C7B5E6B6B7:{n:\"Marilyn Monroe Demo (PD)\"},CADE123747426DF69570A2BC871D3BAF:{n:\"Marine Wars (1983) (Gakken) (PAL)\"},B00E8217633E870BF39D948662A52AAC:{n:\"Marine Wars (1983) (Konami)\"},\"1B8D35D93697450EA26EBF7FF17BD4D1\":{n:\"Marineflieger (1983) (Quelle) (PAL)\"},E908611D99890733BE31733A979C62D8:{n:\"Mario Bros. (1983) (Atari)\"},C49FE437800AD7FD9302F3A90A38FB7D:{n:\"Mario Bros. (1983) (Atari) (PAL)\"},\"2A9F9001540C55A302BEFD8E9D54B47B\":{n:\"Mario Bros. (1983) (Atari) (PAL) [a]\"},\"9A165C39AF3F050FDEE6583FDFCDC9BE\":{n:\"Mario Bros. (Zirok)\"},B1D1E083DC9E7D9A5DC1627869D2ADE7:{n:\"Mario's Bros. (1983) (CCE)\"},C446288FE62C0C2737639FD788AE4A21:{n:\"Mark's Sound Demo (PD)\",c:1},B2F0D7217147160B2F481954CEDF814B:{n:\"Marquee Drawer (2001) (B. Watson)\",c:1},B1486E12DE717013376447AC6F7F3A80:{n:\"Marspatrouille (1983) (Quelle) (PAL)\"},\"36E47ED74968C365121EAB60F48C6517\":{n:\"Master Builder (1983) (Quelle) (PAL)\"},AE4BE3A36B285C1A1DFF202157E2155D:{n:\"Master Builder (1983) (Spectravideo)\"},\"3B76242691730B2DD22EC0CEAB351BC6\":{n:\"Masters of the Universe (1983) (M Network)\",c:1},\"470878B9917EA0348D64B5750AF149AA\":{n:\"Math Gran Prix (1982) (Atari)\"},\"45BEEF9DA1A7E45F37F3F445F769A0B3\":{n:\"Math Gran Prix (1982) (Atari) (PAL)\"},\"7996B8D07462A19259BAA4C811C2B4B4\":{n:\"Math Gran Prix (208 in 1) (Unknown) (PAL)\"},\"5E2495D43B981010304AF55EFED1E798\":{n:\"Math Gran Prix (Jone Yuan)\"},\"244C6DE27FAFF527886FC7699A41C3BE\":{n:\"Matt Demo (PD)\"},DDD1EFC1862CD3EB3BAF4CBA81FF5050:{n:\"Max3 (2001) (Maxime Beauvais) (PD)\"},AE83541CF4A4C0BCE0ADCCD2C1BF6288:{n:\"Maze 003 Demo (PD)\"},F825C538481F9A7A46D1E9BC06200AAF:{n:\"Maze Craze (1980) (Atari)\"},ED2218B3075D15EAA34E3356025CCCA3:{n:\"Maze Craze (1980) (Atari) (PAL)\"},\"8108AD2679BD055AFEC0A35A1DCA46A4\":{n:\"Maze Craze (Unknown)\"},\"69EBF910AB9B63E5B8345F016095003B\":{n:\"Maze Demo 1 (PD)\"},F9DE91D868D6EBFB0076AF9063D7195E:{n:\"Maze Demo 2 (PD)\"},\"35B43B54E83403BB3D71F519739A9549\":{n:\"McDonald's (06-06-1983) (Parker Bros) (Prototype)\"},F7FAC15CF54B55C5597718B6742DBEC2:{n:\"Medieval Mayhem (NTSC)\",p:1},D00F6F8BA89559E4B20972A478FC0370:{n:\"Medieval Mayhem (PAL)\",p:1},DAEB54957875C50198A7E616F9CC8144:{n:\"Mega Force (1982) (20th Century Fox)\"},ECF51385384B468834611D44A8429C03:{n:\"Mega Force (1982) (20th Century Fox) (PAL)\"},BDBAEFF1F7132358EA64C7BE9E46C1AC:{n:\"Mega Force (1982) (20th Century Fox) (PAL) [a]\"},E37C8055D70979AF354251EBE9F1B7DD:{n:\"Mega Funpak - Gorf, P. Patrol, Pacman, Skeet Shoot (HES) (PAL)\"},\"28A2BEA8F84936CB2E063F857414CDA0\":{n:\"Mega Mania Raid (1999) (Thiago Paiva) (Hack)\"},B65D4A38D6047735824EE99684F3515E:{n:\"MegaBoy (Dynacom)\"},\"318A9D6DDA791268DF92D72679914AC3\":{n:\"MegaMania (1982) (Activision)\"},A35D47898B2B16EC641D1DFA8A45C2B7:{n:\"MegaMania (1982) (Activision) (16K)\"},D45BF71871B196022829AA3B96BFCFD4:{n:\"MegaMania (1982) (Activision) (8K)\"},\"3D934BB980E2E63E1EAD3E7756928CCD\":{n:\"MegaMania (1982) (Activision) (PAL)\"},\"6604F72A966CA6B2DF6A94EE4A68EB82\":{n:\"MegaMania (208 in 1) (Unknown) (PAL)\"},\"049626CBFB1A5F7A5DC885A0C4BB758E\":{n:\"MegaMania (Unknown) (PAL)\"},FC92D74F073A44BC6E46A3B3FA8256A2:{n:\"Megademo (19xx) (PD)\"},\"6BB22EFA892B89B69B9BF5EA547E62B8\":{n:\"Megamania (1982) (Dynacom)\"},D5618464DBDC2981F6AA8B955828EEB4:{n:\"Megamania (1983) (CCE)\"},\"12937DB3D4A80DA5C4452B752891252D\":{n:\"Megamania (1983) (Digitel)\"},\"1E0EF01E330E5B91387F75F700CCAF8F\":{n:\"Mein Weg (1983) (Quelle) (PAL)\"},\"96E798995AF6ED9D8601166D4350F276\":{n:\"Meltdown (1983) (20th Century Fox) (Prototype)\"},\"50568C80AC61CAB789D9923C9B05B68E\":{n:\"Merlin's Walls - Standard Edition (1999) (Ebivision)\"},\"8FBABAA87941CDF3A377C15E95BDB0F3\":{n:\"Meteor Smasher (SnailSoft)\"},\"08BF437D012DB07B05FF57A0C745C49E\":{n:\"Meteoroids (1982) (Arcadia) (Prototype)\",c:1},F1554569321DC933C87981CF5C239C43:{n:\"Midnight Magic (1984) (Atari)\",c:1},DA732C57697AD7D7AF414998FA527E75:{n:\"Midnight Magic (1984) (Atari) (PAL)\",c:1},C47B7389E76974FD0DE3F088FEA35576:{n:\"Mighty Mouse (Funvision)\"},\"0BF19E40D5CD8AA5AFB33B16569313E6\":{n:\"Millipede (01-04-1984) (Atari) (Prototype)\"},\"3C57748C8286CF9E821ECD064F21AAA9\":{n:\"Millipede (1984) (Atari)\"},A7673809068062106DB8E9D10B56A5B3:{n:\"Millipede (1984) (Atari) (PAL)\"},\"11BCF5C752088B5AAF86D6C7A6A11E8D\":{n:\"Millipede (1984) (Atari) (Prototype)\"},EFD387430A35A659FF569A9A0EC22209:{n:\"Millipede (1984) (Atari) (Prototype) (PAL)\"},\"0E224EA74310DA4E7E2103400EB1B4BF\":{n:\"Mind Maze (10-10-1984) (Atari) (Prototype)\"},FA0570561AA80896F0EAD05C46351389:{n:\"Miner 2049er (1982) (Tigervision)\"},C517144E3D3AC5C06F2F682EBF212DD7:{n:\"Miner 2049er (1982) (Tigervision) (PAL)\"},\"598A4E6E12F8238B7E7555F5A7777B46\":{n:\"Miner 2049er (1982) (Tigervision) (Prototype)\"},\"3B040ED7D1EF8ACB4EFDEEBEBDAA2052\":{n:\"Miner 2049er (1982) (Tigervision) [fixed]\"},\"2A1B454A5C3832B0240111E7FD73DE8A\":{n:\"Miner 2049er Volume II (1983) (Tigervision)\",c:1},\"468F2DEC984F3D4114EA84F05EDF82B6\":{n:\"Miner 2049er Volume II (1983) (Tigervision) (PAL)\",c:1},\"4543B7691914DFD69C3755A5287A95E1\":{n:\"Mines of Minos (1982) (CommaVid)\",c:1},B5CB9CF6E668EA3F4CC2BE00EA70EC3C:{n:\"Mines of Minos (1982) (CommaVid) (PAL)\",c:1},\"73CB1F1666F3FD30B52B4F3D760C928F\":{n:\"Mines of Minos (Unknown) (PAL)\",c:1},\"635CC7A0DB33773959D739D04EFF96C2\":{n:\"Minesweeper (V.90) (Soren Gust) (PD)\"},AC5F78BAE0638CF3F2A0C8D07EB4DF69:{n:\"Minesweeper (V.99) (Soren Gust) (PD)\"},\"2982E655DFFC89D218A0A3072CFC6811\":{n:\"Mini Golf 812631 (Hack)\"},DF62A658496AC98A3AA4A6EE5719C251:{n:\"Miniature Golf (1979) (Atari)\"},\"384DB97670817103DD8C0BBDEF132445\":{n:\"Miniature Golf (1979) (Atari) (4K)\"},ED5CCFC93AD4561075436EE42A15438A:{n:\"Miniature Golf (1979) (Atari) (PAL)\"},\"8B8152D6081F31365406CB716BD95567\":{n:\"Miniature Golf (1979) (Atari) (PAL) (4K)\"},\"4F82D8D78099DD71E8E169646E799D05\":{n:\"Miniature Golf (Unknown) (PAL) (4K)\"},\"73521C6B9FED6A243D9B7B161A0FB793\":{n:\"Miniaturer Golf (32 in 1) (1988) (Atari) (PAL)\"},\"6979F30204149BE3E227558CFFE21C1D\":{n:\"Miniaturer Golf (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"391764720140C432AEC454A468F77A40\":{n:\"Miss Pack Man (Video Game Program) (PAL)\"},\"4181087389A79C7F59611FB51C263137\":{n:\"Miss Piggy's Wedding (06-24-1983) (Atari) (Prototype) (8K)\"},\"855A42078B14714BCFD490D2CF57E68D\":{n:\"Miss Piggy's Wedding (1983) (Atari) (Prototype)\"},\"25E73EFB9A6EDF119114718BD2F646BA\":{n:\"Miss Piggy's Wedding (1983) (Atari) (Prototype) [a]\"},\"3A2E2D0C6892AA14544083DFB7762782\":{n:\"Missile Command (1981) (Atari)\",l:\"missile command\",c:1},\"9364AD51C321E0F15C96A8C0AFF47CEB\":{n:\"Missile Command (1981) (Atari) (PAL)\",l:\"missile command\",c:1},\"1A8204A2BCD793F539168773D9AD6230\":{n:\"Missile Command (1981) (Atari) [no initials]\",l:\"missile command\"},\"94E7CC6342D11E508E7E8B2DDF53C255\":{n:\"Missile Command (208 in 1) (Unknown) (PAL) (Hack)\"},\"8D1E2A6D2885966E6D86717180938F87\":{n:\"Missile Command (Amiga Mouse) (2002) (TJ)\",l:\"missile command\",c:1},\"183020A80848E06A1238A1AB74079D52\":{n:\"Missile Command (Amiga Mouse) (2002) (TJ) (PAL)\",l:\"missile command\",c:1},\"8CE9126066F2DDD5173E9F1F9CE1494E\":{n:\"Missile Command (CX-22 Trackball) (2002) (TJ)\",l:\"missile command\",c:1},\"8BEBAC614571135933116045204F0F00\":{n:\"Missile Command (CX-22 Trackball) (2002) (TJ) (PAL)\",l:\"missile command\",c:1},\"2365E1534D67F94D8670394AB99150CE\":{n:\"Missile Command (CX-80 Trackball) (2002) (TJ)\",l:\"missile command\",c:1},\"96ECCC2277043508A6C481EA432D7DD9\":{n:\"Missile Command (CX-80 Trackball) (2002) (TJ) (PAL)\",l:\"missile command\",c:1},F6A9EA814D15B85BFFE980C927DF606B:{n:\"Missile Command (Unknown) (PAL)\",l:\"missile command\",c:1},CB24210DC86D92DF97B38CF2A51782DA:{n:\"Missile Control (1983) (Video Gems) (PAL)\"},E6E5BB0E4F4350DA573023256268313D:{n:\"Missile Control (Thomas Jentzsch)\"},\"53D181CDE2E0219B5754CAAD246FCB66\":{n:\"Missile Demo (1998) (Ruffin Bailey) (PD)\"},\"317A4CDBAB090DCC996833D07CB40165\":{n:\"Missile War (1983) (Goliath) (PAL)\"\n},\"4C6AFB8A44ADF8E28F49164C84144BFE\":{n:\"Mission 3,000 A.D. (1983) (BitCorp)\"},\"6EFE876168E2D45D4719B6A61355E5FE\":{n:\"Mission 3,000 A.D. (1983) (BitCorp) (PAL)\",c:1},CFAD2B9CA8B8FEC7FB1611D656CC765B:{n:\"Mission 3,000 A.D. (1983) (BitCorp) (PAL) [demo cart]\",c:1},B83579C4450FCBDF2B108903731FA734:{n:\"Mission 3,000 A.D. (208 in 1) (Unknown) (PAL)\",c:1},CF9069F92A43F719974EE712C50CD932:{n:\"Mission Survive (1983) (Video Gems) (PAL)\",c:1},B5CDBAB514EA726A14383CFF6DB40E26:{n:\"Mission Survive (1983) (Video Gems) (PAL) [a]\",c:1},\"3783F12821B88B08814DA8ADB1A9F220\":{n:\"Mission Survive (PAL) (Genesis)\",c:1},B676A9B7094E0345A76EF027091D916B:{n:\"Mission Survive (Thomas Jentzsch)\",c:1},E13818A5C0CB2F84DD84368070E9F099:{n:\"Misterious Thief, A (1983) (CCE)\",c:1},\"5D9592756425192EC621D2613D0E683D\":{n:\"Misterious Thief, A (1983) (CCE) [a]\"},B4A4C87840613F102ACB5B3A647D0A67:{n:\"Mobile 48 Sprite Kernel (04-01-2003) (Eric Ball)\"},\"073CB76B006AF034FD150BE3F5E0E7E6\":{n:\"Mobile 48 Sprite Kernel (Bug Fixed) (10-01-2003) (Eric Ball)\"},\"63E9E612BBEE31045F8D184A4E53F8EC\":{n:\"Moby Blues (2002) (ATARITALIA) (Hack)\"},\"7AF40C1485CE9F29B1A7B069A2EB04A7\":{n:\"Mogul Maniac (1983) (Amiga)\"},F802FA61011DD9EB6F80B271BAC479D0:{n:\"Mole Hunter (Suntek) (PAL)\"},\"6BDE3F6AC31ACEEF447CE57D4D2C2EC0\":{n:\"Mondo Pong V1 (Piero Cavina) (PD)\",p:1},\"1F60E48AD98B659A05CE0C1A8E999AD9\":{n:\"Mondo Pong V2 (Piero Cavina) (PD)\",p:1},\"6913C90002636C1487538D4004F7CAC2\":{n:\"Monster Cise (1984) (Atari) (Prototype)\"},\"3347A6DD59049B15A38394AA2DAFA585\":{n:\"Montezuma's Revenge (1984) (Parker Bros)\"},\"4AB2EBD95A8F861EA451ABEBDAD914A5\":{n:\"Montezuma's Revenge (PAL) (Genesis)\"},\"9F59EDDF9BA91A7D93BCE7EE4B7693BC\":{n:\"Montezuma's Revenge (Thomas Jentzsch) (PAL60)\"},\"7B8A481E0C5AA78150B5555DFF01F64E\":{n:\"Moon Patrol (05-16-1983) (Atari) (Prototype)\"},AC3DD22DD945724BE705DDD2785487C2:{n:\"Moon Patrol (06-15-1983) (Atari) (Prototype)\"},E2C1B60EAA8EDA131632D73E4E0C146B:{n:\"Moon Patrol (07-04-1983) (Atari) (Prototype)\"},\"5256F68D1491986AAE5CFDFF539BFEB5\":{n:\"Moon Patrol (07-26-1983) (Atari) (Prototype)\"},\"94FF6B7489ED401DCAAF952FECE10F67\":{n:\"Moon Patrol (07-31-1983) (Atari) (Prototype)\"},\"515046E3061B7B18AA3A551C3AE12673\":{n:\"Moon Patrol (1983) (Atari)\"},\"65490D61922F3E3883EE1D583CE10855\":{n:\"Moon Patrol (1983) (Atari) (PAL)\"},\"0AFE6AE18966795B89314C3797DD2B1E\":{n:\"Moon Patrol (1983) (Atari) (PAL) [a]\"},\"6DE924C2297C8733524952448D54A33C\":{n:\"Moon Patrol (1983) (CCE)\"},\"2854E5DFB84173FAFC5BF485C3E69D5A\":{n:\"Moon Patrol (Canal 3)\"},\"5643EE916F7DC760148FCA4DB3AA7D10\":{n:\"Moon Patrol (Genesis)\"},\"1B22A3D79DDD79335B69C94DD9B3E44E\":{n:\"Moon Patrol (Tron)\"},\"44E9C4A047C348DBEB7ACE60F45484B4\":{n:\"Moon Patrol Arcade (Genesis)\"},\"203ABB713C00B0884206DCC656CAA48F\":{n:\"Moonsweeper (1983) (Imagic)\",c:1},\"4AF4103759D603C82B1C9C5ACD2D8FAF\":{n:\"Moonsweeper (1983) (Imagic) (PAL)\",c:1},B79FE32320388A197AC3A0B932CC2189:{n:\"Moonsweeper (1983) (Imagic) (PAL) [a]\",c:1},B06050F686C6B857D0DF1B79FEA47BB4:{n:\"Moonsweeper (1988) (Activision)\",c:1},AE6CB335470788B94BEB5787976E8818:{n:\"Mortal Kurling (02-01-2003) (CT)\"},EB503CC64C3560CD78B7051188B7BA56:{n:\"Moto Laser (Star Game)\"},\"378A62AF6E9C12A760795FF4FC939656\":{n:\"MotoRodeo (1990) (Atari)\",c:1},B1E2D5DC1353AF6D56CD2FE7CFE75254:{n:\"MotoRodeo (1990) (Atari) (PAL)\",c:1},A20B7ABBCDF90FBC29AC0FAFA195BD12:{n:\"Motocross (1983) (Quelle) (PAL)\"},\"5641C0FF707630D2DD829B26A9F2E98F\":{n:\"Motocross (Joystik)\"},F5A2F6EFA33A3E5541BC680E9DC31D5B:{n:\"Motocross (Suntek) (PAL)\"},DE0173ED6BE9DE6FD049803811E5F1A8:{n:\"Motocross Racer (1983) (Xonox)\"},DB4EB44BC5D652D9192451383D3249FC:{n:\"Mountain King (1983) (CBS Electronics)\",c:1},\"7E51A58DE2C0DB7D33715F518893B0DB\":{n:\"Mountain King (1983) (CBS Electronics) [a]\",c:1},\"23D445EA19A18FB78D5035878D9FB649\":{n:\"Mouse Trap (1982) (CBS Electronics) (PAL)\",c:1},\"5678EBAA09CA3B699516DBA4671643ED\":{n:\"Mouse Trap (1982) (Coleco)\",c:1},\"35156407E54F67EB1F625450D5C093E1\":{n:\"Mouse Trap (Genesis)\"},\"24FBF8250A71611E40EF18552E61B009\":{n:\"Movable Grid Demo (PD)\"},\"6342AFE9C9AD1B6120B8F6FB040D0926\":{n:\"Move a Blue Blob Demo (PD)\"},F69A39B215852A0C2764D2A923C1E463:{n:\"Move a Blue Blob Demo 2 (PD)\"},\"140909D204ABD6841C64CDAD4D7765B4\":{n:\"Moving Blue Ladder Demo (PD)\"},\"703D32062436E4C20C48313DFF30E257\":{n:\"Moving Maze Demo (PD)\",c:1},AA7BB54D2C189A31BB1FA20099E42859:{n:\"Mr. Do! (1983) (CBS Electronics) (PAL)\",c:1},\"0164F26F6B38A34208CD4A2D0212AFC3\":{n:\"Mr. Do! (1983) (Coleco)\",c:1},B7A7E34E304E4B7BC565EC01BA33EA27:{n:\"Mr. Do!'s Castle (1984) (Parker Bros)\",c:1},\"0CB7AF80FD0DDEF84844481D85E5D29B\":{n:\"Mr. Pac-Man (El Destructo)\"},\"0DFBDADF8F1BC718E7E1BB3CCD5FEF3D\":{n:\"Mr. Pac-Man (New start tune) (El Destructo)\"},\"603C7A0D12C935DF5810F400F3971B67\":{n:\"Mr. Postman (1983) (BitCorp) (PAL)\"},\"8644352B806985EFDE499AE6FC7B0FEC\":{n:\"Mr. Postman (1983) (CCE)\"},\"9A4274409216FF09ECDE799F2A56AC73\":{n:\"Mr. Postman (1983) (CCE) [a]\"},\"2327456F86D7E0DEDA94758C518D05B3\":{n:\"Mr. Postman (Digitel)\"},F0DAAA966199EF2B49403E9A29D12C50:{n:\"Mr. Postman (Unknown)\"},CFF9950D4E650094F65F40D179A9882D:{n:\"Mr. Roboto (Paul Slocum) (Hack)\",c:1},\"87E79CD41CE136FD4F72CC6E2C161BEE\":{n:\"Ms. Pac-Man (1982) (Atari)\"},\"1EE9C1BA95CEF2CF987D63F176C54AC3\":{n:\"Ms. Pac-Man (1982) (Atari) (PAL)\"},D4942F4B55313FF269488527D84CE35C:{n:\"Ms. Pac-Man (1982) (Atari) (PAL) [a]\"},\"1EA980574416BFD504F62575BA524005\":{n:\"Ms. Pac-Man (1982) (Atari) (Prototype)\"},AEB104F1E7B166BC0CBACA0A968FDE51:{n:\"Ms. Pac-Man (1999) (Hack)\"},\"9469D18238345D87768E8965F9F4A6B2\":{n:\"Ms. Pac-Man (CCE)\"},\"4066309EB3FA3E7A725585B9814BC375\":{n:\"Multi Ball Demo (PD)\"},\"079FE9103515D15BC108577E234A484D\":{n:\"Multi-Color Demo 0 (Bob Colbert) (PD)\"},\"4AFE528A082F0D008E7319EBD481248D\":{n:\"Multi-Color Demo 1 (Bob Colbert) (PD)\"},\"191449E40B0C56411C70772706F79224\":{n:\"Multi-Color Demo 2 (Bob Colbert) (PD)\"},AE18C11E4D7ED2437F0BF5D167C0E96C:{n:\"Multi-Color Demo 3 (Bob Colbert) (PD)\"},C28B29764C2338B0CF95537CC9AAD8C9:{n:\"Multi-Color Demo 4 (Bob Colbert) (PD)\"},D34B933660E29C0A0A04004F15D7E160:{n:\"Multi-Color Demo 5 (Bob Colbert) (PD)\"},\"14163EB2A3DDD35576BD8527EAE3B45E\":{n:\"Multi-Color Demo 6 (Bob Colbert) (PD)\"},B1FD0B71DE9F6EEB5143A97963674CB6:{n:\"Multi-Color Demo 7 (Bob Colbert) (PD)\"},\"25F9CF703575C5D63048C222F5463758\":{n:\"Multi-Sprite Demo 1 (PD)\"},\"42AE81AE8AC51E5C238639F9F77D91AE\":{n:\"Multi-Sprite Demo 2 (Piero Cavina) (PD)\"},\"17515A4D0B7EA5029FFFF7DFA8456671\":{n:\"Multi-Sprite Demo V1.1 (Piero Cavina) (PD)\"},EF71E9FB0D8D477226D8D42261FBF0A7:{n:\"Multi-Sprite Demo V2.0 (Piero Cavina) (PD)\"},B958D5FD9574C5CF9ECE4B9421C28ECD:{n:\"Multi-Sprite Game V1.0 (Piero Cavina) (PD)\"},\"59135F13985B84C4F13CC9E55EEC869A\":{n:\"Multi-Sprite Game V2.0 (Piero Cavina) (PD)\"},\"7197B6CBDE6ECD10376155E6B848E80D\":{n:\"Multi-Sprite Game V2.1 (Piero Cavina) (PD)\"},\"585600522B1F22F617652C962E358A5D\":{n:\"Multi-Sprite Game V2.2 (Piero Cavina) (PD)\"},E609E8A007127B8FCFF79FFC380DA6B1:{n:\"Multi-Sprite Game V2.3 (Piero Cavina) (PD)\"},\"50EF88F9A5E0E1E6B86E175362A27FDB\":{n:\"Multi-Sprite Game V2.4 (Piero Cavina) (PD)\"},\"157356F80C709AB675961D8B8B207E20\":{n:\"Multi-Sprite Game V2.5 (Piero Cavina) (PD)\"},\"072A6EA2181CA0DF88AC0DEDC67B239D\":{n:\"Multiple Missiles Demo (19-12-2002) (CT)\"},\"7550B821EE56FB5833DCA2BE88622D5A\":{n:\"Multiple Moving Objects Demo (B. Watson)\"},CD3E26786136A4692FD2CB2DFBC1927E:{n:\"Multiple Moving Objects Demo 2 (B. Watson)\"},A100EFF2D7AE61CA2B8E65BAF7E2AAE8:{n:\"Muncher (David Marli) (Hack)\"},\"5BBA254E18257E578C245ED96F6B003B\":{n:\"Music Effects Demo (21-01-2003) (Paul Slocum)\",c:1},F5AA6BD10F662199C42E43863A30106C:{n:\"Music Kit (V1.0) - Song Player (Paul Slocum)\",c:1},\"6F084DAF265599F65422EF4173B69BC7\":{n:\"Music Kit (V2.0) - Song Player (Paul Slocum)\",c:1},\"65B106EBA3E45F3DAB72EA907F39F8B4\":{n:\"Music Machine, The (1983) (Sparrow)\",p:1},\"04FCCC7735155A6C1373D453B110C640\":{n:\"My Golf (1990) (HES) (PAL)\"},\"936F555B4B1A2CD061B659FF63F4F5F2\":{n:\"My Golf (1990) (HES) (PAL) [a1]\"},DFAD86DD85A11C80259F3DDB6151F48F:{\nn:\"My Golf (1990) (HES) (PAL) [fixed]\"},EE6CBEDF6C0AAC90FAA0A8DBC093FFBE:{n:\"My Golf (CCE) (PAL)\"},\"0546F4E6B946F38956799DD00CAAB3B1\":{n:\"My Golf (Thomas Jentzsch)\"},FCBBD0A407D3FF7BF857B8A399280EA1:{n:\"Mysterious Thief, A (1983) (ZiMAG) (Prototype)\",c:1},\"48F18D69799A5F5451A5F0D17876ACEF\":{n:\"Mysterious Thief, A (1983) (ZiMAG) (Prototype) [a]\",c:1},FA7E11A3DBEA4365975CD2F094E61D25:{n:\"Mystery Science Theater 2600 (1999) (Tim Snider) (Hack)\"},\"7608ABDFD9B26F4A0ECEC18B232BEA54\":{n:\"NFL Football (32 in 1) (1988) (Atari) (PAL)\"},\"67C05AE94BF8B83A666C3AE2C4BC14DE\":{n:\"NFL Football (32 in 1) (1988) (Atari) (PAL) (4K)\"},C58708C09CCB61625CDA9D15DDCD8BE6:{n:\"NOIZ Invaders (SPIKE) (2002) (Hack)\"},\"36306070F0C90A72461551A7A4F3A209\":{n:\"Name This Game (1982) (U.S. Games)\"},F98D2276D4A25B286135566255AEA9D0:{n:\"Name This Game (1983) (Digitel)\"},\"2F7949F71076DB42480D3F5036B4A332\":{n:\"Name This Game (208 in 1) (Unknown) (PAL) (Hack)\"},B392964E8B1C9C2BED12246F228011B2:{n:\"Name This Game (Unknown) (PAL)\"},\"0614ED51ACD027D531E7C85C4F435292\":{n:\"Narnia (Glenn Saunders) (PD)\"},\"709910C2E83361BC4BF8CD0C20C34FBF\":{n:\"Netmaker (Rainbow Vision) (PAL)\"},\"3F9CB1ABA8EC20E2C243AE642F9942BF\":{n:\"New Questions (1998) (John K. Harvey) (PD)\"},\"1201C18CF00D2C236F42E4D7D8C86AA1\":{n:\"Nick Bensema Demo (Nick Bensema)\"},\"392F00FD1A074A3C15BC96B0A57D52A1\":{n:\"Night Driver (1980) (Atari)\",p:1,c:1},F48022230BB774A7F22184B48A3385AF:{n:\"Night Driver (1980) (Atari) (4K)\",p:1,c:1},FEEC54AAC911887940B47FE8C9F80B11:{n:\"Night Driver (1980) (Atari) (PAL)\",p:1,c:1},D9DA2AE7C7894A29B43B3C6B79F3B7A2:{n:\"Night Driver (1980) (Atari) (PAL) (4K)\",p:1,c:1},BD39598F067A1193AE81BD6182E756D1:{n:\"Night Stalker (1989) (Telegames) (PAL)\"},\"2783006EE6519F15CBC96ADAE031C9A9\":{n:\"Night Stalker (1989) (Telegames) (PAL) [a]\"},EAD60451C28635B55CA8FEA198444E16:{n:\"Nightmare (1983) (Sancho) (PAL)\"},\"27F9E2E1B92AF9DC17C6155605C38E49\":{n:\"Nightmare (CCE)\"},BDB4B584DDC90C9D2EC7E21632A236B6:{n:\"Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack)\"},DDA23757407C4E217F64962C87AD0C82:{n:\"Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack) [a]\"},B6D52A0CF53AD4216FEB04147301F87D:{n:\"No Escape! (1982) (Imagic)\"},DC81C4805BF23959FCF2C649700B82BF:{n:\"No Escape! (1982) (Imagic) (PAL)\"},D8DF256C0D89E494A9FB3E9ABB8E44AC:{n:\"No Escape! (1982) (Imagic) (PAL) [a]\"},\"9912D06EEA42200A198DD3E2BE18C601\":{n:\"No Escape! (1982) (Imagic) [a]\"},\"637EFAC676FF063F2FBB0ABFF77C4FA5\":{n:\"Noize Maker Demo (PD)\"},\"34F4B1D809AA705ACE6E46B13253FD3B\":{n:\"Nothern Alliance (Aaron Bergstrom) (Hack)\"},E3C35EAC234537396A865D23BAFB1C84:{n:\"Nuts (1983) (TechnoVision) (PAL)\"},DE7A64108074098BA333CC0C70EEF18A:{n:\"Nuts (Unknown)\"},\"9ED0F2AA226C34D4F55F661442E8F22A\":{n:\"Nuts (Unknown) (PAL)\"},\"133A4234512E8C4E9E8C5651469D4A09\":{n:\"Obelix (1983) (Atari)\"},\"19E739C2764A5AB9ED08F9095AA2AF0B\":{n:\"Obelix (1983) (Atari) (PAL)\"},\"669840B0411BFBAB5C05B786947D55D4\":{n:\"Obelix (1983) (Atari) (PAL) [a]\"},A189F280521F4E5224D345EFB4E75506:{n:\"Obelix (1983) (Thomas Jentzsch)\"},\"4CABC895EA546022C2ECAA5129036634\":{n:\"Ocean City (Funvision)\"},\"45CB0F41774B78DEF53331E4C3BF3362\":{n:\"Octopus (1983) (Carrere Video) (PAL)\"},B6166F15720FDF192932F1F76DF5B65D:{n:\"Off Your Rocker (1983) (Amiga) (Prototype)\"},\"98F63949E656FF309CEFA672146DC1B8\":{n:\"Off the Wall (1989) (Atari)\"},\"36EDEF446AB4C2395666EFC672B92ED0\":{n:\"Off the Wall (1989) (Atari) (PAL)\"},\"0BF1E354304F46C0CAF8FC0F6F5E9525\":{n:\"Official Frogger (1983) (Arcadia) [a]\"},E823B13751E4388F1F2A375D3560A8D7:{n:\"Official Frogger (Preview) (1983) (Arcadia) [a]\"},C73AE5BA5A0A3F3AC77F0A9E14770E73:{n:\"Official Frogger, The (1983) (Arcadia)\"},A74689A08746A667A299B0507E1E6DD9:{n:\"Official Frogger, The (1983) (Arcadia) (PAL)\"},F5D103A9AE36D1D4EE7EEF657B75D2B3:{n:\"Official Frogger, The (Preview) (1983) (Arcadia)\"},\"95FD6097DC27C20666F039CFE34F7C69\":{n:\"Oh No! (Version 1) (17-01-2003) (AD)\"},\"5A734779D797CCEF25DC8ACFA47244C7\":{n:\"Oh No! (Version 2) (18-01-2003) (AD)\"},FDD4995A50395DB14F518F63C2D63438:{n:\"Oh No! (Version 3) (18-01-2003) (AD)\"},DE07E9CB43AD8D06A35F6506E22C62E9:{n:\"Oh No! (Version 4) (22-01-2003) (AD)\"},C9C25FC536DE9A7CDC5B9A916C459110:{n:\"Oink! (1982) (Activision)\"},\"06B6C5031B8353F3A424A5B86B8FE409\":{n:\"Oink! (1982) (Activision) (PAL)\"},\"3DA7CC7049D73D34920BB73817BD05A9\":{n:\"Oink! (1983) (Activision) (16K)\"},\"2CF20F82ABCAE2DECFF88DB99331E071\":{n:\"Oink! (1983) (Activision) (8K)\"},F8648D0C6AD1266434F6C485FF69EC40:{n:\"Oink! (CCE)\"},\"853C11C4D07050C22EF3E0721533E0C5\":{n:\"Oink! (Unknown) (PAL)\"},\"8101EFAFCF0AF32FEDDA4579C941E6F4\":{n:\"Okie Dokie (4K) (PD)\"},CE4BBE11D682C15A490AE15A4A8716CF:{n:\"Okie Dokie (Older) (PD)\"},CCA33AE30A58F39E3FC5D80F94DC0362:{n:\"Okie Dokie (PD)\"},\"9947F1EBABB56FD075A96C6D37351EFA\":{n:\"Omega Race (1983) (CBS Electronics)\"},\"257BC3B72A6B5DB3FD0D47619125B387\":{n:\"Omega Race (1983) (CBS Electronics) [a]\"},\"5B5D04887922B430DE0B7B2A21F9CD25\":{n:\"Omega Race (Genesis)\"},A9784C24CDDB33BD0D14442B97784F3D:{n:\"Omega Race DC (2003) (TJ) (Omega Race Hack)\"},\"3B6DBA1A24BB2893BD3BD0593F92016B\":{n:\"Omega Race JS (TJ)\"},\"61426CEE013306E7F7367534AB124747\":{n:\"One Blue Bar Demo (PD)\"},B83DF1F32B4539C324BDF94851B4DB55:{n:\"One On One by Angelino (Basketball Hack)\"},\"8786F4609A66FBEA2CD9AA48CA7AA11C\":{n:\"Open Sesame (1983) (Goliath) (PAL)\",c:1},\"28D5DF3ED036ED63D33A31D0D8B85C47\":{n:\"Open Sesame (1983) (Goliath) (PAL) [a]\",c:1},\"90578A63441DE4520BE5324E8F015352\":{n:\"Open Sesame (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\",c:1},C880C659CDC0F84C4A66BC818F89618E:{n:\"Open Sesame (Thomas Jentzsch)\",c:1},\"52385334AC9E9B713E13FFA4CC5CB940\":{n:\"Open, Sesame! (1983) (CCE)\",c:1},CC7138202CD8F6776212EBFC3A820ECC:{n:\"Oscar's Trash Race (03-30-1983) (Atari) (Prototype)\"},\"4B94FD272785D7EC6C95FB7279D0F522\":{n:\"Oscar's Trash Race (12-03-1982) (Atari) (Prototype)\"},FA1B060FD8E0BCA0C2A097DCFFCE93D3:{n:\"Oscar's Trash Race (1983) (Atari)\"},\"47911752BF113A2496DBB66C70C9E70C\":{n:\"Oscar's Trash Race (1983) (Atari) (PAL)\"},\"55949CB7884F9DB0F8DFCF8707C7E5CB\":{n:\"Othello (1981) (Atari)\"},\"02CEE0B140D2F1A1EFCFB1D482A5C392\":{n:\"Othello (1981) (Atari) (4K)\"},\"2C3B9C171E214E9E46BBAA12BDF8977E\":{n:\"Othello (1981) (Atari) (4K) [a]\"},A0E2D310E3E98646268200C8F0F08F46:{n:\"Othello (1981) (Atari) (PAL)\"},\"95956108289A917F80667ECCD3CE98A9\":{n:\"Othello (1981) (Atari) (PAL) (4K)\"},\"00E19EBF9D0817CCFB057E262BE1E5AF\":{n:\"Othello (1981) (Atari) (PAL) [no grid markers]\"},\"113CD09C9771AC278544B7E90EFE7DF2\":{n:\"Othello (1981) (Atari) [no grid markers]\"},\"7D9C96B215D1941E87B6FB412EB9204F\":{n:\"Othello (Unknown) (PAL) (4K)\"},F97DEE1AA2629911F30F225CA31789D4:{n:\"Out of Control (1983) (Avalon Hill)\"},\"890C13590E0D8D5D6149737D930E4D95\":{n:\"Outlaw (1978) (Atari)\"},F060826626AAC9E0D8CDA0282F4B7FC3:{n:\"Outlaw (1978) (Atari) (4K)\"},\"22675CACD9B71DEA21800CBF8597F000\":{n:\"Outlaw (1978) (Atari) (PAL)\"},\"3EAE062A9B722BDA1255D474A87ECA5C\":{n:\"Outlaw (1978) (Atari) (PAL) (4K)\"},\"2E3728F3086DC3E71047FFD6B2D9F015\":{n:\"Outlaw (32 in 1) (1988) (Atari) (PAL)\"},F661F129644F338B13D9F4510D816C03:{n:\"Outlaw (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"7F819454734DDF93F83FEFCFFCD3E212\":{n:\"Outlaw (Jone Yuan) (4K)\"},\"1EC5BEF77B91E59313CBA205F15B06D7\":{n:\"Overhead Adventure Demo 1 (PD)\"},\"4066D7D88EC4A2C656127A67FA52DCF1\":{n:\"Overhead Adventure Demo 2 (PD)\"},\"3C7A96978F52B2B15426CDD50F2C4048\":{n:\"Overhead Adventure Demo 3 (PD)\"},\"0CFDD2F3B243CAC21F38A0F09F54BEAD\":{n:\"Overhead Adventure Demo 4 (PD)\"},D5AA7472E7F2CC17E893A1A36F8DADF0:{n:\"Overhead Adventure Demo 5 (PD)\"},F45644FF82B533A781A1EE50F2E95F3C:{n:\"Overhead Adventure Demo 6 (PD)\"},\"4689081B7363721858756FE781CC7713\":{n:\"Oystron (V2.6) (Piero Cavina) (PD)\"},\"26F4F8B098609164EFFEF7809E0121E1\":{n:\"Oystron (V2.7) (Piero Cavina) (PD)\"},E6508B878145187B87B9CDED097293E7:{n:\"Oystron (V2.8) (Piero Cavina) (PD)\"},\"70D14C66C319683B4C19ABBE0E3DB57C\":{n:\"Oystron (V2.82) (Piero Cavina) (PD)\"},\"5360693F1EB90856176BD1C0A7B17432\":{n:\"Oystron (V2.85) (Piero Cavina) (PD)\"\n},\"91F0A708EEB93C133E9672AD2C8E0429\":{n:\"Oystron (V2.9) (Piero Cavina) (PD)\"},AA2C4B32656BDE9A75042A4D158583E1:{n:\"Oystron X (Piero Cavina) (PD)\"},C7E43AD79C5E5C029D9F5FFDE23E32CF:{n:\"PAL-NTSC Detector (15-11-2002) (CT)\"},\"106326C262DFD3E8EAEABD961D2A0519\":{n:\"PAL-NTSC Detector (15-11-2002) (CT)[a1]\"},\"6AC3FD31A51730358708C7FDC62487F8\":{n:\"PC Invaders (Matthias Jaap) (Hack)\"},\"9C7FA3CFCAAAFB4E6DAF1E2517D43D88\":{n:\"PIEROXM Demo (PD)\"},D0498BACA989E792DB4B8270A02B9624:{n:\"Pac Ghost Sprite Demo (PD)\"},BD430C2193045C68D1A20A018A976248:{n:\"Pac Ghost Sprite Demo 2 (PD)\"},F9DA42F91A1C5CFA344D2FF440C6F8D4:{n:\"Pac Invaders (ZUT)\"},\"88D300A38BDD7CAB9EDAD271C18CD02B\":{n:\"Pac Kong (Funvision) (PAL)\"},\"936EF1D6F8A57B9FF575DC195EE36B80\":{n:\"Pac Kong (Unknown)\"},CA53FC8FD8B3C4A7DF89AC86B222EBA0:{n:\"Pac Man (1983) (CCE)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\"651D2B6743A3A18B426BCE2C881AF212\":{n:\"Pac Man (1983) (CCE) [a]\",l:\"PAC-MAN\",lc:\"#f0f010\"},B36040A2F9ECAFA73D835D804A572DBF:{n:\"Pac Man (1983) (Digitel)\",l:\"PAC-MAN\",lc:\"#f0f010\"},EBF9038E927E6A0DB3E0D170C59911E6:{n:\"Pac-2600 (PD)\"},D223BC6F13358642F02DDACFAF4A90C9:{n:\"Pac-Kong (Rainbow Vision) (PAL)\"},A4B99AA5ED85CFDB7D101923147DE035:{n:\"Pac-Law (Jim Goebel) (Hack)\"},\"3B8AACF5F5638492B926B5124DE19F18\":{n:\"Pac-Man (1981) (Atari) (8K)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\"72DB1194B1CC7D45B242F25EB1C148D3\":{n:\"Pac-Man (1981) (Atari) (Hack)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\"6E372F076FB9586AFF416144F5CFE1CB\":{n:\"Pac-Man (1982) (Atari)\",l:\"PAC-MAN\",lc:\"#f0f010\"},FC2233FC116FAEF0D3C31541717CA2DB:{n:\"Pac-Man (1982) (Atari) (PAL)\",l:\"PAC-MAN\",lc:\"#f0f010\"},C2410D03820E0FF0A449FA6170F51211:{n:\"Pac-Man (Unknown) (PAL) (Hack)\"},\"6B6CA32228AE352B4267E4BD2CDDF10C\":{n:\"Pac-Man 4 (Pac-Man Hack)\"},C569E57DCA93D3BEE115A49923057FD7:{n:\"Pac-Space (Pac-Man Hack)\"},D7B58303EC8D8C4DBCBF54D3B9734C7E:{n:\"Paddle Demo (Joe Grand) (PD)\",p:1},\"82BF0DFF20CEE6A1ED4BB834B00074E6\":{n:\"Panda (Quest) (Suntek) (PAL)\"},\"0E713D4E272EA7322C5B27D645F56DD0\":{n:\"Panda Chase (1983) (Home Vision) (PAL)\"},F8582BC6CA7046ADB8E18164E8CECDBC:{n:\"Panda Chase (Unknown) (PAL)\"},\"714E13C08508EE9A7785CEAC908AE831\":{n:\"Parachute (1983) (Home Vision) (PAL)\"},\"245F07C8603077A0CAF5F83EE6CF8B43\":{n:\"Parachute (Thomas Jentzsch)\"},\"012B8E6EF3B5FD5AABC94075C527709D\":{n:\"Party Mix (1983) (Arcadia)\",p:1},\"7EF3CA08ABDE439C6CCCA84693839C57\":{n:\"Party Mix (1983) (Arcadia) (PAL)\",p:1},\"4C0FB2544AE0F8B5F7AE8BCE7BD7F134\":{n:\"Party Mix (Preview) (1983) (Arcadia)\",p:1},\"7D940D749E55B96B7B746519FA06F2DE\":{n:\"Party Mix (Preview) (1983) (Arcadia) (PAL)\",p:1},\"36C31BB5DAEB103F488C66DE67AC5075\":{n:\"Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia)\",p:1},FF86FC8FFA717BB095E8471638C1C31C:{n:\"Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia) (PAL)\",p:1},\"6ED5012793F5DDF4353A48C11EA9B8D3\":{n:\"Party Mix - Down on the Line (3 of 3) (1983) (Arcadia)\",p:1},\"0E86470791B26292ABE1C64545C47985\":{n:\"Party Mix - Down on the Line (3 of 3) (1983) (Arcadia) (PAL)\",p:1},AAEA37B65DB9E492798F0105A6915E96:{n:\"Party Mix - Tug of War (2 of 3) (1983) (Arcadia)\",p:1},\"08F4DC6F118F7C98E2406C180C08E78E\":{n:\"Party Mix - Tug of War (2 of 3) (1983) (Arcadia) (PAL)\",p:1},E40A818DAC4DD851F3B4AAFBE2F1E0C1:{n:\"Peek-A-Boo (1984) (Atari) (Prototype)\"},\"17BBE288C3855C235950FEA91C9504E9\":{n:\"Pega Ladrao (Dismac)\"},ACE319DC4F76548659876741A6690D57:{n:\"Pele's Soccer (1981) (Atari)\"},\"7A09299F473105AE1EF3AD6F9F2CD807\":{n:\"Pele's Soccer (1981) (Atari) (PAL)\"},\"4BCC7F6BA501A26EE785B7EFBFB0FDC8\":{n:\"Pengo (1983) (Atari) (Prototype)\"},\"04014D563B094E79AC8974366F616308\":{n:\"Pengo (1984) (Atari)\"},\"87B6A17132FC32F576BC49EA18729506\":{n:\"Pengo (1984) (Atari) (PAL)\"},\"212D0B200ED8B45D8795AD899734D7D7\":{n:\"Pepsi Invaders (1983) (Atari)\"},\"6CE2110AC5DD89AB398D9452891752AB\":{n:\"Persian Gulf War (Funvision)\"},\"09388BF390CD9A86DC0849697B96C7DC\":{n:\"Pete Rose Baseball (1988) (Absolute)\"},CB4A7B507372C24F8B9390D22D54A918:{n:\"Peter Penguin (1983) (ITT Family Games) (PAL)\"},\"3685060707DF27D4091BA0EA2DC4B059\":{n:\"PezZerk - PezMan in Ghost Manor (Hack)\"},E959B5A2C882CCAACB43C32790957C2D:{n:\"Phantom II & Pirate (NTSC)\"},\"069C17BEB1E8E0557ADB8539FDCF6CBA\":{n:\"Phantom II & Pirate (PAL60)\"},\"6B1FC959E28BD71AED7B89014574BDC2\":{n:\"Phantom Tank (1982) (BitCorp) (PAL)\"},B29359F7DE62FED6E6AD4C948F699DF8:{n:\"Phantom Tank (1982) (Puzzy) (PAL)\"},\"5A9D188245AFF829EFDE816FCADE0B16\":{n:\"Phantom Tank (1983) (CCE) (PAL)\"},\"7454786AF7126CCC7A0C31FCF5AF40F1\":{n:\"Phantom Tank (Unknown) (PAL)\"},\"4D38E1105C3A5F0B3119A805F261FCB5\":{n:\"Phantom UFO (4 Game in One Light Green) (1983) (BitCorp) (PAL)\"},\"08BD4C1DCC843F6A0B563D9FD80B3B11\":{n:\"Phantompanzer II (1983) (Quelle) (PAL)\"},E9034B41741DCEE64AB6605ABA9DE455:{n:\"Phanton Tank (Digivision)\"},\"3577E19714921912685BB0E32DDF943C\":{n:\"Pharaoh's Curse (1983) (TechnoVision) (PAL)\",c:1},\"2AE700C9DBA843A68DFDCA40D7D86BD6\":{n:\"Pharaoh's Curse (Thomas Jentzsch)\",c:1},\"62F74A2736841191135514422B20382D\":{n:\"Pharaoh's Curse (Unknown)\",c:1},A69F5B1761A8A11C98E706EC7204937F:{n:\"Pharaoh's Curse (Unknown) (PAL)\",c:1},\"3AB5D138E26D88C8190E7CC629A89493\":{n:\"Phased Color Demo (PD)\",c:1},\"7DCBFD2ACC013E817F011309C7504DAA\":{n:\"Phaser Patrol (1982) (Arcadia)\",c:1},\"72305C997F2CEC414FE6F8C946172F83\":{n:\"Phaser Patrol (1982) (Arcadia) (PAL)\",c:1},\"7867EE819B53D69CFCFE740F7DDCA574\":{n:\"Phaser Patrol (1982) (Arcadia) (Prototype)\",c:1},A7A58E9291AEFA1064E933071F60D4EF:{n:\"Phaser Patrol (1982) (Arcadia) (Prototype) [a]\",c:1},A412C8577B2D57B09185AE51739AC54F:{n:\"Phaser Patrol (1982) (Arcadia) [a]\",c:1},CA54DE69F7CDF4D7996E86F347129892:{n:\"Philly Flasher (1982) (PlayAround)\",p:1},\"7E52A95074A66640FCFDE124FFFD491A\":{n:\"Phoenix (1982) (Atari)\"},\"79FCDEE6D71F23F6CF3D01258236C3B9\":{n:\"Phoenix (1982) (Atari) (PAL)\"},FD8B4EE0D57605B35E236E814F706FF1:{n:\"Phoenix (1982) (Atari) (PAL) [a]\"},A00EC89D22FCC0C1A85BB542DDCB1178:{n:\"Phoenix (1983) (CCE)\"},\"00E55B27FE2E96354CD21B8B698D1E31\":{n:\"Phoenix (Unknown)\"},A8633050A686270FCF6C0CC4DCBAD630:{n:\"Phoenix (Zirok)\"},C4060A31D61BA857E756430A0A15ED2E:{n:\"Pick 'n Pile (2003) (TJ)\",c:1},DA79AAD11572C80A96E261E4AC6392D0:{n:\"Pick 'n' Pile (1990) (Salu) (PAL)\",c:1},\"1D4E0A034AD1275BC4D75165AE236105\":{n:\"Pick Up (1983) (20th Century Fox) (Prototype)\"},\"17C0A63F9A680E7A61BEBA81692D9297\":{n:\"Picnic (1982) (U.S. Games)\",p:1},\"24544EE5D76F579992D9522E9B238955\":{n:\"Picnic (1983) (Carrere Video) (PAL)\",p:1},D3423D7600879174C038F53E5EBBF9D3:{n:\"Piece o' Cake (1982) (U.S. Games)\",p:1},\"8E4FA8C6AD8D8DCE0DB8C991C166CDAA\":{n:\"Pigs in Space (1983) (Atari)\"},\"95E1D834C57CDD525DD0BD6048A57F7B\":{n:\"Pigs in Space (1983) (Atari) (PAL)\"},CC3D942C6958BD16B1C602623F59E6E1:{n:\"Pigs in Space (1983) (Atari) (PAL) [a]\"},F04EE80011D95798006378643650AAA7:{n:\"Pigs in Space (1983) (Atari) (Prototype)\"},E3533684A7EF930A7FBD0C4DD8EC4847:{n:\"Pimball (1983) (CCE)\"},DBC7485AD5814D466DE780A3E7ED3B46:{n:\"Pink Floyd (Kyle Pittman) (PD)\"},\"69E79B1352B9EE1754BBE63B4A7062C3\":{n:\"Pink Floyd - The Wall (2003) (Barry Laws Jr.) (Hack)\"},\"798CC114F1623C14085868CD3494FE8E\":{n:\"Pins Revenge (Atari Freak 1)\"},F73D2D0EFF548E8FC66996F27ACF2B4B:{n:\"Pitfall (1983) (CCE)\",l:\"PITFALL!\",lc:\"#ececec #272\"},D20E61C86ED729780FECA162166912CA:{n:\"Pitfall (1984) (Supergame)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"2D405DA70AF82B20A6B3ECC3D1D2C4EC\":{n:\"Pitfall (Genus)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"5A272012A62BECABCD52920348C7C60B\":{n:\"Pitfall (Star Game)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"39A6A5A2E1F6297CCEAA48BB03AF02E9\":{n:\"Pitfall 2 Plus (Hack)\"},\"7B79BEB378D1B4471DEF90CECCF413DE\":{n:\"Pitfall Cupcake (Hack)\"},\"6D842C96D5A01967BE9680080DD5BE54\":{n:\"Pitfall II (1983) (Activision)\"},E34C236630C945089FCDEF088C4B6E06:{n:\"Pitfall II (1983) (Activision) (PAL)\"},\"448C2A175AFC8DF174D6FF4CCE12C794\":{n:\"Pitfall II (1983) (Activision) [a2]\"},\"490EED07D4691B27F473953FBEA6541A\":{n:\"Pitfall II (1983) (Activision) [a]\"},\"268F46038E29301568FA9E443E16E960\":{n:\"Pitfall Unlimited (Atarius Maximus) (Hack)\"},AAD91BE0BF78D33D29758876D999848A:{\nn:\"Pitfall! (1981) (Activision) (Prototype)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"3E90CF23106F2E08B2781E41299DE556\":{n:\"Pitfall! (1982) (Activision)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"6FD7C7057EEAB273B29C7AAFC7429A96\":{n:\"Pitfall! (1982) (Activision) (16K)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"98EC0FA4199B9C01F7B8FA3732E43372\":{n:\"Pitfall! (1982) (Activision) (8K)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"791BC8ACEB6B0F4D9990D6062B30ADFA\":{n:\"Pitfall! (1982) (Activision) (PAL)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"1782929E1C214B70FB6884F77C207A55\":{n:\"Pitfall! (1982) (Activision) (Prototype)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"2B430C00DC79E495762AC59B2F9B4FCD\":{n:\"Pitfall! (1982) (Activision) (Prototype)\",l:\"PITFALL!\",lc:\"#ececec #272\"},E42B937C30C617241CA9E01E4510C3F6:{n:\"Pitfall! (No Walls Hack)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"177504ABD4260C4265E1338955E9FA47\":{n:\"Pitfall! (Steroids Hack)\"},\"55EF6AB2321CA0C3D369E63D59C059C8\":{n:\"Pitfall! (Unknown) (PAL)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"5BBAB3F3E4B47E3E23F9820765DBB45C\":{n:\"Pitfall! (says 1985) [h1]\",l:\"PITFALL!\",lc:\"#ececec #272\"},\"82EFE7984783E23A7C55266A5125C68E\":{n:\"Pizza Chef (1983) (CCE)\"},D9FBF1113114FB3A3C97550A0689F10F:{n:\"Pizza Chef (1983) (ZiMAG) (Prototype)\"},\"2F77F015FC880B05F28E84156F989A0C\":{n:\"Plane Demo (Gonzalo) (PD)\"},AE10527840A1AC24DE43730645ED508D:{n:\"Planet Invaders (Charles Morgan) (Hack)\"},BB745C893999B0EFC96EA9029E3C62CA:{n:\"Planet Patrol (1982) (Play Video) (PAL)\"},\"043F165F384FBEA3EA89393597951512\":{n:\"Planet Patrol (1982) (Spectravision)\"},\"69FAC82CD2312DD9CE5D90E22E2F070A\":{n:\"Planet Patrol (1982) (Spectravision) (PAL)\"},D6ACFF6AED0F04690FE4024D58FF4CE3:{n:\"Planet Patrol (1982) (Spectravision) (PAL) [different spaceship]\"},\"79004F84BDEEE78D142E445057883169\":{n:\"Planet Patrol (1983) (CCE)\"},\"1C3F3133A3E5B023C77ECBA94FD65995\":{n:\"Planet Patrol (1983) (CCE) [a]\"},AAFC79FFC32C4C9B2D73C8ADA7602CFE:{n:\"Planet Patrol (Unknown) (PAL)\"},\"9EFB4E1A15A6CDD286E4BCD7CD94B7B8\":{n:\"Planet of the Apes (1983) (20th Century Fox) (Prototype)\"},DA4E3396AA2DB3BD667F83A1CB9E4A36:{n:\"Plaque Attack (1983) (Activision)\"},\"32244E55CE6EC6BFBD763F33384BDC2E\":{n:\"Plaque Attack (1983) (Activision) (16K)\"},\"2ABA6A1B01A5859E96D6A66D2286772F\":{n:\"Plaque Attack (1983) (Activision) (8K)\"},\"7CED6709F091E79A2AB9575D3516A4AC\":{n:\"Plaque Attack (1983) (Activision) (PAL)\"},B64426E787F04FF23EE629182C168603:{n:\"Plaque Attack (1983) (Dynacom)\"},DE24F700FD28D5B8381DE13ABD091DB9:{n:\"Plaque Attack (CCE)\"},\"8B8789C6669A4CEE86C579A65332F852\":{n:\"Plaque Attack (Digivision)\"},\"3ECCF9F363F5C5DE0C8B174A535DC83B\":{n:\"Plaque Attack (Unknown) (PAL)\"},\"6A76D5F0ED721639474AA9BBDE69EBF0\":{n:\"Play Demo (PD)\",c:1},\"5C3A6D27C026F59A96B7AF91E8B1BF26\":{n:\"PlayAround Demo (PlayAround) (1982)\"},\"103E9D616328969F5D7B4E0A381B25D5\":{n:\"Playfield Illustration and Logo Demo (2001) (Jake Patterson) (PD)\"},CBA56E939252B05DF7B7DE87307D12CA:{n:\"Playfield Text Demo (2001) (Roger Williams)\"},\"8BBFD951C89CC09C148BFABDEFA08BEC\":{n:\"Pleiades (1983) (UA Limited) (Prototype)\",c:1},\"9AFDFE1CFF7F37F1C971FE3F0C900606\":{n:\"Plug Attack (Funvision)\"},\"7C4A499D343FCA0CEF2D59DD16AF621A\":{n:\"Poker Card Demo (PD)\"},D74A81FCD89C5CF0BD4C88EB207EBD62:{n:\"Poker Squares (V0.00a) (2001) (B. Watson)\"},\"12D7E0D6B187889F8D150BF7034D1DB2\":{n:\"Poker Squares (V0.0e) (2001) (B. Watson)\"},E879B7093AC4CFAD74C88D636CA97D00:{n:\"Poker Squares (V0.0f) (2001) (B. Watson)\"},\"6E7ED74082F39AD4166C823765A59909\":{n:\"Poker Squares (V0.14) (2001) (B. Watson)\"},\"78297DB7F416AF3052DD793B53FF014E\":{n:\"Poker Squares (V0.17) (2001) (B. Watson)\"},\"54785FA29E28AAE6038929BA29D33D38\":{n:\"Poker Squares (V0.19) (2001) (B. Watson)\"},\"675AE9C23FA1AAE376CEA86CAD96F9A5\":{n:\"Poker Squares (V0.25) (2001) (B. Watson)\"},CCCFE9E9A11B1DAD04BEBA46EEFB7351:{n:\"Poker Squares (V0.25) (PAL) (2001) (B. Watson)\"},\"8C136E97C0A4AF66DA4A249561ED17DB\":{n:\"Poker Squares (V0.27) (2001) (B. Watson)\"},\"08D60A58A691C7F690162850302DC0E1\":{n:\"Poker Squares (V0.27) (PAL) (2001) (B. Watson)\"},EA832E2CB6AAE6F525F07452C381FA48:{n:\"Polar to Cartesian and VV (2001) (Roger Williams)\"},\"8953BC11352D794431D3303E31D3B892\":{n:\"Polaris (02-17-1983) (Tigervision) (Prototype) (4K)\"},\"87BEA777A34278D29B3B6029833C5422\":{n:\"Polaris (1983) (Thomas Jentzsch)\"},\"44F71E70B89DCC7CF39DFD622CFB9A27\":{n:\"Polaris (1983) (Tigervision)\"},\"203049F4D8290BB4521CC4402415E737\":{n:\"Polaris (1983) (Tigervision) (PAL)\"},\"9048CCB7E0802CD8FA5BFC2609F292D8\":{n:\"Polaris (1983) (Tigervision) (Prototype)\"},\"7F0209CFCC3D181715463F4D6451CECF\":{n:\"Pole Position (05-15-1983) (Atari) (Prototype)\"},A4FF39D513B993159911EFE01AC12EBA:{n:\"Pole Position (1983) (Atari)\"},B56264F738B2EB2C8F7CF5A2A75E5FDC:{n:\"Pole Position (1983) (Atari) (PAL)\"},\"25B52BF8DD215BCBD59C9ABDB55C44F8\":{n:\"Pole Position (1983) (Atari) (PAL) [a]\"},\"5F39353F7C6925779B0169A87FF86F1E\":{n:\"Pole Position (1983) (Atari) [a]\"},\"3225676F5C0C577AECCFAA7E6BEDD765\":{n:\"Pole Position (1983) (CCE)\"},\"5DA8FD0B5ED33A360BFF37F8B5D0CD58\":{n:\"Pole Position (Tron)\"},EE28424AF389A7F3672182009472500C:{n:\"Polo (1978) (Atari) (Prototype)\"},\"14B1E30982962C72F426E2E763EB4274\":{n:\"Polo (1978) (Atari) (Prototype) (4K)\"},A83B070B485CF1FB4D5A48DA153FDF1A:{n:\"Pompeii (1983) (Apollo) (Prototype)\"},\"668DC528B7EA9345140F4FCFBECF7066\":{n:\"Pooyan (1983) (Gakken) (PAL)\"},\"4799A40B6E889370B7EE55C17BA65141\":{n:\"Pooyan (1983) (Konami)\"},F70E3F3BB2D19EC2AAEC8F78DC43744F:{n:\"Pooyan (Jone Yuan) (Hack)\"},\"89AFFF4A10807093C105740C73E9B544\":{n:\"Pooyan (Unknown) (PAL)\"},C7F13EF38F61EE2367ADA94FDCC6D206:{n:\"Popeye (1983) (Parker Bros)\",c:1},E9CB18770A41A16DE63B124C1E8BD493:{n:\"Popeye (1983) (Parker Bros) (PAL)\",c:1},F93D7FEE92717E161E6763A88A293FFA:{n:\"Porky's (1983) (20th Century Fox)\"},\"4A5FDDF89801336637AC8E57A7C9A881\":{n:\"Power Play Arcade Video Game Album IV (1984) (Amiga) (Prototype)\"},BBF8C7C9ED280151934AABE138E41BA7:{n:\"Power Play Arcade Video Game Album V (1984) (Amiga) (Prototype)\"},\"97D079315C09796FF6D95A06E4B70171\":{n:\"Pressure Cooker (1983) (Activision)\"},\"525EA747D746F3E80E3027720E1FA7AC\":{n:\"Pressure Cooker (1983) (Activision) (PAL)\"},D57913088E0C49AC3A716BF9837B284F:{n:\"Pressure Cooker (1983) (Activision) (PAL) [a]\"},\"027A59A575B78860AED780B2AE7D001D\":{n:\"Pressure Cooker (CCE)\"},DE1A636D098349BE11BBC2D090F4E9CF:{n:\"Pressure Gauge (Hozer Video Games)\"},\"6A03C28D505BAB710BF20B954E14D521\":{n:\"Pressure Gauge 2 Beta (Hozer Video Games)\"},EF3A4F64B6494BA770862768CAF04B86:{n:\"Private Eye (1983) (Activision)\"},\"1266B3FD632C981F3EF9BDBF9F86CE9A\":{n:\"Private Eye (1983) (Activision) (PAL)\"},F9CEF637EA8E905A10E324E582DD39C2:{n:\"Private Eye (CCE)\"},\"22F6B40FC82110D68E50A1208AE0BB97\":{n:\"Purple Bar Demo (PD)\"},\"9CA2DEB61318EBA4FB784D4BF7441D8B\":{n:\"Purple Bar Demo 2 (PD)\"},\"6E19428387686A77D8C8D2F731CB09E0\":{n:\"Purple Cross Demo (PD)\"},CFF1E9170BDBC29859B815203EDF18FA:{n:\"Push (V0.01) (1998) (AD)\",c:1},B7E459D5416EEB196AAA8E092DB14463:{n:\"Push (V0.02) (1998) (AD)\"},C482F8EEBD45E0B8D479D9B71DD72BB8:{n:\"Push (V0.03) (1998) (AD)\",c:1},BEFCE0DE2012B24FD6CB8B53C17C8271:{n:\"Push (V0.03) (No Illegal Opcodes) (1998) (AD)\"},\"0375F589F7DA06D2D2BE532E0D4D4B94\":{n:\"Push (V0.04) (2001) (AD)\"},\"96F806FC62005205D851E758D050DFCA\":{n:\"Push (V0.05) (2001) (AD)\"},\"9D2F05D0FE8B2DFCF770B02EDA066FC1\":{n:\"Push (V0.06) (2001) (AD)\"},\"9F93734C68F6479EB022CAB40814142E\":{n:\"Push (V0.07) (2001) (AD)\"},\"78963290052FD17C6C7998305AB3A6A0\":{n:\"Push (V0.08) (2001) (AD)\"},\"679D30C7886B283CBE1DB4E7DBE5F2A6\":{n:\"Puzzle (Colin Hughes) (PD)\"},\"3FF5165378213DAB531FFA4F1A41AE45\":{n:\"Pygmy (1983) (Quelle) (PAL)\"},\"6FC0176CCF53D7BCE249AEB56D59D414\":{n:\"Pyramid War (Rainbow Vision) (PAL)\"},\"37FD7FA52D358F66984948999F1213C5\":{n:\"Pyramid War (Rainbow Vision) (PAL) [a2]\"},\"8B40A9CA1CFCD14822E2547EAA9DF5C1\":{n:\"Q-bert (1983) (Parker Bros) (PAL)\"},\"1EDE4F365CE1386D58F121B15A775E24\":{n:\"Q-bert (1983) (Parker Bros) (PAL) [a]\"},\"484B0076816A104875E00467D431C2D2\":{n:\"Q-bert (1987) (Atari)\"},EB6D6E22A16F30687ADE526D7A6F05C5:{\nn:\"Q-bert (1987) (Atari) (PAL)\"},A91D0858A52DE3A2E6468437212D93E8:{n:\"Q-bert (208 in 1) (Unknown) (PAL)\"},\"517592E6E0C71731019C0CEBC2CE044F\":{n:\"Q-bert's Qubes (1984) (Parker Bros)\"},B15026B43C6758609667468434766DD8:{n:\"Qb (0.06) (Retroactive)\",c:1},\"6803FA7C2C094B428B859A58DC1DD06A\":{n:\"Qb (0.11) (Retroactive)\",c:1},\"5A5390F91437AF9951A5F8455B61CD43\":{n:\"Qb (0.11) (Retroactive) (PAL)\",c:1},\"376944889DCFA96C73D3079F308E3D32\":{n:\"Qb (0.11) (Retroactive) (Stella)\",c:1},\"292A0BB975B2587F9AC784C960E1B453\":{n:\"Qb (05-02-2001) (AD)\",c:1},D0E9BEB2347595C6C7D158E9D83D2DA8:{n:\"Qb (2.00) (Retroactive)\",c:1},C866C995C0D2CA7D017FEF0FC0C2E268:{n:\"Qb (2.00) (Retroactive) (PAL)\",c:1},F33F1D0F7819C74148DACB48CBF1C597:{n:\"Qb (2.00) (Retroactive) (Stella)\",c:1},\"2E0AED5BB619EDCEFA3FAFB4FBE7C551\":{n:\"Qb (2.06) (Retroactive) (NTSC)\",c:1},\"05EB4347F0EC8F4783983CA35FFD8D1B\":{n:\"Qb (2.06) (Retroactive) (PAL)\",c:1},E800E4AEC7C6C54C9CF3DB0D1D030058:{n:\"Qb (2.06) (Retroactive) (Stella)\",c:1},\"3A51A6860848E36E6D06FFE01B71FB13\":{n:\"Qb (2.07) (Retroactive) (NTSC)\",c:1},FAE0B86934A7C5A362281DFFEBDB43A0:{n:\"Qb (2.07) (Retroactive) (PAL)\",c:1},CEA9F72036DC6F7AF5EFF52459066290:{n:\"Qb (2.07) (Retroactive) (Stella)\",c:1},\"67BD3D4DC5AC6A42A99950B4245BDC81\":{n:\"Qb (2.11) (Retroactive)\",c:1},\"283DEE88F295834C4C077D788F151125\":{n:\"Qb (2.11) (Retroactive) (PAL)\",c:1},\"2808DC745FF4321DC5C8122ABEF6711F\":{n:\"Qb (2.11) (Retroactive) (Stella)\",c:1},\"35163B56F4A692A232AE96AD3E23310F\":{n:\"Qb (2.12) (Retroactive)\",c:1},B3017E397F74EFD53CAF8FAE0A38E3FE:{n:\"Qb (2.12) (Retroactive) (PAL)\",c:1},\"6E5D5BA193D2540AEC2E847AAFB2A5FB\":{n:\"Qb (2.14) (Retroactive) (NTSC)\",c:1},\"4F634893D54E9CABE106E0EC0B7BDCDF\":{n:\"Qb (2.14) (Retroactive) (PAL)\",c:1},\"52E1954DC01454C03A336B30C390FB8D\":{n:\"Qb (2.14) (Retroactive) (Stella)\",c:1},AC53B83E1B57A601EEAE9D3CE1B4A458:{n:\"Qb (2.15) (Retroactive) (NTSC)\",c:1},\"9281ECCD7F6EF4B3EBDCFD2204C9763A\":{n:\"Qb (2.15) (Retroactive) (PAL)\",c:1},\"34E37EAFFC0D34E05E40ED883F848B40\":{n:\"Qb (2.15) (Retroactive) (Stella)\",c:1},\"2D69A5F23784F1C2230143292A073B53\":{n:\"Qb (Fixed background animation) (2001) (AD)\",c:1},\"17512D0C38F448712F49F36F9D185C4E\":{n:\"Qb (Release Candidate #1) (Retroactive)\",c:1},\"687C23224E26F81C56E431C24FAEA36D\":{n:\"Qb (Simple Background Animation) (2001) (AD)\",c:1},\"3F01BD6D059396F495A4CDE7DE0AB180\":{n:\"Qb (Special Edition) (NTSC) (Retroactive)\",c:1},F49A34F1FDD7DC147CBF96CE2CE71B76:{n:\"Qb (Special Edition) (PAL) (Retroactive)\",c:1},E01E00504E6D4B88FA743C0BBE8A96E5:{n:\"Qb (Special Edition, some bugfixes) (Retroactive)\",c:1},D787EC6785B0CCFBD844C7866DB9667D:{n:\"Qb (V0.04) (2001) (Retroactive)\",c:1},\"3C4A6F613CA8BA27CE9E43C6C92A3128\":{n:\"Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)\",c:1},CF0C593C563C84FDAF0F741ADB367445:{n:\"Qb (V0.05) (2001) (Retroactive)\",c:1},\"35FA32256982774A4F134C3347882DFF\":{n:\"Qb (V0.05) (Macintosh) (2001) (Retroactive)\",c:1},\"8712CCEEC5644AACC2C21203D9EBE2EC\":{n:\"Qb (V0.10) (NTSC) (2001) (Retroactive)\",c:1},\"4233EB824C2B4811ABEF9B6D00355AE9\":{n:\"Qb (V0.10) (PAL) (2001) (Retroactive)\",c:1},D010E3DFE7366E47561C088079A59439:{n:\"Qb (V0.10) (Stella) (2001) (Retroactive)\",c:1},\"0906C6E0E4BDA9C10CFA4C5FC64D2F4B\":{n:\"Qb (V0.12) (NTSC) (2001) (Retroactive)\",c:1},AE682886058CD6981C4B8E93E7B019CF:{n:\"Qb (V0.12) (PAL) (2001) (Retroactive)\",c:1},CDC1A5C61D7488EADC9ABA36166B253D:{n:\"Qb (V0.12) (Stella) (2001) (Retroactive)\",c:1},\"8B504B417C8626167A7E02F44229F0E7\":{n:\"Qb (V1.00) (NTSC) (2001) (Retroactive)\",c:1},\"8FFFC8F15BB2E6D24E211884A5479AA5\":{n:\"Qb (V1.00) (PAL) (2001) (Retroactive)\",c:1},\"7BC4FD254EC8C0A25A13F02FD3F762FF\":{n:\"Qb (V1.00) (Stella) (2001) (Retroactive)\",c:1},\"8CCAA442D26B09139685F5B22BF189C4\":{n:\"Qb (V1.01) (NTSC) (2001) (Retroactive)\",c:1},ABB740BEA0A6842831B4F53112FB8145:{n:\"Qb (V1.01) (PAL) (2001) (Retroactive)\",c:1},AE0D4F3396CB49DE0FABDFF03CB2756F:{n:\"Qb (V2.02) (PAL) (2001) (Retroactive)\",c:1},C504A71C411A601D1FC3173369CFDCA4:{n:\"Qb (V2.02) (Stella) (2001) (Retroactive)\",c:1},\"693137592A7F5CCC9BAAE2D1041B7A85\":{n:\"Qb (V2.02) (Stella) (2001) (Retroactive) [a1]\",c:1},\"98CCD15345B1AEE6CAF51E05955F0261\":{n:\"Qb (V2.03) (NTSC) (2001) (Retroactive)\",c:1},\"4C030667D07D1438F0E5C458A90978D8\":{n:\"Qb (V2.03) (PAL) (2001) (Retroactive)\",c:1},CE64812EB83C95723B04FB56D816910B:{n:\"Qb (V2.04) (NTSC) (2001) (Retroactive)\",c:1},EB9712E423B57F0B07CCD315BB9ABF61:{n:\"Qb (V2.04) (PAL) (2001) (Retroactive)\",c:1},\"4DD6C7AB9EF77F2B4950D8FC7CD42EE1\":{n:\"Qb (V2.04) (Stella) (2001) (Retroactive)\",c:1},\"659A20019DE4A23C748EC2292EA5F221\":{n:\"Qb (V2.05) (NTSC) (2001) (Retroactive)\",c:1},C92CFA54B5D022637FDCBDC1EF640D82:{n:\"Qb (V2.05) (PAL) (2001) (Retroactive)\",c:1},DCBA0E33AA4AED67630A4B292386F405:{n:\"Qb (V2.08) (Half Speed Version) (NTSC) (2001) (Retroactive)\",c:1},\"57A66B6DB7EFC5DF17B0B0F2F2C2F078\":{n:\"Qb (V2.08) (NTSC) (2001) (Retroactive)\",c:1},\"876A953DAAE0E946620CF05ED41989F4\":{n:\"Qb (V2.08) (PAL) (2001) (Retroactive)\",c:1},\"318046AE3711C05FD16E479B298E5FCC\":{n:\"Qb (V2.08) (Stella) (2001) (Retroactive)\",c:1},E2389C0BE5B5B84E0D3CA36EC7E67514:{n:\"Qb (V2.09) (NTSC) (2001) (Retroactive)\",c:1},\"008543AE43497AF015E9428A5E3E874E\":{n:\"Qb (V2.09) (PAL) (2001) (Retroactive)\",c:1},\"67CE6CDF788D324935FD317D064ED842\":{n:\"Qb (V2.09) (Stella) (2001) (Retroactive)\",c:1},\"94E4C9B924286038527F49CDC20FDA69\":{n:\"Qb (V2.12) (Stella) (2001) (Retroactive)\",c:1},\"4FAE08027365D31C558E400B687ADF21\":{n:\"Qb (V2.17) (NTSC) (2001) (Retroactive)\",c:1},\"8388D6FE59C38C0B3A6AB2C58420036A\":{n:\"Quadrun (12-06-1982) (Atari) (Prototype)\"},\"024365007A87F213CBE8EF5F2E8E1333\":{n:\"Quadrun (1983) (Atari)\"},\"392D34C0498075DD58DF0CE7CD491EA2\":{n:\"Quadrun (1983) (Atari) (Prototype)\"},\"955C408265AD6994F61F9B66657BBAE9\":{n:\"Quadrun (Video Conversion) (Fabrizio Zavagli)\"},\"152C253478B009C275E18CD731B48561\":{n:\"Quest (11-10-2002) (Chris Larkin)\"},A0675883F9B09A3595DDD66A6F5D3498:{n:\"Quest for Quintana Roo (1989) (Telegames)\"},F736864442164B29235E8872013180CD:{n:\"Quest for Quintana Roo (1989) (Telegames) (PAL)\"},\"7EBA20C2291A982214CC7CBE8D0B47CD\":{n:\"Quick Step! (1983) (Imagic)\"},E72EE2D6E501F07EC5E8A0EFBE520BEE:{n:\"Quick Step! (1983) (Imagic) (PAL)\"},\"84290E333FF7567C2380F179430083B8\":{n:\"Quick Step! (1983) (Imagic) (PAL) [a]\"},\"7836794B79E8060C2B8326A2DB74EEF0\":{n:\"RIOT RAM Test (26-11-2002) (Dennis Debro)\"},\"6CCD8CA17A0E4429B446CDCB66327BF1\":{n:\"RPG Engine (12-05-2003) (Paul Slocum) (PD)\",c:1},\"9C6D65BD3B477AACE0376F705B354D68\":{n:\"RPG Kernal (18-04-2003) (Paul Slocum) (PD)\",c:1},\"0F341D1F4E144E3163D9A5FC5A662B79\":{n:\"RUN Platform Demo (PD)\",c:1},\"2E5B184DA8A27C4D362B5A81F0B4A68F\":{n:\"Rabbit Transit (08-29-1983) (Atari) (Prototype)\"},FB4CA865ABC02D66E39651BD9ADE140A:{n:\"Rabbit Transit (1983) (Arcadia)\"},\"7481F0771BFF13885B2FF2570CF90D7B\":{n:\"Rabbit Transit (1983) (Arcadia) (PAL)\"},A779B9FA02C62D00D7C31ED51268F18A:{n:\"Rabbit Transit (1983) (Arcadia) [a]\"},CD399BC422992A361BA932CC50F48B65:{n:\"Rabbit Transit (Preview) (1983) (Arcadia)\"},\"1A23540D91F87584A04F184304A00648\":{n:\"Race Demo (PD)\"},AAB840DB22075AA0F6A6B83A597F8890:{n:\"Racing Car (1983) (Home Vision) (PAL)\"},\"4DF9D7352A56A458ABB7961BF10ABA4E\":{n:\"Racing Car (Unknown)\"},CBCED209DD0575A27212D3EEE6AEE3BC:{n:\"Racquetball (1981) (Apollo)\",c:1},\"4F7B07EC2BEF5CCFFE06403A142F80DB\":{n:\"Racquetball (1981) (Apollo) (PAL)\",c:1},A20D931A8FDDCD6F6116ED21FF5C4832:{n:\"Racquetball (1981) (Apollo) [a]\",c:1},F0D393DBF4164A688B2346770C9BBD12:{n:\"Racquetball (Unknown)\",c:1},\"97933C9F20873446E4C1F8A4DA21575F\":{n:\"Racquetball (Unknown) (PAL)\",c:1},\"56300ED31FEF018BD96768CCC982F7B4\":{n:\"Rad Action Pak - Kung-Fu Master, Freeway, Frostbite (1990) (HES) (PAL)\"},\"247FA1A29AD90E64069EE13D96FEA6D6\":{n:\"Radar (1983) (CCE)\"},\"74F623833429D35341B7A84BC09793C0\":{n:\"Radar (Zellers)\"},BAF4CE885AA281FD31711DA9B9795485:{n:\"Radar Lock (1989) (Atari)\"},\"04856E3006A4F5F7B4638DA71DAD3D88\":{n:\"Radar Lock (1989) (Atari) (PAL)\"},\"200309C8FBA0F248C13751ED4FC69BAB\":{n:\"Radial Pong - Version 1 (Jeffry Johnston) (PD)\"\n},\"0F14C03050B35D6B1D8850B07578722D\":{n:\"Radial Pong - Version 10 (Jeffry Johnston) (PD)\"},\"43F33C6DFDEAF5138CE6E6968AD7C5CE\":{n:\"Radial Pong - Version 11 (Jeffry Johnston) (PD)\"},\"32199271DC980EB31A2CC96E10A9E244\":{n:\"Radial Pong - Version 12 (Jeffry Johnston) (PD)\"},\"6337927AD909AA739D6D0044699A916D\":{n:\"Radial Pong - Version 2 (Jeffry Johnston) (PD)\"},F1E375D921858467166E53BCEC05803F:{n:\"Radial Pong - Version 3 (Jeffry Johnston) (PD)\"},\"481F9A742052801CC5F3DEFB41CB638E\":{n:\"Radial Pong - Version 4 (Jeffry Johnston) (PD)\"},FD9B321CEE5FBB32C39BA3CA5D9EC7CF:{n:\"Radial Pong - Version 5 (Jeffry Johnston) (PD)\"},\"64B8E19C767191CCDC97ACC6904C397B\":{n:\"Radial Pong - Version 6 (Jeffry Johnston) (PD)\"},\"2450DFA1DF70D12B60683185775EFED8\":{n:\"Radial Pong - Version 7 (Jeffry Johnston) (PD)\"},\"9F9EE0F60C119C831E80694B6678CA1A\":{n:\"Radial Pong - Version 8 (Jeffry Johnston) (PD)\"},\"05824FCBE615DBCA836D061A140A50E0\":{n:\"Radial Pong - Version 9 (Jeffry Johnston) (PD)\"},\"92A1A605B7AD56D863A56373A866761B\":{n:\"Raft Rider (1982) (U.S. Games)\"},\"438968A26B7CFE14A499F5BBBBF844DB\":{n:\"Raft Rider (208 in 1) (Unknown) (PAL)\"},\"1E750000AF77CC76232F4D040F4AB060\":{n:\"Raft Rider (Jone Yuan)\"},\"025668E36A788E8AF8AC4F1BE7E72043\":{n:\"Raiders of the Lost Ark (06-14-82) (Atari) (Prototype)\"},F724D3DD2471ED4CF5F191DBB724B69F:{n:\"Raiders of the Lost Ark (1982) (Atari)\"},\"1CAFA9F3F9A2FCE4AF6E4B85A2BBD254\":{n:\"Raiders of the Lost Ark (1982) (Atari) (PAL)\"},CB96B0CF90AB7777A2F6F05E8AD3F694:{n:\"Rainbow Invaders\"},\"8F98519A91DBBF4864F135A10050D9ED\":{n:\"Rainbow Invaders (non-playable demo) (PD)\"},\"0B577E63B0C64F9779F315DCA8967587\":{n:\"Raketen-Angriff (Ariola) (PAL)\"},\"7096A198531D3F16A99D518AC0D7519A\":{n:\"Ram It (1982) (Telesys)\"},\"63E42D576800086488679490A833E097\":{n:\"Ram It (1982) (Telesys) (PAL)\"},F2F2CB35FDEF063C966C1F5481050EA2:{n:\"Ram It (Unknown) (PAL)\"},\"9EEB40F04A27EFB1C68BA1D25E606607\":{n:\"Rambo II (2003) (Kyle Pittman) (Hack)\"},\"2EDA6A49A49FCB2B674EA9E160B6A617\":{n:\"Rambo in Afghanistan (Kyle Pittman) (Hack)\"},\"5E1B4629426F4992CF3B2905A696E1A7\":{n:\"Rampage! (1989) (Activision)\"},A11099B6EC24E4B00B8795744FB12005:{n:\"Rampage! (1989) (Activision) (PAL)\"},\"9F8FAD4BADCD7BE61BBD2BCAEEF3C58F\":{n:\"Reactor (1982) (Parker Bros)\",c:1},\"4904A2550759B9B4570E886374F9D092\":{n:\"Reactor (1982) (Parker Bros) (PAL)\",c:1},C6DB733E0B108C2580A1D65211F06DBF:{n:\"RealSports Baseball (07-09-1982) (Atari) (Prototype)\"},EB634650C3912132092B7AEE540BBCE3:{n:\"RealSports Baseball (1982) (Atari)\",c:1},\"20D4457BA22517253FCB62967AF11B37\":{n:\"RealSports Baseball (1982) (Atari) (Prototype)\"},\"8A183B6357987DB5170C5CF9F4A113E5\":{n:\"RealSports Basketball (1983) (Atari) (Prototype) (PAL)\"},\"5524718A19107A04EC3265C93136A7B5\":{n:\"RealSports Basketball (Thomas Jentzsch)\"},\"3177CC5C04C1A4080A927DFA4099482B\":{n:\"RealSports Boxing (1987) (Atari)\"},\"4ABB4C87A4C5F5D0C14EAD2BB36251BE\":{n:\"RealSports Boxing (1987) (Atari) (PAL)\"},\"7AD257833190BC60277C1CA475057051\":{n:\"RealSports Football (1982) (Atari)\",c:1},\"277FA4B9A6BB7A8DCEA2C5F38A4C25F0\":{n:\"RealSports Football (1982) (Atari) (Prototype)\",c:1},\"08F853E8E01E711919E734D85349220D\":{n:\"RealSports Soccer (1983) (Atari)\"},B9336ED6D94A5CC81A16483B0A946A73:{n:\"RealSports Soccer (1983) (Atari) (PAL)\",c:1},\"6272F348A9A7F2D500A4006AA93E0D08\":{n:\"RealSports Soccer (1983) (Atari) (PAL) [a]\",c:1},\"6706A00F9635508CFEDA20639156E66E\":{n:\"RealSports Soccer (1983) (Atari) (Prototype)\"},F7856E324BC56F45B9C8E6FF062EC033:{n:\"RealSports Soccer (1983) (Atari) [no opening tune]\",c:1},C5DD8399257D8862F3952BE75C23E0EB:{n:\"RealSports Tennis (1982) (Atari) (Prototype)\"},DAC5C0FE74531F077C105B396874A9F1:{n:\"RealSports Tennis (1983) (Atari)\"},\"4E66C8E7C670532569C70D205F615DAD\":{n:\"RealSports Tennis (1983) (Atari) (PAL)\"},\"13AA1F9AC4249947E4AF61319D9A08F2\":{n:\"RealSports Tennis (1983) (Atari) (PAL) [a1]\"},C7EAB66576696E11E3C11FFFF92E13CC:{n:\"RealSports Tennis (1983) (Atari) (PAL) [a2]\"},\"435FD469F088468C4D66BE6B5204D887\":{n:\"RealSports Tennis (1983) (Atari) (PAL) [a]\"},AED0B7BD64CC384F85FDEA33E28DAF3B:{n:\"RealSports Volleyball (1982) (Atari)\"},\"4CA0959F846D2BEADA18ECF29EFE137E\":{n:\"RealSports Volleyball (1982) (Atari) (PAL)\"},A8D4A9500B18B0A067A1F272F869E094:{n:\"Red And White Checkerboard Demo (PD)\"},\"13DFB095E519A555A5B60B7D9D7169F9\":{n:\"Red Line Demo (PD)\"},\"874C76726F68C166FCFAC48CE78EEF95\":{n:\"Red Pong Number 2 Demo (PD)\",c:1},\"79B649FB812C50B4347D12E7DDBB8400\":{n:\"Red Pong Number 2 Demo 2 (PD)\",c:1},DD1422FFD538E2E33B339EBEEF4F259D:{n:\"Red Vs. Blue (1981) (Atari) (Prototype)\"},EB9F8B84C193D9D93A58FCA112AA39ED:{n:\"Register Twiddler Demo (PD)\"},\"7450AE4E10BA8380C55B259D7C2B13E8\":{n:\"Register Twiddler Demo 2 (PD)\"},\"8A9D874A38608964F33EC0C35CAB618D\":{n:\"Rescue Bira Bira (Chris Cracknell)\",c:1},\"60A61DA9B2F43DD7E13A5093EC41A53D\":{n:\"Rescue Terra I (1982) (VentureVision)\"},\"42249EC8043A9A0203DDE0B5BB46D8C4\":{n:\"Resgate Espacial (CCE)\",c:1},\"5E1CD11A6D41FC15CF4792257400A31E\":{n:\"Return of Mario Bros (Philip R. Frey) (Hack)\"},\"0B01909BA84512FDAF224D3C3FD0CF8D\":{n:\"Revenge of the Apes (Hack)\"},\"96BCB3D97CE4FF7586326D183AC338A2\":{n:\"Revenge of the Apes (Hack) [h2]\"},\"4F64D6D0694D9B7A1ED7B0CB0B83E759\":{n:\"Revenge of the Beefsteak Tomatoes (1982) (20th Century Fox)\"},\"6468D744BE9984F2A39CA9285443A2B2\":{n:\"Reversi (32 in 1) (1988) (Atari) (PAL)\"},A995B6CBDB1F0433ABC74050808590E6:{n:\"Riddle of the Sphinx (1982) (Imagic)\"},\"083E7CAE41A874B2F9B61736C37D2FFE\":{n:\"Riddle of the Sphinx (1982) (Imagic) (PAL)\"},\"3D2652CBEA462A886A41791DD7C8D073\":{n:\"Ritorno dei frattelli di Mario (Mario Bros Hack)\"},\"31512CDFADFD82BFB6F196E3B0FD83CD\":{n:\"River Patrol (1984) (Tigervision)\"},\"393948436D1F4CC3192410BB918F9724\":{n:\"River Raid (1982) (Activision)\",l:\"RIVER RAID\",lc:\"#ececec #833\"},\"291CC37604BC899E8E065C30153FC4B9\":{n:\"River Raid (1982) (Activision) (16K)\",l:\"RIVER RAID\"},BCCB4E2CFAD5EFC93F6D55DC992118CE:{n:\"River Raid (1982) (Activision) (8K)\",l:\"RIVER RAID\"},\"927D422D6335018DA469A9A07CD80390\":{n:\"River Raid (1982) (Activision) (PAL)\",l:\"RIVER RAID\"},\"33ED6DFAC4B9EA2F81F778CEDDBB4A75\":{n:\"River Raid (1982) (SpkSoft) [t1]\",l:\"RIVER RAID\"},\"59F596285D174233C84597DEE6F34F1F\":{n:\"River Raid (1983) (CCE)\",l:\"RIVER RAID\"},\"39D36366AE7E6DFD53393FB9EBAB02A0\":{n:\"River Raid (1983) (CCE) [a]\",l:\"RIVER RAID\"},DA5096000DB5FDAA8D02DB57D9367998:{n:\"River Raid (1983) (Digitel)\",l:\"RIVER RAID\"},\"01B09872DCD9556427761F0ED64AA42A\":{n:\"River Raid (1984) (Galaga Games)\",l:\"RIVER RAID\"},FADB89F9B23BEB4D43A7895C532757E2:{n:\"River Raid (1984) (Galaga Games) (PAL)\",l:\"RIVER RAID\"},\"8C8B15B3259E60757987ED13CDD74D41\":{n:\"River Raid (1984) (Supergame)\",l:\"RIVER RAID\"},B1C14B5AC896400CC91C8E5DD67ACB59:{n:\"River Raid (208 in 1) (Unknown) (PAL) (Hack)\"},A539B9FD1BA57E46442B3E9351E6383B:{n:\"River Raid (208 in 1) (Unknown) (PAL) (Hack) [a]\"},\"8C941FA32C7718A10061D8C328909577\":{n:\"River Raid (Digivision)\",l:\"RIVER RAID\"},A94528AE05DD051894E945D4D2349B3B:{n:\"River Raid (Genus)\",l:\"RIVER RAID\"},CD4423BD9F0763409BAE9111F888F7C2:{n:\"River Raid (Jone Yuan)\",l:\"RIVER RAID\"},C29D17EEF6B0784DB4586C12CB5FD454:{n:\"River Raid (Jone Yuan) (Hack)\"},\"39FE316952134B1277B6A81AF8E05776\":{n:\"River Raid (Robby)\",l:\"RIVER RAID\"},EDF69B123E06EAF8663CC78D8AEBA06E:{n:\"River Raid (SpkSoft 98) [h1]\",l:\"RIVER RAID\"},DD92D6AD50976F881D86B52D38616118:{n:\"River Raid (SpkSoft) [h1]\",l:\"RIVER RAID\"},D5E5B3EC074FFF8976017EF121D26129:{n:\"River Raid (Star Game)\",l:\"RIVER RAID\"},\"1E89F722494608D6EA15A00D99F81337\":{n:\"River Raid (Unknown) (PAL)\",l:\"RIVER RAID\"},\"90F502CBF4438A95F69F848CEF36EB64\":{n:\"River Raid II (1985) (Digitel)\"},AB56F1B2542A05BEBC4FBCCFC4803A38:{n:\"River Raid II (1988) (Activision)\"},B049FC8AC50BE7C2F28418817979C637:{n:\"River Raid II (1988) (Activision) (PAL)\"},DEB39482E77F984D4CE73BE9FD8ADABD:{n:\"River Raid II (1988) (Activision) [a]\"},F2D4D6187903CAC2D5EA8ED90DAD120D:{n:\"River Raid II (Digimax)\"},D5F965C159E26A1FB49A22A47FBD1DD0:{n:\"River Raid II (Supergame)\"},FBB4F3DEBF48DC961B559384467F2057:{\nn:\"River Raid III (1985) (Digitel)\"},\"4E86866D9CDE738D1630E2E35D7288CE\":{n:\"River Raid III (Supergame)\"},\"304512528A5530A9361E8A231ED9A6DE\":{n:\"River Raid Plus (Thomas Jentzsch) (Hack)\"},C74BFD02C7F1877BBE712C1DA5C4C194:{n:\"River Raid Tanks (Thomas Jentzsch) (Hack)\"},\"322B29E84455AA41E7CC9AF463BFFA89\":{n:\"Road Runner (06-25-1984) (Atari) (Prototype)\"},CE5CC62608BE2CD3ED8ABD844EFB8919:{n:\"Road Runner (1989) (Atari)\"},C3A9550F6345F4C25B372C42DC865703:{n:\"Road Runner (1989) (Atari) (PAL)\"},\"7D3CDDE63B16FA637C4484E716839C94\":{n:\"Road Runner (CCE)\"},\"0F8043715D66A4BBED394EF801D99862\":{n:\"Robin Hood (1983) (Quelle) (PAL)\"},\"72A46E0C21F825518B7261C267AB886E\":{n:\"Robin Hood (1983) (Xonox)\"},DD7598B8BCB81590428900F71B720EFB:{n:\"Robin Hood (1983) (Xonox) (PAL)\"},DB76F7A0819659D9E585F2CDDE9175C7:{n:\"Robin Hood (1983) (Xonox) (PAL) [a]\"},\"3E1682DDAEC486D8B6B90B527AAA0FC4\":{n:\"Robot City (V0.12) (TJ)\"},F954381F9E0F2009D1AC40DEDD777B1A:{n:\"Robot City (V0.18) (01-09-2002) (TJ)\"},\"97CD63C483FE3C68B7CE939AB8F7A318\":{n:\"Robot City (V0.21) (15-09-2002) (TJ)\"},D82675CE67CAF16AFE5ED6B6FAC8AA37:{n:\"Robot City (V0.23) (13-11-2002) (TJ)\"},\"82337E5FE0F418CA9484CA851DFC226A\":{n:\"Robot City (V1.0) (Alpha) (TJ)\"},\"4251B4557EA6953E88AFB22A3A868724\":{n:\"Robot City (V1.1) (TJ)\"},\"913D5D959B5021F879033C89797BAB5E\":{n:\"Robot Player Graphic (1996) (J.V. Matthews) (PD)\"},\"4F618C2429138E0280969193ED6C107E\":{n:\"Robot Tank (1983) (Activision)\"},F687EC4B69611A7F78BD69B8A567937A:{n:\"Robot Tank (1983) (Activision) (PAL)\"},FBB0151EA2108E33B2DBAAE14A1831DD:{n:\"Robot Tank TV (Thomas Jentzsch) (Hack)\"},\"568371FBAE6F5E5B936AF80031CD8888\":{n:\"Robotfindskitten2600 (26-04-2003) (Jeremy Penner)\"},\"39790A2E9030751D7DB414E13F1B6960\":{n:\"Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a1]\"},D100B11BE34A1E5B7832B1B53F711497:{n:\"Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a2]\"},\"0173675D40A8D975763EE493377CA87D\":{n:\"Roc 'n Rope (1984) (CBS Electronics) (PAL)\"},\"65BD29E8AB1B847309775B0DE6B2E4FE\":{n:\"Roc 'n Rope (1984) (Coleco)\"},D97FD5E6E1DAACD909559A71F189F14B:{n:\"Rocky & Bullwinkle (04-20-1983) (M Network) (Prototype)\"},A89A3E0547D6887279C34ABA4B17A560:{n:\"Rocky & Bullwinkle (1983) (Mattel) (Prototype)\"},DB80D8EF9087AF4764236F7B5649FA12:{n:\"Rocky & Bullwinkle (1983) (Mattel) (Prototype) (4K)\"},\"2F16663B01591539624D0EF52934A17D\":{n:\"Rocky and Bullwinkle\"},\"3F96EB711928A6FAC667C04ECD41F59F\":{n:\"Rodeo Champ (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\"},\"67931B0D37DC99AF250DD06F1C095E8D\":{n:\"Room of Doom (1982) (CommaVid)\",c:1},\"685E9668DC270B6DEEB9CFBFD4D633C3\":{n:\"Room of Doom (1982) (CommaVid) (PAL)\",c:1},A936D80083E99D48752AD15C2B5F7C96:{n:\"Room of Doom (208 in 1) (Unknown) (PAL)\",c:1},CBB0EE17C1308148823CC6DA85BFF25C:{n:\"Rotating Colors Demo 1 (Junkosoft) (PD)\"},C1B038CE5CB6D85E956C5509B0E0D0D8:{n:\"Rotating Colors Demo 2 (Junkosoft) (PD)\"},\"1F2AE0C70A04C980C838C2CDC412CF45\":{n:\"Rubik's Cube (1984) (Atari)\"},\"40B1832177C63EBF81E6C5B61AAFFD3A\":{n:\"Rubik's Cube 3-D (1982) (Atari) (Prototype)\"},B6821AC51C4C1DCB283F01BE2F047DC1:{n:\"Rubik's Cube 3D Demo (25-11-2002) (TJ)\"},B731D35E4AC6B3B47EBA5DD0991F452F:{n:\"Rubik's Cube 3D Demo (Final) (08-01-2003) (TJ)\"},\"6058E40CE79D7434C7F7477B29ABD4A5\":{n:\"Rubik's Cube Demo (23-12-2002) (CT)\"},\"3A35D7F1DC2A33565C8DCA52BAA86BC4\":{n:\"Rubik's Cube Demo 2 (23-12-2002) (CT)\"},\"73B4E8F8B04515D91937510E680214BC\":{n:\"Rubik's Cube Demo 3 (24-12-2002) (CT)\"},\"6847CE70819B74FEBCFD03E99610243B\":{n:\"Ruby Runner 4A50\"},E18ABE87035379C56B435BFE8175077B:{n:\"Rumble 2600 (Grimlock) (Hack)\"},B9B4612358A0B2C1B4D66BB146767306:{n:\"Rush Hour (1983) (Commavid) (Prototype)\"},F3CD0F886201D1376F3ABAB2DF53B1B9:{n:\"Rush Hour (1983) (Commavid) (Prototype)\"},AAD61898633F470CE528E3D7EF3D0ADB:{n:\"Rush Hour (1983) (Commavid) (Prototype) [a1]\"},EBF2DFF78A08733251BF3838F02F7938:{n:\"Rush Hour (1983) (Commavid) (Prototype) [a2]\"},\"3391F7C4C656793F92299F4187E139F7\":{n:\"Rush Hour (1983) (Commavid) (Prototype) [a4]\"},\"8749A0D088DF25218C149DC325ABC7CA\":{n:\"Rush Hour (1983) (Commavid) (Prototype) [a5]\"},C529E63013698064149B9E0468AFD941:{n:\"S.I.PLIX 2 (Hack)\",p:1},\"298387B0637173D2002770A649B4FBCA\":{n:\"S.I.PLIX 2 (Hack) [a]\",p:1},\"17BA72433DD41383065D4AA6DEDB3D91\":{n:\"SCSIcide (09-06-2001) (Joe Grand)\"},\"523F5CBB992F121E2D100F0F9965E33F\":{n:\"SCSIcide (1.30) (CGE 2001 Release) (Joe Grand)\",p:1},\"843435EB360ED72085F7AB9374F9749A\":{n:\"SCSIcide (1.31) (Joe Grand)\",p:1},\"9EFA877A98DD5A075E058214DA428ABB\":{n:\"SCSIcide (1.32) (Hozer Video Games)\",p:1},FECE458A8023A809A5006867FECA40E8:{n:\"SCSIcide (24-02-2001) (Joe Grand) (PD)\"},\"742DE93B8D849220F266B627FBABBA82\":{n:\"SCSIcide (25-02-2001) (Chris Wilkson) (PD)\"},FF87D58125AE517EB7B09A0475A1CCDC:{n:\"SCSIcide (Score Hack 1) (24-02-2001) (Joe Grand) (PD)\"},E9C5D04643855949A23FF29349AF74EA:{n:\"SCSIcide (Score Hack 2) (24-02-2001) (Joe Grand) (PD)\"},\"62921652F6634EB1A0940ED5489C7E18\":{n:\"SCSIcide (V1.09) (2001) (Joe Grand)\",p:1},EAE0C06EE61C63B81CD016096FC901B0:{n:\"SCSIcide (v1.0) (2001) (Joe Grand)\"},\"7991E1797E5E9F311FD957E62D889DFF\":{n:\"SCSIcide (v1.1) (2001) (Joe Grand)\",p:1},\"6538E454B0498AD2BEFE1EF0F87815C0\":{n:\"SCSIcide (v1.2) (2001) (Joe Grand)\",p:1},B1A6C96E9093352106BC335E96CAA154:{n:\"SCSIcide Pre-release 1 (Joe Grand)\"},\"07A3AF1E18B63765B6807876366F5E8A\":{n:\"SCSIcide Pre-release 2 (Joe Grand)\"},D483F65468D9A265661917BAE1A54F3E:{n:\"SCSIcide Pre-release 3 (Joe Grand)\"},\"34340C8EECD1E557314789CC6477E650\":{n:\"SCSIcide Pre-release 4 (Joe Grand)\"},F34DD3B8156AAF113CB621B2E51D90B8:{n:\"SCSIcide Pre-release 5 (Joe Grand)\"},A0028F057D496F22B549FD8DEECC6F78:{n:\"SCSIcide Pre-release 6 (Joe Grand)\"},\"0AC0D491763153FAC75F5337CE32A9D6\":{n:\"SPAM Image Demo (PD)\"},\"504688D49A41BF03D8A955512609F3F2\":{n:\"SWOOPS! (TJ)\",p:1},\"278F14887D601B5E5B620F1870BC09F6\":{n:\"SWOOPS! (v0.96) (TJ)\",p:1},\"5D8F1AB95362ACDF3426D572A6301BF2\":{n:\"SWOOPS! (v0.96) (TJ) (PAL)\",p:1},\"88D8A1ACCAB58CF1ABB043613CF185E9\":{n:\"Sabotage (Ultravison)\"},\"64FAB9D15DF937915B1C392FC119B83B\":{n:\"Saboteur (05-20-1983) (Atari) (Prototype)\"},\"350E0F7B562EC5E457B3F5AF013648DB\":{n:\"Saboteur (06-09-1983) (Atari) (Prototype)\"},\"4E01D9072C500331E65BB87C24020D3F\":{n:\"Saboteur (06-15-1983) (Atari) (Prototype)\"},\"1EC57BBD27BDBD08B60C391C4895C1CF\":{n:\"Saboteur (09-02-1983) (Atari) (Prototype)\"},A4ECB54F877CD94515527B11E698608C:{n:\"Saboteur (12-20-1983) (Atari) (Prototype)\"},E723AD8F406CB258B89681EF4CEF0EFF:{n:\"Sadoom (TJ) (PAL) (Hack)\",p:1},\"81073D0377A2BADEF8D5E74FC44FC323\":{n:\"Sadoom (TJ) (PAL60) (Hack)\",p:1},\"7AB0917107B6EC768A5EBAADF28C497A\":{n:\"Santa's Helper (Hack)\",p:1},\"7BB286CB659D146AF3966D699B51F509\":{n:\"Save Mary! (04-03-1989) (Atari) (Prototype)\"},\"4884B1297500BD1243659E43C7E7579E\":{n:\"Save Mary! (10-24-1991) (Atari) (Prototype) (PAL)\"},\"4D502D6FB5B992EE0591569144128F99\":{n:\"Save Mary! (11-21-1989) (Atari) (Prototype)\"},\"01297D9B450455DD716DB9658EFB2FAE\":{n:\"Save Our Ship (1983) (TechnoVision) (PAL)\"},\"49571B26F46620A85F93448359324C28\":{n:\"Save Our Ship (Unknown)\"},ED1A784875538C7871D035B7A98C2433:{n:\"Save Our Ship (Unknown) (Hack)\"},E377C3AF4F54A51B85EFE37D4B7029E6:{n:\"Save the Whales (1983) (20th Century Fox) (Prototype)\"},\"2516F4F4B811EDE4ECF6FBEB5D54A299\":{n:\"Schiessbude (1983) (Quelle) (PAL)\"},F6F1B27EFC247A0E8D473DDB4269FF9E:{n:\"Schnapp die Apfeldiebe (1983) (Quelle) (PAL)\"},E040DF95A055B18EBDB094E904CB71B2:{n:\"Score Demo (B. Watson)\"},EE67DC0B01746372D2B983D88F48E24F:{n:\"Scroller Demo (02-01-2003) (CT)\"},\"0F2E09C71CC216F79D22A804152BA24B\":{n:\"Scroller Demo (Bob Colbert) (PD)\",c:1},\"0D07D2C1BE1A5EAAEA235A533BCDA781\":{n:\"Scrolling Playfield 1 (Junkosoft) (PD)\"},F6C13E816E58C8C62F82B2C8B91A2D67:{n:\"Scrolling Playfield 2 (Junkosoft) (PD)\"},A6737C81542A99EE71CB5F5FF14703D9:{n:\"Scrolling Playfield 3 (Junkosoft) (PD)\"},\"0D786A41695E5FC8CFFD05A6DBB3F659\":{n:\"Scrolling Playfield With Score (10-02-2003) (Aaron Bergstrom)\"},\"19E761E53E5EC8E9F2FCEEA62715CA06\":{n:\"Scuba Diver (1983) (Panda)\"},\"1BC2427AC9B032A52FE527C7B26CE22C\":{\nn:\"Sea Battle (1983) (M Network)\"},\"624E0A77F9EC67D628211AAF24D8AEA6\":{n:\"Sea Hawk (1983) (Panda)\"},\"3FD53BFEEE39064C945A769F17815A7F\":{n:\"Sea Hawk (CCE)\"},\"8FA47E5242776E841DF7E708B12EB998\":{n:\"Sea Hawk (Genesis)\"},\"07F42847A79E4F5AE55CC03304B18C25\":{n:\"Sea Hawk (Zellers)\"},\"5DCCF215FDB9BBF5D4A6D0139E5E8BCB\":{n:\"Sea Hunt (1987) (Froggo)\"},D8ACAA980CDA94B65066568DD04D9EB0:{n:\"Sea Hunt (CCE)\"},\"68489E60268A5E6E052BAD9C62681635\":{n:\"Sea Monster (1982) (BitCorp) (PAL)\"},DF6A46714960A3E39B57B3C3983801B5:{n:\"Sea Monster (1982) (Puzzy) (PAL)\"},A4B9423877A0B86CA35B52CA3C994AC5:{n:\"Sea Monster (1983) (CCE)\"},\"2124CF92978C46684B6C39CCC2E33713\":{n:\"Sea Monster (Unknown) (PAL)\"},\"74D072E8A34560C36CACBC57B2462360\":{n:\"Seahawk (1982) (Sancho) (PAL)\"},A8C48B4E0BF35FE97CC84FDD2C507F78:{n:\"Seamonster (1982) (Puzzy)\"},\"240BFBAC5163AF4DF5AE713985386F92\":{n:\"Seaquest (1983) (Activision)\"},EBCBC8A181A738E13DF6216E5C329230:{n:\"Seaquest (1983) (Activision) (16K)\"},\"026180BF641FF17D8577C33FACF0EDEA\":{n:\"Seaquest (1983) (Activision) (8K)\"},FD0E5148162E8EC6719445D559F018A9:{n:\"Seaquest (1983) (Activision) (PAL)\"},\"0B24658714F8DFF110A693A2052CC207\":{n:\"Seaquest (1983) (CCE)\"},\"79C27F90591E3FDC7D2ED020ECBEDEB3\":{n:\"Seaquest (1983) (CCE) [a]\"},BC33C685E6FFCED83ABE7A43F30DF7F9:{n:\"Seaquest (1983) (Dynacom)\"},\"94D90F63678E086F6B6D5E1BC6C4C8C2\":{n:\"Seaquest (Digivision)\"},\"10AF8728F975AA35A99D0965DE8F714C\":{n:\"Seaquest (Dinatronic)\"},\"5B6F5BCBBDE42FC77D0BDB3146693565\":{n:\"Seaquest (Unknown) (PAL)\"},\"40EB4E263581B3DFEC6DD8920B68E00F\":{n:\"Seawolf 3 (03-23-1981) (Sears) (Prototype) (PAL)\"},\"605FD59BFEF88901C8C4794193A4CBAD\":{n:\"Secret Agent (1983) (Data Age) (Prototype)\",p:1},FC24A94D4371C69BC58F5245ADA43C44:{n:\"Secret Quest (1989) (Atari)\"},\"2D2C5F0761E609E3C5228766F446F7F8\":{n:\"Secret Quest (1989) (Atari) (PAL)\"},F3DFAE774F3BD005A026E29894DB40D3:{n:\"See Saw (Double-Game Package) (1983) (Quelle) (PAL)\"},\"8DA51E0C4B6B46F7619425119C7D018E\":{n:\"Sentinel (1990) (Atari)\"},\"55ACE3C775F42EB46F08BB1DCA9114E7\":{n:\"Shadow Keep (04-03-2003) (Andrew Towers)\"},D7DD56677E4EC1E6627419478A4A9668:{n:\"Shadow Keep (Fixed) (04-03-2003) (Andrew Towers)\"},\"54F7EFA6428F14B9F610AD0CA757E26C\":{n:\"Shark Attack (1982) (Apollo)\"},\"5069FECBE4706371F17737B0357CFA68\":{n:\"Shark Attack (1982) (Apollo) (PAL)\"},\"90B1799DDDB8BF748EE286D22E609480\":{n:\"Ship Demo (PD)\"},\"1DB3BC4601F22CF43BE7CE015D74F59A\":{n:\"Ship Demo (V 10) (PD)\"},\"85E48D68C8D802E3BA9D494A47D6E016\":{n:\"Ship Demo (V 15) (PD)\"},A0563DD6D8215C38C488FBBD61435626:{n:\"Ship Demo (V 1501) (PD)\"},\"1B1DAAA9AA5CDED3D633BFCBEB06479C\":{n:\"Ship Demo (V 1502) (PD)\"},B5A1A189601A785BDB2F02A424080412:{n:\"Shootin' Gallery (1982) (Imagic)\"},\"557E893616648C37A27AAB5A47ACBF10\":{n:\"Shooting Arcade (01-16-1990) (Atari) (Prototype) (PAL)\"},\"15C11AB6E4502B2010B18366133FC322\":{n:\"Shooting Arcade (09-19-1989) (Atari) (Prototype)\"},\"25B6DC012CDBA63704EA9535C6987BEB\":{n:\"Shuttle Orbiter (1983) (Avalon Hill)\"},E3C0451D29DAD724231BC5818EC4BAE0:{n:\"Single-Scanline Positioning Demo 1 (2001) (Roger Williams)\"},\"4C205F166157154DF2F1EF60D87E552F\":{n:\"Single-Scanline Positioning Demo 2 (2001) (Roger Williams)\"},DE8443FF47283E7B274A7838CB071FB6:{n:\"Sinistar (01-04-1984) (Atari) (Prototype)\"},\"3E88CCA5B860D0BD8947479E74C44284\":{n:\"Sinistar (01-23-1984) (Atari) (Prototype)\"},\"1E85F8BCCB4B866D4DAA9FCF89306474\":{n:\"Sinistar (02-13-1984) (Atari) (Prototype)\"},EA38FCFC06AD87A0AED1A3D1588744E4:{n:\"Sinistar (1984) (Atari) (Prototype)\"},\"4C8970F6C294A0A54C9C45E5E8445F93\":{n:\"Sir Lancelot (1983) (Xonox)\"},DD0CBE5351551A538414FB9E37FC56E8:{n:\"Sir Lancelot (1983) (Xonox) (PAL)\"},\"7EAD257E8B5A44CAC538F5F54C7A0023\":{n:\"Sir Lancelot (1983) (Xonox) [a1]\"},\"8490E1014C2BAA0D3A3A08854E5D68B3\":{n:\"Sir Lancelot (1983) (Xonox) [a2]\"},F847FB8DBA6C6D66D13724DBE5D95C4D:{n:\"Skate Boardin' (1987) (Absolute)\"},ABE40542E4FF2D1C51AA2BB033F09984:{n:\"Skate Boardin' (1987) (Absolute) (PAL)\"},\"7F9FBE3E00A21EA06E6AE5E0E5DB2143\":{n:\"Skate Boardin' (2002) (Skyworks)\"},\"39C78D682516D79130B379FA9DEB8D1C\":{n:\"Skeet Shoot (1981) (Apollo)\"},\"5F2B4C155949F01C06507FB32369D42A\":{n:\"Skeet Shoot (1981) (Apollo) (4K)\"},\"0832FB2EE654BF9382BC57D2B16D2FFC\":{n:\"Skeet Shoot (1981) (Apollo) (PAL)\"},\"4189ADFC1B30C121248876E3A1A3AC7E\":{n:\"Skeleton (Complete) (06-09-2002) (Eric Ball)\"},\"40E12C008037A323A1290C8FA4D2FE7F\":{n:\"Skeleton (NTSC) (06-09-2002) (Eric Ball)\"},\"647162CCEB550FD49820E2206D9EE7E8\":{n:\"Skeleton (NTSC) (2002) (Eric Ball)\"},\"8E42674972D6805068FC653E014370FD\":{n:\"Skeleton (PAL) (15-10-2002) (Eric Ball)\"},C033DC1D7B6FDE41B9CADCE9638909BB:{n:\"Skeleton (V1.1) (06-09-2002) (Eric Ball)\"},\"28A4CD87FB9DE4EE91693A38611CB53C\":{n:\"Skeleton (V1.1) (NTSC) (24-10-2002) (Eric Ball)\"},\"8E887D1BA5F3A71AE8A0EA16A4AF9FC9\":{n:\"Skeleton (V1.1) (PAL) (24-10-2002) (Eric Ball)\"},F20BD756F3990E06C492F53CD0168E68:{n:\"Skeleton+ (03-05-2003) (Eric Ball) (NTSC)\"},\"22B22C4CE240303012E8A9596AE8D189\":{n:\"Skeleton+ (03-05-2003) (Eric Ball) (PAL)\"},CFEF1A2D1F6A5EE7A5E1F43F3056F112:{n:\"Skeleton+ (05-05-2003) (Eric Ball) (NTSC)\"},\"75B22FDF632D76E246433DB1EBCCD3C4\":{n:\"Skeleton+ (05-05-2003) (Eric Ball) (PAL)\"},F98D869F287D2CE4F8FB36E0686929D9:{n:\"Skeleton+ (17-04-2003) (Eric Ball) (NTSC)\"},\"43F8459D39FB4EDDF9186D62722FF795\":{n:\"Skeleton+ (17-04-2003) (Eric Ball) (PAL)\"},EAFE8B40313A65792E88FF9F2FE2655C:{n:\"Skeleton+ (NTSC)\"},\"63C7395D412A3CD095CCDD9B5711F387\":{n:\"Skeleton+ (PAL)\"},\"8654D7F0FB351960016E06646F639B02\":{n:\"Ski Hunt (1983) (Home Vision) (PAL)\"},F10E3F45FB01416C87E5835AB270B53A:{n:\"Ski Run (Ariola) (PAL)\"},\"5305F69FBF772FAC4760CDCF87F1AB1F\":{n:\"Ski Run (Jone Yuan)\"},B76FBADC8FFB1F83E2CA08B6FB4D6C9F:{n:\"Skiing (1980) (Activision)\"},\"0D90A0EE73D55539B7DEF24C88CAA651\":{n:\"Skiing (1980) (Activision) (16K)\"},\"60BBD425CB7214DDB9F9A31948E91ECB\":{n:\"Skiing (1980) (Activision) (4K)\"},\"7623A639A6FFFDB246775FE2EABC8D01\":{n:\"Skiing (1980) (Activision) (8K)\"},EEC61CC4250DF70939D48FE02D7122AC:{n:\"Skiing (1980) (Activision) (PAL)\"},E1F88DA6DA8A7D521CA1DCBF2BC6978B:{n:\"Skiing (1980) (Activision) (PAL) (4K)\"},\"0E4B2B6E014A93EF8BE896823DA0D4EC\":{n:\"Skiing (208 in 1) (Unknown) (PAL)\"},\"367411B78119299234772C08DF10E134\":{n:\"Skiing (32 in 1) (1988) (Atari) (PAL)\"},\"40B59249E05135BCA33861E383735E9E\":{n:\"Skiing (32 in 1) (1988) (Atari) (PAL) (4K)\"},\"40D9F5709877ECF3DD1184F9791DD35E\":{n:\"Skiing (Dactari - Milmar)\"},\"7ED61A18CEBDECA0A93BE1F5461731E5\":{n:\"Skiing (Dactari) (4K)\"},C118854D670289A8B5D5156AA74B0C49:{n:\"Skiing (Jone Yuan)\"},\"13584411DA0A8D431991035423FDC0DC\":{n:\"Skiing (Jone Yuan) (4K)\"},\"340F546D59E72FB358C49AC2CA8482BB\":{n:\"Skindiver (1983) (Sancho) (PAL)\"},C31A17942D162B80962CB1F7571CD1D5:{n:\"Sky Alien (1983) (Home Vision) (PAL)\"},BC97D544F1D4834CC72BCC92A37B8C1B:{n:\"Sky Demo (PD)\"},\"46C021A3E9E2FD00919CA3DD1A6B76D8\":{n:\"Sky Diver (1979) (Atari)\"},\"3D8A2D6493123A53ADE45E3E2C5CAFA0\":{n:\"Sky Diver (1979) (Atari) (4K)\"},\"756CA07A65A4FBBEDEB5F0DDFC04D0BE\":{n:\"Sky Diver (1979) (Atari) (PAL)\"},\"5EF303B9F0AA8CF20720C560E5F9BAA1\":{n:\"Sky Diver (1979) (Atari) (PAL) (4K)\"},\"3F75A5DA3E40D486B21DFC1C8517ADC0\":{n:\"Sky Diver (32 in 1) (1988) (Atari) (PAL)\"},F1FE06EBE2900EAC4CDD17799389A102:{n:\"Sky Diver (32 in 1) (1988) (Atari) (PAL) (4K)\"},B23EBF427713DD0198B7EF47DBD07EF4:{n:\"Sky Diver (Jone Yuan) (4K) (Hack)\"},\"5A81AD4E184050851E63C8E16E3DAC77\":{n:\"Sky Diver (Jone Yuan) (Hack)\"},\"37252757A79DC5B174E3C03D6EA0BDCB\":{n:\"Sky Diver (Unknown) (PAL) (4K) (Hack)\"},\"8190B403D67BF9792FE22FA5D22F3556\":{n:\"Sky Diver (Unknown) (PAL) (Hack)\"},\"2A0BA55E56E7A596146FA729ACF0E109\":{n:\"Sky Jinks (1982) (Activision)\"},\"05AFF8F626EF870432AE3B3D9D5AA301\":{n:\"Sky Jinks (1982) (Activision) (16K)\"},\"8BD8F65377023BDB7C5FCF46DDDA5D31\":{n:\"Sky Jinks (1982) (Activision) (4K)\"},A4790224BD5AFABD53CBE93E46A7F241:{n:\"Sky Jinks (1982) (Activision) (8K)\"},\"50A410A5DED0FC9AA6576BE45A04F215\":{n:\"Sky Jinks (1982) (Activision) (PAL)\"},\"502168660BFD9C1D2649D415DC89C69D\":{n:\"Sky Jinks (1982) (Activision) (PAL) (4K)\"},\n\"93DC15D15E77A7B23162467F95A5F22D\":{n:\"Sky Jinks (CCE)\"},\"8764462D7D19A33B0717AF22B99FC88F\":{n:\"Sky Jinks (CCE) (4K)\"},E1B90F1E01B1A316D7BBF141525CC00E:{n:\"Sky Jinks (Unknown) (PAL) (4K) (Hack)\"},F992A39B46AA48188FAB12AD3809AE4A:{n:\"Sky Jinks (Unknown) (PAL) (Hack)\"},\"4C9307DE724C36FD487AF6C99CA078F2\":{n:\"Sky Patrol (1982) (Imagic) (Prototype)\"},\"3B91C347D8E6427EDBE942A7A405290D\":{n:\"Sky Skipper (1983) (Parker Bros)\"},\"514F911ECFF2BE5EEFF2F39C49A9725C\":{n:\"Sky Skipper (1983) (Parker Bros) (PAL)\"},\"1AA7344B563C597EECFBFCF8E7093C27\":{n:\"Slot Invaders (David Marli) (Hack)\"},F90B5DA189F24D7E1A2117D8C8ABC952:{n:\"Slot Machine (1979) (Atari)\"},\"81254EBCE88FA46C4FF5A2F4D2BAD538\":{n:\"Slot Machine (1979) (Atari) (4K)\"},\"705FE719179E65B0AF328644F3A04900\":{n:\"Slot Machine (1979) (Atari) (4K) [a]\"},FC6052438F339AEA373BBC999433388A:{n:\"Slot Machine (1979) (Atari) (PAL)\"},\"75EA128BA96AC6DB8EDF54B071027C4E\":{n:\"Slot Machine (32 in 1) (1988) (Atari) (PAL)\"},\"1E272D09C0E55F5EF14FCB76A735F6D7\":{n:\"Slot Machine (32 in 1) (1988) (Atari) (PAL) (4K)\"},DBDD21E1EE3D72119E8CD14D943C585B:{n:\"Slot Machine (Unknown) (PAL) (4K)\"},AED82052F7589DF05A3F417BB4E45F0C:{n:\"Slot Racers (1978) (Atari)\"},\"5F708CA39627697E859D1C53F8D8D7D2\":{n:\"Slot Racers (1978) (Atari) (4K)\"},A7ED7DC5CBC901388AFA59030FB11D26:{n:\"Slot Racers (1978) (Atari) (PAL)\"},\"7A64A8B727C8215D945E37D565CA95A5\":{n:\"Slot Racers (1978) (Atari) (PAL) (4K)\"},D1D704A7146E95709B57B6D4CAC3F788:{n:\"Slot Racers (32 in 1) (1988) (Atari) (PAL)\"},F6D512BEF1BF253DC935D0E13C3D1462:{n:\"Slot Racers (Unknown) (PAL) (4K)\"},\"92D1F6AC179EBE5963868D6BC1BDDA8D\":{n:\"Smash Hit Pak - Frogger, Boxing, Seaquest, Skiing, Stampede (HES) (PAL)\"},\"73C545DB2AFD5783D37C46004E4024C2\":{n:\"Smurf (1982) (CBS Electronics) (PAL)\"},\"24AFF972D58990F9B88A6D787C796F1E\":{n:\"Smurf (1982) (CBS Electronics) (PAL) [a]\"},\"3D1E83AFDB4265FA2FB84819C9CFD39C\":{n:\"Smurf - Rescue in Gargamel's Castle (1982) (Coleco)\"},A204CD4FB1944C86E800120706512A64:{n:\"Smurfs Save the Day (1983) (Coleco)\"},\"898B5467551D32AF48A604802407B6E8\":{n:\"Snail Against Squirrel (1983) (BitCorp) (PAL)\"},AC26D7D37248D1D8EAC5ECCACDBEF8DB:{n:\"Snail Against Squirrel (Unknown) (PAL)\"},\"9C6FAA4FF7F2AE549BBCB14F582B70E4\":{n:\"Sneak 'n Peek (1982) (U.S. Games)\"},F21813AA050437F0DBC8479864ACEC6D:{n:\"Sneak 'n Peek (Unknown) (PAL)\"},C54B4207CE1D4BF72FADBB1A805D4A39:{n:\"Sniper (Feb 30) (2001) (Prototype)\"},\"01293BD90A4579ABB7AED2F7D440681F\":{n:\"Snoopy (1983) (Century) (PAL)\"},\"45A095645696A217E416E4BD2BAEA723\":{n:\"Snoopy (Digivision)\"},\"0F39FC03D579D0D93A6B729A3746843E\":{n:\"Snoopy and the Red Baron (05-27-1983) (Atari) (Prototype)\"},\"57939B326DF86B74CA6404F64F89FCE9\":{n:\"Snoopy and the Red Baron (1983) (Atari)\"},F844F4C6F3BAAAF5322657442D6F29EB:{n:\"Snoopy and the Red Baron (1983) (Atari) (PAL)\"},BDA1463E02AE3A6E1107FFE1B572EFD2:{n:\"Snoopy and the Red Baron (1983) (Atari) (PAL) [a]\"},C5D2834BF98E90245E545573EB7E6BBC:{n:\"Snoopy and the Red Baron (CCE)\"},D2DEDDB77C8B823E4BE9C57CB3C69ADC:{n:\"Snoopy and the Red Baron (Canal 3)\"},\"75028162BFC4CC8E74B04E320F9E6A3F\":{n:\"Snow White and the Seven Dwarfs (02-09-1983) (Atari) (Prototype)\"},\"75EE371CCFC4F43E7D9B8F24E1266B55\":{n:\"Snow White and the Seven Dwarfs (11-09-1982) (Atari) (Prototype)\"},\"3F6DBF448F25E2BD06DEA44248EB122D\":{n:\"Soccer (1989) (Telegames)\"},\"604E09724555807C28108049EFE34A13\":{n:\"Sokoban (01-01-2003) (Adam Wozniak)\"},B4DAEDB43511521DB9036D503B3C1B69:{n:\"Sokoban (01-01-2003) (Adam Wozniak) [a1]\"},\"947317A89AF38A49C4864D6BDD6A91FB\":{n:\"Solar Fox (1983) (CBS Electronics)\"},E03B0B091BEA5BC9D3F14EE0221E714D:{n:\"Solar Fox (1983) (CBS Electronics) (PAL)\"},DF753CB87D3AF4D03F694AB848638108:{n:\"Solar Fox (1983) (CBS Electronics) (PAL) [a]\"},\"97842FE847E8EB71263D6F92F7E122BD\":{n:\"Solar Storm (1983) (Imagic)\",p:1},E6DE4EF9AB62E2196962AA6B0DEDAC59:{n:\"Solar Storm (1983) (Imagic) (PAL)\",p:1},E72EB8D4410152BDCB69E7FBA327B420:{n:\"Solaris (1986) (Atari)\"},BC4CF38A4BEE45752DC466C98ED7AD09:{n:\"Solaris (1986) (Atari) (PAL)\"},\"0ADB21206DE92E8AEC5EF295805EBB90\":{n:\"Solaris (Genesis)\"},F19ABA18F86E415812480AD2BE221425:{n:\"Solaris Trainer (2002) (Chris Larkin) (Hack)\"},\"2DFEC1615C49501FEFC02165C81955E6\":{n:\"Song (05-11-2002) (Paul Slocum)\",c:1},CAD982C9B45BC5EFF34E4EA982D5F1CA:{n:\"Song (17-02-2003) (Paul Slocum)\",c:1},D2C4F8A4A98A905A9DEEF3BA7380ED64:{n:\"Sorcerer (1983) (Mythicon)\"},\"5F7AE9A7F8D79A3B37E8FC841F65643A\":{n:\"Sorcerer's Apprentice (1983) (Atari)\"},\"2E82A1628EF6C735C0AB8FA92927E9B0\":{n:\"Sorcerer's Apprentice (1983) (Atari) (PAL)\"},\"27C4C2AF4B46394BB98638AF8E0F6E9D\":{n:\"Sorcerer's Apprentice (1983) (Atari) (Prototype)\"},\"101AB60F4000A5D13792EF0ABAD5F74B\":{n:\"Sorcerer's Apprentice (1983) (Atari) [a]\"},F78C125B5DA483C41E51522947D6C4CE:{n:\"Sound Paddle V1 (Dennis Caswell & Jim Nitchals) (PD)\",p:1},EEE7695AE3EEA7818321DF0B790B31F3:{n:\"Sound Paddle V2 (Dennis Caswell & Jim Nitchals) (PD)\",p:1},\"32F4E47A71601AB06CFB59E1C6A0B846\":{n:\"Sound X (1994) (Ed Federmeyer)\"},\"7DBC8FA2E488E3F6B87FBE0F76C5B89F\":{n:\"Sound X (1996) (Ed Federmeyer)\"},\"310BA30E25EA8957E58180B663503C0C\":{n:\"Sound X6 (1994) (Ed Federmeyer)\"},\"24B9ADAC1B4F85B0BAC9BF9B9E180906\":{n:\"Space 2002 (Angelino) (Hack)\"},\"17BADBB3F54D1FC01EE68726882F26A6\":{n:\"Space Attack (1982) (M Network)\"},ABB741C83F665D73C86D90A7D9292A9B:{n:\"Space Attack (1989) (Telegames) (PAL)\"},F047DF70D3D08E331122CD2DE61D6AF8:{n:\"Space Battle (NTSC)\"},CC12581E079CD18330A89902625B8347:{n:\"Space Battle (PAL)\"},\"559317712F989F097EA464517F1A8318\":{n:\"Space Canyon (1983) (Panda)\"},DF6A28A89600AFFE36D94394EF597214:{n:\"Space Cavern (1981) (Apollo)\"},D9548AD44E67EDEC202D1B8B325E5ADF:{n:\"Space Cavern (1981) (Apollo) (PAL)\"},\"7AC4F4FB425DB38288FA07FB8FF4B21D\":{n:\"Space Eagle (1983) (Goliath) (PAL)\"},\"0D27C7F5DB349B592F70F68DAF5E8F3B\":{n:\"Space Instigators (21-10-2002) (CT)\"},B2A6F31636B699AEDA900F07152BAB6E:{n:\"Space Instigators (Public Release 2) (06-01-2003) (CT)\"},\"18BEBBBD41C234F82B1717B1905E6027\":{n:\"Space Instigators (Public Release) (02-01-2003) (CT)\"},CDA38714267978B9A8B0B24BEE3529AE:{n:\"Space Instigators (V1.6) (17-10-2002) (CT)\"},\"98E6E34AF45A0664597972C3BB31180F\":{n:\"Space Instigators (V1.7) (17-10-2002) (CT)\"},\"52BAE1726D2D7A531C9CA81E25377FC3\":{n:\"Space Instigators (V1.8 Fixed) (20-10-2002) (CT)\"},CFEE10BD7119F10B136921CED2EE8972:{n:\"Space Instigators (V1.8) (19-10-2002) (CT)\"},E927ECF80F3784D745ABD8368D78F2F3:{n:\"Space Instigators (V1.8) (19-10-2002) (CT) [a1]\"},DD10B5EE37FDBF909423F2998A1F3179:{n:\"Space Instigators (V1.9) (21-10-2002) (CT)\"},E10BF1AF6BF3B4A253C5BEF6577FE923:{n:\"Space Invaders (1978) (Atari) [h1]\"},\"07F91E33E76F53BB9D2731FD5D8A35A5\":{n:\"Space Invaders (1978) (Atari) [t1]\"},\"72FFBEF6504B75E69EE1045AF9075F66\":{n:\"Space Invaders (1980) (Atari)\"},F1B7EDFF81CEEF5AF7AE1FA76C8590FC:{n:\"Space Invaders (1980) (Atari) (PAL)\"},\"8747BA79CD39FA83A529BB26010DB21B\":{n:\"Space Invaders (1980) (Atari) (PAL) [different speed and colors]\"},\"7CC77F6745E1F2B20DF4A4327D350545\":{n:\"Space Invaders (1980) (Atari) (PAL) [fixed]\"},\"61DBE94F110F30CA4EC524AE5CE2D026\":{n:\"Space Invaders (1983) (CCE)\"},C126656DF6BADFA519CC63E681FB3596:{n:\"Space Invaders (2002) (Ron Corcoran) (Hack)\"},\"2EF36341D1BF42E02C7EA2F71E024982\":{n:\"Space Invaders (Explosion Hack)\"},\"270229C6D5578446E6A588492E4E5910\":{n:\"Space Invaders 2 (Hack)\"},\"0963AA9F7F6CF5A36FF700001583624E\":{n:\"Space Invaders 2 (Hack) [o1]\"},\"2CFB188C1091CC7EC2A7E60064D2A758\":{n:\"Space Invaders Hack Demo (2003) (SnailSoft)\"},\"6F2AAFFAAF53D23A28BF6677B86AC0E3\":{n:\"Space Jockey (1982) (U.S. Games)\"},D1A9478B99D6A55E13A9FD4262DA7CD4:{n:\"Space Jockey (1982) (U.S. Games) (4K)\"},\"457E7D4FCD56EBC47F5925DBEA3EE427\":{n:\"Space Jockey (1983) (Carrere Video) (PAL)\"},EE9CAEE4EB958284FB10C277B14537F1:{n:\"Space Jockey (1983) (Carrere Video) (PAL) (4K)\"},E1D79E4E7C150F3861256C541EC715A1:{n:\"Space Jockey (208 in 1) (Unknown) (PAL)\"},\"822A950F27FF0122870558A89A49CAD3\":{n:\"Space Jockey (Unknown) (PAL)\"},C689148AD9275667924AB334107B517E:{\nn:\"Space Raid (Jone Yuan)\"},\"690A6049DB78B9400C13521646708E9C\":{n:\"Space Raid (King Tripod) (PAL)\"},\"345769D085113D57937198262AF52298\":{n:\"Space Raid (Rainbow Vision) (PAL)\"},\"1A624E236526C4C8F31175E9C89B2A22\":{n:\"Space Raid (Rainbow Vision) (PAL) [a]\"},\"1BEF389E3DD2D4CA4F2F60D42C932509\":{n:\"Space Robot (1983) (Dimax - Sinmax) (PAL)\",c:1},\"3DFB7C1803F937FADC652A3E95FF7DC6\":{n:\"Space Robot (Dimax - Sinmax)\",c:1},\"82E7AAB602C378CFFDD8186A099E807E\":{n:\"Space Robot (Unknown)\"},C4D888BCF532E7C9C5FDEAFBB145266A:{n:\"Space Robot (Unknown) (PAL)\",c:1},\"5894C9C0C1E7E29F3AB86C6D3F673361\":{n:\"Space Shuttle (1983) (Activision)\"},\"4F6702C3BA6E0EE2E2868D054B00C064\":{n:\"Space Shuttle (1983) (Activision) (PAL)\"},\"898143773824663EFE88D0A3A0BB1BA4\":{n:\"Space Shuttle (1983) (Activision) [FE]\"},FF5A9E340D96DF6F5A5B6EB038E923BD:{n:\"Space Shuttle (1983) (Activision) [t1]\"},A8D0A4A77CD71AC601BD71DF5A060E4C:{n:\"Space Shuttle (1983) (Activision) [t2] (Fuel)\"},D97E3D0B4575CE0B9A6132E19CFEAC6E:{n:\"Space Treat (061002) (PD)\"},\"2683D29A282DD059535AC3BB250F540D\":{n:\"Space Treat (12-01-2003) (Fabrizio Zavagli)\"},DED26E1CB17F875A9C17515C900F9933:{n:\"Space Treat (29-12-2002) (Fabrizio Zavagli)\"},\"3367EEBA3269AA04720ABE6169767502\":{n:\"Space Treat (30-12-2002) (Fabrizio Zavagli)\"},\"75B557BE7F08DB84EC5B242207B9F241\":{n:\"Space Treat (30-12-2002) (Fabrizio Zavagli) [a1]\"},E74022CFE31EC8908844718DFBDEDF7A:{n:\"Space Treat (30-12-2002) (Fabrizio Zavagli) [a2]\"},D49AFF83F77A1B9041AD7185DF3C2277:{n:\"Space Treat (60% complete) (PD)\"},\"6C9A32AD83BCFDE3774536E52BE1CCE7\":{n:\"Space Treat (NTSC) (13-08-2002) (Fabrizio Zavagli)\"},B0C47E426C7F799AEE2C40422DF8F56A:{n:\"Space Treat (PAL) (Fabrizio Zavagli)\"},DFAFA3FA58F5CC3F0342CCA475DF6095:{n:\"Space Treat (V1.1 Beta) (24-12-2002) (Fabrizio Zavagli)\"},\"562ACB1B7FF182ABA133BDA8E21AD7C1\":{n:\"Space Treat Deluxe (08-03-2003) (Fabrizio Zavagli)\"},DF2745D585238780101DF812D00B49F4:{n:\"Space Tunnel (1982) (BitCorp)\"},C5387FC1AA71F11D2FA82459E189A5F0:{n:\"Space Tunnel (1982) (BitCorp) (PAL)\"},\"8917F7C1AC5EB05B82331CF01C495AF2\":{n:\"Space Tunnel (1982) (BitCorp) (PAL) [a]\"},BE3F0E827E2F748819DAC2A22D6AC823:{n:\"Space Tunnel (1982) (Puzzy)\"},D73AD614F1C2357997C88F37E75B18FE:{n:\"Space Tunnel (1982) (Puzzy) (PAL)\"},\"7FCD5FB59E88FC7B8473C641F44226C3\":{n:\"Space Tunnel (1983) (CCE)\"},A7EF44CCB5B9000CAF02DF3E6DA71A92:{n:\"Space War (1978) (Atari)\"},\"7E9DA5CB84D5BC869854938FE3E85FFA\":{n:\"Space War (1978) (Atari) (4K)\"},F9677B2EC8728A703EB710274474613D:{n:\"Space War (1978) (Atari) (PAL)\"},\"0519F395D5F7D76BE813B834AA51C0BE\":{n:\"Space War (1978) (Atari) (PAL) (4K)\"},\"77887E4192A6B0A781530E6CF9BE7199\":{n:\"Space War (1978) (Atari) [b1]\"},E505BD8E59E31AAED20718D47B15C61B:{n:\"Space War (1982) (Funvision) (PAL)\"},\"63D6247F35902BA32AA49E7660B0ECAA\":{n:\"Space War (208 in 1) (Unknown) (PAL)\"},B702641D698C60BCDC922DBD8C9DD49C:{n:\"Space War (32 in 1) (1988) (Atari) (PAL)\"},\"8F60551DB6D1535EF0030F155018C738\":{n:\"Space War (Unknown) (PAL) (4K)\"},\"45040679D72B101189C298A864A5B5BA\":{n:\"SpaceMaster X-7 (1983) (20th Century Fox)\"},E14FEDDEB82F5160ED5CF9CA4078E58D:{n:\"SpaceMaster X-7 (208 in 1) (Unknown) (PAL)\"},EC5C861B487A5075876AB01155E74C6C:{n:\"Spacechase (1981) (Apollo)\"},\"89EABA47A59CBFD26E74AAD32F553CD7\":{n:\"Spacechase (1981) (Apollo) (PAL)\"},FAFFD84F3A8ECEEE2FA5EA5B0A3E6678:{n:\"Spectracube Invasion (Suntek) (PAL)\"},F3F92AAD3A335F0A1EAD24A0214FF446:{n:\"Spectrum Color Demo (PD)\"},\"327FE8CF94F3A45C35A840A453DF1235\":{n:\"Spice Girls Rule Demo (PD)\"},A8A703E073183A89C94D4D99B9661B7F:{n:\"Spice Invaders (Franklin Cruz) (Hack)\"},\"24D018C4A6DE7E5BD19A36F2B879B335\":{n:\"Spider Fighter (1982) (Activision)\"},\"8786F229B974C393222874F73A9F3206\":{n:\"Spider Fighter (1982) (Activision) (PAL)\"},BA3A17EFD26DB8B4F09C0CF7AFDF84D1:{n:\"Spider Fighter (1983) (Activision) (16K)\"},D25018349C544320BF3FD5092EE072BC:{n:\"Spider Fighter (1983) (Activision) (8K)\"},\"0FC161704C46E16F7483F92B06C1558D\":{n:\"Spider Fighter (1983) (CCE)\"},C41E7735F6701DD50E84EE71D3ED1D8F:{n:\"Spider Fighter (1983) (Dynacom)\"},\"92E72F7CC569584C44C9530D645AE04E\":{n:\"Spider Fighter (Canal 3)\"},B40DEA357D41C5408546E4E4D5F27779:{n:\"Spider Fighter (Digivision)\"},\"7778AC65D775A079F537E97CBDAD541C\":{n:\"Spider Fighter (Unknown) (PAL)\"},F14D5E96EC3380AEF57A4B70132C6677:{n:\"Spider Kong (1983) (Goliath) (PAL) [a]\"},\"672012D40336B403EDEA4A98CE70C76D\":{n:\"Spider Kong (208 in 1) (Unknown) (PAL)\"},AE465044DFBA287D344BA468820995D7:{n:\"Spider Kong (Unknown) (PAL)\"},\"21299C8C3AC1D54F8289D88702A738FD\":{n:\"Spider Maze (1982) (K-Tel Vision)\"},\"37B98344C8E0746C486CAF5AAEEC892A\":{n:\"Spider Maze (1982) (K-Tel Vision) (PAL)\"},D39E29B03AF3C28641084DD1528AAE05:{n:\"Spider Monster (1982) (Funvision) (PAL)\"},\"199EB0B8DCE1408F3F7D46411B715CA9\":{n:\"Spider-Man (1982) (Parker Bros)\"},E77EC259E1387BC308B0534647A89198:{n:\"Spider-Man (1982) (Parker Bros) (PAL)\"},\"8454ED9787C9D8211748CCDDB673E920\":{n:\"Spiderdroid (1987) (Froggo)\"},F7AF41A87533524D9A478575B0D873D0:{n:\"Spiderman (1983) (Quelle) (PAL)\"},A4E885726AF9D97B12BB5A36792EAB63:{n:\"Spike's Peak (1983) (Xonox)\"},B37F0FE822B92CA8F5E330BF62D56EA9:{n:\"Spike's Peak (1983) (Xonox) (PAL)\"},\"9BB136B62521C67AC893213E01DD338F\":{n:\"Spike's Peak (1983) (Xonox) (PAL) [a]\"},\"542C6DD5F7280179B51917A4CBA4FAFF\":{n:\"Spinning Fireball (1983) (ZiMAG) (Prototype)\"},D3171407C3A8BB401A3A62EB578F48FB:{n:\"Spinning Fireball (1983) (ZiMAG) (Prototype) [a]\",c:1},\"98555B95CB38E0E0B22B482B2B60A5B6\":{n:\"Spinning Fireball (Unknown) (PAL)\",c:1},CEF2287D5FD80216B2200FB2EF1ADFA8:{n:\"Spitfire Attack (1983) (Milton Bradley)\"},FFEBB0070689B9D322687EDD9C0A2BAE:{n:\"Spitfire Attack (1983) (Milton Bradley) [h1]\"},FB91DA78455D9B1606913FBF8C859772:{n:\"Split Screen (Ballblazer) Demo (PD)\"},A4D026A5C200EF98518EBB77719FE8DC:{n:\"SpongeBob SquarePants (2003) (Kyle Pittman) (Hack)\"},\"2C3B2843295C9D6B16996971180A3FE9\":{n:\"Sports Action Pak - Enduro, Ice Hockey, Fishing Derby, Dragster (1988) (HES) (PAL)\"},\"4CD796B5911ED3F1062E805A3DF33D98\":{n:\"Springer (1982) (Tigervision)\"},\"133456269A03E3FDAE6CDDD65754C50D\":{n:\"Springer (1982) (Tigervision) (PAL)\"},\"5A8AFE5422ABBFB0A342FB15AFD7415F\":{n:\"Sprint Master (1988) (Atari)\"},B2D5D200F0AF8485413FAD957828582A:{n:\"Sprint Master (1988) (Atari) (PAL)\"},\"6B75F8FA4FD011A6698C58315F83D2AC\":{n:\"Sprintmaster DC (TJ)\"},D597D35C6022C590D6E75E865738558A:{n:\"Sprite Color Demo (PD)\"},F1B2EA568B3E156E3F2849DAC83591F6:{n:\"Sprite Demo (1997) (Bob Colbert) (PD)\"},E15B5525CF8F77297B322838DF8D999C:{n:\"Sprite Demo 0 (PD)\"},D5C6B81212AD86FD9542A1FEDAF57CAE:{n:\"Sprite Demo 1 (PD)\"},FE0BC4BB92C1C4DE7D5706AAA8D8C10D:{n:\"Sprite Demo 2 (PD)\"},DBABB80E92FF18D8EECF615C0539151E:{n:\"Sprite Demo 3 (PD)\"},\"61728C6CFB052E62A9ED088C5BF407BA\":{n:\"Sprite Demo 4 (PD)\"},AD7E97C19BD25D5AA3999430845C755B:{n:\"Sprite Demo 5 (PD)\"},ACAA27D214039D89D7031609AAFA55C3:{n:\"Sprite Demo 6 (PD)\"},\"2D6DA0EB85EABC93270E5BB8A466CA51\":{n:\"Sprite Demo 7 (PD)\"},DFE034297200DFF672DF9533ED1449A9:{n:\"Sprite Movement Demo 1 (2001) (Roger Williams)\"},D4C590CCFB611A73B3331359700C01A3:{n:\"Sprite Movement Demo 2 (2001) (Roger Williams)\"},\"37AB3AFFC7987995784B59FCD3FCBD31\":{n:\"Sprite Test (29-11-2002) (Eric Ball)\"},\"3105967F7222CC36A5AC6E5F6E89A0B4\":{n:\"Spy Hunter (1984) (Sega)\"},\"6A8C6940D3BE6FD01274363C4D4B298E\":{n:\"Spy Hunter (Genesis)\"},\"2A360BC85BF22DE438651CF92FFDA1DE\":{n:\"Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)\"},BA257438F8A78862A9E014D831143690:{n:\"Squeeze Box (1982) (U.S. Games)\"},\"68878250E106EB6C7754BC2519D780A0\":{n:\"Squirrel (1983) (CCE)\"},\"34C808AD6577DBFA46169B73171585A3\":{n:\"Squoosh (1983) (Apollo) (Prototype)\"},\"22ABBDCB094D014388D529352ABE9B4B\":{n:\"Squoosh (1983) (Apollo) (Prototype) [a]\"},\"21A96301BB0DF27FDE2E7EEFA49E0397\":{n:\"Sssnake (1982) (Data Age)\"},B3203E383B435F7E43F9492893C7469F:{n:\"Sssnake (1983) (Gameworld) (PAL)\"},\"21D7334E406C2407E69DBDDD7CEC3583\":{n:\"Stampede (1981) (Activision)\"},\"9057694DCE8449521E6164D263702185\":{n:\"Stampede (1981) (Activision) (16K)\"},E66E5AF5DEA661D58420088368E4EF0D:{\nn:\"Stampede (1981) (Activision) (4K)\"},\"53F147B9746FDC997C62F3DD67888EE5\":{n:\"Stampede (1981) (Activision) (8K)\"},\"75511BB694662301C9E71DF645F4B5A7\":{n:\"Stampede (1981) (Activision) (PAL)\"},F52F40299FD238C6FFD9E6107050DC76:{n:\"Stampede (1981) (Activision) (PAL) (4K)\"},C9196E28367E46F8A55E04C27743148F:{n:\"Stampede (32 in 1) (1988) (Atari) (PAL)\"},F20675C8B98518367B9F5B8EE6F7C8EA:{n:\"Stampede (32 in 1) (1988) (Atari) (PAL) (4K)\"},F77F5FC3893DA5D00198E4CD96544AAD:{n:\"Stampede (Canal 3)\"},\"866E5150C995C4AE5172E5207BA948C7\":{n:\"Stampede (Canal 3) (16K)\"},\"43ADF60EBDD6B5A0FAE21594ECF17154\":{n:\"Stampede (Jone Yuan)\"},D170317AE4C7D997A989C7D6567C2840:{n:\"Stampede (Jone Yuan) (4K) (Hack)\"},\"1EA1ABCD2D3D3D628F59A99A9D41B13B\":{n:\"Stampede (Jone Yuan) (Hack)\"},\"869ABE0426E6E9FCB6D75A3C2D6E05D1\":{n:\"Stampede (Unknown) (PAL)\"},\"0945081A6BD00345FF3D58EB7A07330A\":{n:\"Stampede (Unknown) (PAL) (4K)\"},A8916734FF8C64EC3342F4C73FD5B57D:{n:\"Stand Alone Test Cart (1982) (Atari) [a]\"},D9C9CECE2E769C7985494B1403A25721:{n:\"Star Castle 2600 (SolidCorp)\",c:1},\"54BAFC299423F5A50B8BC3A797914706\":{n:\"Star Castle 2600 (SolidCorp) (PAL)\",c:1},CE8467AE2A3A5BC88CA72A2CE44CE28C:{n:\"Star Castle 2600 (SolidCorp) (PAL) [015]\",c:1},DD0DE0F61AF2A2A4878E377B880A3933:{n:\"Star Castle 2600 (SolidCorp) [013]\",c:1},C0589BB73858924389077FA3C2E9441A:{n:\"Star Castle 2600 (SolidCorp) [014]\",c:1},\"39B94D41BD3B01C12B4054C1A8733783\":{n:\"Star Castle 2600 (SolidCorp) [016]\",c:1},\"2AEEDCC6EB1602EFB77161B0CEF832AB\":{n:\"Star Castle 2600 (SolidCorp) [025]\",c:1},\"1EF04E7E508296A8D9EB61CC7DAE2E5D\":{n:\"Star Castle 2600 (SolidCorp) [069]\",c:1},\"6E4521989A60A0DDF4FF1FC6E6E5FC3D\":{n:\"Star Fire (01-05-2002) (MP)\"},A443D8557D712845C8CD3699363A42E6:{n:\"Star Fire (07-01-2003) (MP)\"},\"1E1817D9CBCC3BA75043B7DB4E6C228F\":{n:\"Star Fire (07-10-2002) (MP)\"},DBA2692A216CB6C262C78F8B111A813E:{n:\"Star Fire (08-10-2002) (MP)\"},\"47BB1C677FE7BA5F376372AE7358E790\":{n:\"Star Fire (10-10-2002) (MP)\"},\"43E6C5159C3A093FCA88656628C6EF34\":{n:\"Star Fire (17-02-2003) (MP)\"},\"6F75D72E4CF996100CCDD163D57BDAC2\":{n:\"Star Fire (200203) (MP)\"},\"18760F1F9CA5E18610115CF7B815B824\":{n:\"Star Fire (23-10-2002) (MP)\"},\"539B7038ACEC0CCEDEAE40F238998579\":{n:\"Star Fire (25-10-2002) (MP)\"},\"16FBB36A6124567405A235821E8F69EE\":{n:\"Star Fire (28-11-2002) (MP)\"},C473B222B7C5308D0773326416094272:{n:\"Star Fire (28-11-2002) (MP) [a1]\"},BC6432CBED32C695658514C4EB41D905:{n:\"Star Fire (MP) (2002) (PD)\"},BF5E2079586CB307BF5EB2413E2E61AF:{n:\"Star Fire - 1LK Intro (13-11-2002) (TJ)\"},\"0890A5B089191F45D0F08DD1E3235687\":{n:\"Star Fire - 4K Version (25-10-2002) (MP)\"},D2C305A443DFC49E8430964D7C1BD1B7:{n:\"Star Fire - Advice on radar needed (16-10-2002) (MP)\"},\"09D19274C20768F842E8FAE84B766ABE\":{n:\"Star Fire - Animated Patricles (06-10-2002) (MP)\"},BF9DDC5DD9056633D4AC0DAC8B871DFE:{n:\"Star Fire - Cockpit View (10-10-2002) (MP)\"},EC26FDC87B1D35F1D60EA89CDA4F4DD4:{n:\"Star Fire - Crash Scene (04-11-2002) (MP)\"},BFCABC6995EF42D0B6C06786993DC4D6:{n:\"Star Fire - Creating a Universe (09-09-2002) (MP)\"},\"86F5E55CA9A9BDE7338A157570828E79\":{n:\"Star Fire - Creating a Universe (09-09-2002) (MP) [a1]\"},\"11CF751BC8173DB105EABD119C5844BA\":{n:\"Star Fire - Crosshair (12-02-2002) (MP)\"},\"06953ED762220DBA63D63930D4AD0CC3\":{n:\"Star Fire - Eckhard WIP (MP)\"},\"40D7CCD460C9B1198238AF6CEEA1737D\":{n:\"Star Fire - Enemy Mine (2002) (MP)\"},D79DF06894E3C1585A47C2807332B319:{n:\"Star Fire - Explosions! (10-10-2002) (MP)\"},\"5E2928F089490017E88E9F9E5A881A25\":{n:\"Star Fire - Faster Skipping 1 (24-10-2002) (MP)\"},\"44560E324FFB30741A483218BA5B4342\":{n:\"Star Fire - Faster Skipping 2 (24-10-2002) (MP)\"},\"562BF02F5031D51C6B53B03972A56B22\":{n:\"Star Fire - Framework Done (30-10-2002) (MP)\"},DC6AA0BB21A6E66E80E75BA5EDC5C0DD:{n:\"Star Fire - Kernel Done (MP)\"},\"9E6FA031ECE07919C816FBA5DC8DE43E\":{n:\"Star Fire - Meteor Dance (13-11-2002) (MP)\"},BB9F06B288B5275BC0D38B6731B2526A:{n:\"Star Fire - Meteor Dance 2 (18-11-2002) (MP)\"},\"551EF75593EC18D078E8F5CC0229E1C4\":{n:\"Star Fire - New Paulstar WIP (MP)\"},\"74CA9BDC91EE387A5BD929B73AEC5C2C\":{n:\"Star Fire - New Shields (03-04-2003) (MP)\"},A23FFC86804240CE77134A1C91926685:{n:\"Star Fire - Paulstar WIP (MP)\"},C6CEDB25B7D390B580EA8EDB614B168B:{n:\"Star Fire - Radar Completed (22-10-2002) (MP)\"},\"5F69453A69F21DC49697A80D2E933491\":{n:\"Star Fire - Reduced Flickering (06-10-2002) (MP)\"},\"2E2885E68FA1045871CE1382B68F6EFC\":{n:\"Star Fire - Return of the Crosshair (MP)\"},DA64F33D0521D5C9958E5D2D4434FF95:{n:\"Star Fire - Return of the Starfield (MP)\"},\"92EDE72ED8F61D255BC58D2F166DC6B6\":{n:\"Star Fire - Shootable (26-09-2002) (MP)\"},ED9999911B406DC5F75C850DCC17BDF4:{n:\"Star Fire - Shootable (Friendlier Collision Detection) (26-09-2002) (MP)\"},\"92C5ABB7A8BB1C3FC66C92BA353A3D21\":{n:\"Star Fire - Sorting Fixed (MP)\"},\"103D4C890C2108CB536372C98D093E5F\":{n:\"Star Fire - Star Background (MP)\"},\"7F73AC39E5E3E13E40FD8AD885561A0F\":{n:\"Star Fire - Warping Star (13-04-2003) (MP)\"},FBD6102E17A5C02C6E1911381B7203F9:{n:\"Star Fire - Warping!! (10-04-2003) (MP)\"},BB07F917611CDE42B7D83746EE27147D:{n:\"Star Fire - Warping!! (13-04-2003) (MP)\"},F526D0C519F5001ADB1FC7948BFBB3CE:{n:\"Star Fox (1983) (Mythicon)\"},C541A5F6FC23B40A211196DD78233780:{n:\"Star Raiders (1981) (Atari) (Prototype)\"},CBD981A23C592FB9AB979223BB368CD5:{n:\"Star Raiders (1982) (Atari)\"},C1A83F44137EA914B495FC6AC036C493:{n:\"Star Raiders (1982) (Atari) (PAL)\"},E363E467F605537F3777AD33E74E113A:{n:\"Star Ship (1977) (Atari)\"},\"7B938C7DDF18E8362949B62C7EAA660A\":{n:\"Star Ship (1977) (Atari) (4K)\"},\"79E5338DBFA6B64008BB0D72A3179D3C\":{n:\"Star Strike (1983) (M Network)\"},\"405F8591B6941CFF56C9B392C2D5E4E5\":{n:\"Star Strike (1989) (Telegames) (PAL)\"},AB8D318DA4ADDD39C65B7F9C408DF2A6:{n:\"Star Trek (Genesis)\",c:1},\"03C3F7BA4585E349DD12BFA7B34B7729\":{n:\"Star Trek - Strategic Operations Simulator (1983) (Sega)\",c:1},\"30F0B49661CFCFD4EC63395FAB837DC3\":{n:\"Star Trek - Strategic Operations Simulator (1983) (Sega) (PAL)\",c:1},\"813985A940AA739CC28DF19E0EDD4722\":{n:\"Star Voyager (1982) (Imagic)\"},\"0ACEB7C3BD13FE048B77A1928ED4267D\":{n:\"Star Voyager (1982) (Imagic) (PAL)\"},D912312349D90E9D41A9DB0D5CD3DB70:{n:\"Star Voyager (1983) (CCE)\"},\"2E7E9C6DCFCCEAFFC6FA73F0D08A402A\":{n:\"Star Voyager (1983) (CCE) [a]\"},\"9D33D31FB1DE58C5460D8A67B57B36DA\":{n:\"Star Voyager (Genesis)\"},\"5336F86F6B982CC925532F2E80AA1E17\":{n:\"Star Wars - Death Star Battle (1983) (Parker Bros)\",c:1},CB9B2E9806A7FBAB3D819CFE15F0F05A:{n:\"Star Wars - Death Star Battle (1983) (Parker Bros) (PAL)\"},D44D90E7C389165F5034B5844077777F:{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype)\"},\"2E2ACEF8513EDCCA991E7E5149412E11\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (16K)\"},\"6DFAD2DD2C7C16AC0FA257B6CE0BE2F0\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL)\"},\"9D7F04618BB4043F531D087E3AAA7AC8\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL) (16K)\"},C246E05B52F68AB2E9AEE40F278CD158:{n:\"Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype)\"},C9F6E521A49A2D15DAC56B6DDB3FB4C7:{n:\"Star Wars - Jedi Arena (1983) (Parker Bros)\",p:1},\"05B45BA09C05BEFA75AC70476829EDA0\":{n:\"Star Wars - Jedi Arena (1983) (Parker Bros) (PAL)\",p:1},F4B8A47A95B61895E671C3EC86FFD461:{n:\"Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype)\",c:1},\"6651E2791D38EDC02C5A5FD7B47A1627\":{n:\"Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K)\",c:1},E8A3473BF786CF796D1336D2D03A0008:{n:\"Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype)\",c:1},\"1E1290EA102E12D7AC52820961457E2B\":{n:\"Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype)\",c:1},AE2F1F69BB38355395C1C75C81ACC644:{n:\"Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype)\",c:1},\"6339D28C9A7F92054E70029EB0375837\":{n:\"Star Wars - The Arcade Game (1984) (Parker Bros)\",c:1},\"6CF054CD23A02E09298D2C6F787EB21D\":{n:\"Star Wars - The Arcade Game (1984) (Parker Bros) (PAL)\",\nc:1},FFC0FF4305DD46B4B459885BD1818E2E:{n:\"Star Wars - The Battle of Alderaan (Star Strike Hack)\"},\"3C8E57A246742FA5D59E517134C0B4E6\":{n:\"Star Wars - The Empire Strikes Back (1982) (Parker Bros)\"},BE060A704803446C02E6F039AB12EB91:{n:\"Star Wars - The Empire Strikes Back (1982) (Parker Bros) (PAL)\"},D69559F9C9DC6EF528D841BF9D91B275:{n:\"StarMaster (1982) (Activision)\"},\"73C839AFF6A055643044D2CE16B3AAF7\":{n:\"StarMaster (1982) (Activision) (PAL)\"},\"348615FFA30FAB3CEC1441B5A76E9460\":{n:\"StarMaster (1982) (Activision) (PAL) [fixed]\"},D62D7D1A974C31C5803F96A8C1552510:{n:\"StarMaster (Unknown) (PAL)\"},\"1542662F665D2FFAA77B4B897DD2E2AF\":{n:\"Starfield (V1.0) (2002) (MP)\"},\"91D1C82CEAF8AF2ADD3973A3C34BC0CB\":{n:\"Starfield Demo 1 (20-12-2002) (CT)\"},\"68FEB6D6FF63E80DF1302D8547979AEC\":{n:\"Starfield Demo 2 (20-12-2002) (CT)\"},\"0C48E820301251FBB6BCDC89BD3555D9\":{n:\"Stargate (1984) (Atari)\"},\"493DE059B32F84AB29CDE6213964AEEE\":{n:\"Stargate (1984) (Atari) (PAL)\"},A3C1C70024D7AABB41381ADBFB6D3B25:{n:\"Stargunner (1982) (Telesys)\"},E5BACF526036D3C8C99DB5B030CF00E7:{n:\"Starmaster (Genesis)\"},C5BAB953AC13DBB2CBA03CD0684FB125:{n:\"Stay Frosty (SpiceWare)\",c:1},\"1FA86282403FA35D103AB88A9D603C31\":{n:\"Stay Frosty (SpiceWare) (PAL60)\",c:1},\"1619BC27632F9148D8480CD813AA74C3\":{n:\"Steeple Chase (Thomas Jentzsch)\",c:1},F75872946E82AD74D48EAE5BC28F5F0E:{n:\"Steeplechase (04-15-1980) (Sears) (Prototype)\",p:1},\"656DC247DB2871766DFFD978C71DA80C\":{n:\"Steeplechase (1980) (Sears)\",p:1},A174CECE06B3ABC0AEC3516913CDF9CC:{n:\"Steeplechase (1980) (Sears) (4K)\",p:1},F1EEECCC4BBA6999345A2575AE96508E:{n:\"Steeplechase (1983) (Video Gems) (PAL)\",c:1},\"3CDD91E1C28D28E856C0063D602DA166\":{n:\"Stell-A-Sketch (03-11-1997) (Bob Colbert) (PD)\",c:1},\"47AEF18509051BAB493589CB2619170B\":{n:\"Stell-A-Sketch (Bob Colbert) (PD)\",c:1},\"18ED63E3CE5BC3DD2D8BD188B807F1A2\":{n:\"Stell-A-Sketch (Bob Colbert) (PD) [a1]\",c:1},\"0B8D3002D8F744A753BA434A4D39249A\":{n:\"Stellar Track (1980) (Sears)\",c:1},\"23FAD5A125BCD4463701C8AD8A0043A9\":{n:\"Stone Age (1983) (CCE)\"},B17B9CC4103844DCDA54F77F44ACC93A:{n:\"Stopp die Gangster (1983) (Quelle) (PAL)\"},F240BA9F8092D2E8A4C7D82C554BF509:{n:\"Strahlen der Teufelsvoegel (1983) (Quelle) (PAL)\"},\"807A8FF6216B00D52ABA2DFEA5D8D860\":{n:\"Strat-O-Gems Deluxe (2005) (J. Payson)\"},EF76EA05655A0B62CB1018C92B9B4B7D:{n:\"Strategy X (1983) (Gakken) (PAL)\"},\"9333172E3C4992ECF548D3AC1F2553EB\":{n:\"Strategy X (1983) (Konami)\"},E10D2C785AADB42C06390FAE0D92F282:{n:\"Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros)\"},\"516FFD008057A1D78D007C851E6EFF37\":{n:\"Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros) (PAL)\"},\"8A6C84F481ACF42ABCB78BA5064AD755\":{n:\"Street Racer (128-in-1 Junior Console) (PAL) (4K)\",p:1},\"396F7BC90AB4FA4975F8C74ABE4E81F0\":{n:\"Street Racer (1977) (Atari)\",p:1},\"6FF4156D10B357F61F09820D03C0F852\":{n:\"Street Racer (1977) (Atari) (4K)\",p:1},E12E32DEE68201B6765FCD0ED54D6646:{n:\"Street Racer (1977) (Atari) (PAL)\",p:1},\"7B3CF0256E1FA0FDC538CAF3D5D86337\":{n:\"Stronghold (1983) (CommaVid)\"},C3BBC673ACF2701B5275E85D9372FACF:{n:\"Stunt Cycle (07-21-1980) (Atari) (Prototype)\"},D7759FA91902EDD93F1568A37DC70CDB:{n:\"Stunt Cycle (1980) (Atari) (Prototype) (4K)\"},ED0AB909CF7B30AFF6FC28C3A4660B8E:{n:\"Stunt Man (1983) (Panda)\"},\"5AF9CD346266A1F2515E1FBC86F5186A\":{n:\"Sub-Scan (1982) (Sega)\"},B095009004DF341386D22B2A3FAE3C81:{n:\"Sub-Scan (Unknown) (PAL)\"},F3F5F72BFDD67F3D0E45D097E11B8091:{n:\"Submarine Commander (1982) (Sears)\"},\"93C52141D3C4E1B5574D072F1AFDE6CD\":{n:\"Subterranea (1983) (Imagic)\"},\"38DE7B68379770B9BD3F7BF000136EB0\":{n:\"Subterranea (1983) (Imagic) (PAL)\"},D8E4C8E2D210270CD1E0F6D1B4582B91:{n:\"Subterranea (1983) (Imagic) (PAL) [a]\"},\"4AB4AF3ADCDAE8CDACC3D06084FC8D6A\":{n:\"Sucky Zepplin (Nick Bensema) (PD)\"},CFF578E5C60DE8CAECBEE7F2C9BBB57B:{n:\"Suicide Adventure (George Veeder) (Hack)\"},E4C666CA0C36928B95B13D33474DBB44:{n:\"Suicide Mission (1982) (Arcadia)\",c:1},EB92193F06B645DF0B2A15D077CE435F:{n:\"Suicide Mission (1982) (Arcadia) (PAL)\",c:1},CD98BE8A48EBF610C9609A688B9C57F2:{n:\"Suicide Mission (1982) (Arcadia) (Prototype)\",c:1},\"753375D183C713CFA0AA7298D1F3067B\":{n:\"Suicide Mission (1982) (Arcadia) [a]\",c:1},\"463DD4770506E6C0EF993A40C52C47BE\":{n:\"Suicide Mission (Preview) (1982) (Arcadia)\",c:1},B4F05E544834D0238A0C263491775EDF:{n:\"Suicide Mission (Preview) (1982) (Arcadia) (PAL)\",c:1},\"45027DDE2BE5BDD0CAB522B80632717D\":{n:\"Summer Games (1987) (Epyx)\"},\"12BCA8305D5AB8EA51FE1CFD95D7AB0E\":{n:\"Summer Games (1987) (Epyx) (PAL)\"},\"4F2D47792A06DA224BA996C489A87939\":{n:\"Super Action Pak - Pitfall, Barnstorming, Grand Prix, Laser Blast (1988) (HES) (PAL)\"},\"7ADBCF78399B19596671EDBFFC3D34AA\":{n:\"Super Baseball (1988) (Atari)\"},\"0751F342EE4CF28F2C9A6E8467C901BE\":{n:\"Super Baseball (1988) (Atari) (PAL)\"},FAED2EF6B44894F8C83F2B50891C35C6:{n:\"Super Baseball (CCE)\"},\"1C85C0FC480BBD69DC301591B6ECB422\":{n:\"Super Box (CCE)\"},\"8885D0CE11C5B40C3A8A8D9ED28CEFEF\":{n:\"Super Breakout (1982 - 1981) (Atari)\",p:1},EE4C186123D31A279ED7A84D3578DF23:{n:\"Super Breakout (1982 - 1981) (Atari) (PAL)\",p:1},\"0AD9A358E361256B94F3FB4F2FA5A3B1\":{n:\"Super Breakout (1982 - 1981) (Atari) [a]\",p:1},\"9D37A1BE4A6E898026414B8FEE2FC826\":{n:\"Super Challenge Baseball (1982) (M Network)\"},DAB844DEED4C752632B5E786B0F47999:{n:\"Super Challenge Baseball (208 in 1) (Unknown) (PAL)\"},\"1D6ED6FE9DFBDE32708E8353548CBB80\":{n:\"Super Challenge Baseball (Jone Yuan)\"},E275CBE7D4E11E62C3BFCFB38FCA3D49:{n:\"Super Challenge Football (1982) (M Network)\"},FEBA8686FD0376015258D1152923958A:{n:\"Super Circus (Unknown) (PAL)\"},C29F8DB680990CB45EF7FEF6AB57A2C2:{n:\"Super Cobra (1982) (Parker Bros)\"},D326DB524D93FA2897AB69C42D6FB698:{n:\"Super Cobra (1982) (Parker Bros) (PAL)\"},\"5F7DE62A408B9DE3A1168898298FD31D\":{n:\"Super Cobra (Genesis)\"},C7900A7FE95A47EEF3B325072AD2C232:{n:\"Super Congo Bongo (2003) (Larry Petit) (Hack)\"},\"638CC82EA96F67674595BA9AE05DA6C6\":{n:\"Super Ferrari (Rainbow Vision) (PAL)\"},\"09ABFE9A312CE7C9F661582FDF12EAB6\":{n:\"Super Football (1988) (Atari)\"},\"262CCB882FF617D9B4B51F24AEE02CBE\":{n:\"Super Football (1988) (Atari) (PAL)\"},\"2447E17A4E18E6B609DE498FE4AB52BA\":{n:\"Super Futebol (CCE)\",c:1},\"2F0A8BB4E18839F9B1DCAA2F5D02FD1D\":{n:\"Super Futebol (CCE) [a]\",c:1},C08D0CEE43077D3055FEBB00E5745C1D:{n:\"Super Hit Pak - River Raid, Sky Jinks, Grand Prix, Fishing Derby, Checkers (HES) (PAL)\"},\"08D1B6D75206EDB999252CAF542A2C7F\":{n:\"Super Home Run (2003) (Larry Petit) (Hack)\"},\"645BF7F9146F0E4811FF9C7898F5CD93\":{n:\"Super Kung-Fu (1983) (Xonox) (PAL)\"},\"3B2C32FCD331664D037952BCAA62DF94\":{n:\"Super Kung-Fu (1983) (Xonox) (PAL) [a]\"},\"0E7E73421606873B544E858C59DC283E\":{n:\"Super Soccer (Digivision)\",c:1},\"3E7D10D0A911AFC4B492D06C99863E65\":{n:\"Super Tenis (VGS)\"},\"53B66F11F67C3B53B2995E0E02017BD7\":{n:\"Super Tennis (1983) (CCE)\"},\"517923E655755086A3B72C0B17B430E6\":{n:\"Super Tennis (Tron)\"},CBC373FBCB1653B4C56BFABBA33EA50D:{n:\"Super Voleyball (CCE)\"},BDECC81F740200780DB04A107C3A1EBA:{n:\"Super-Cowboy beim Rodeo (1983) (Quelle) (PAL)\"},CC2973680C150886CCE1ED8693C3ACA2:{n:\"Super-Cowboy beim Rodeo (1983) (Quelle) (PAL) (4K)\"},\"2B27EB194E13F3B38D23C879CC1E3ABF\":{n:\"Super-Ferrari (1983) (Quelle) (PAL)\"},\"85502D69FE46B7F54EF2598225678B47\":{n:\"Super-Ferrari (Jone Yuan)\"},\"724613EFFAF7743CBCD695FAB469C2A8\":{n:\"Super-Ferrari (Unknown)\"},\"4565C1A7ABCE773E53C75B35414ADEFD\":{n:\"Supercharger BIOS (1982) (Arcadia)\"},A9531C763077464307086EC9A1FD057D:{n:\"Superman (1979) (Atari)\"},\"3619786F6A32EFC1E4A262D5ACA8A070\":{n:\"Superman (1979) (Atari) (8K)\"},DBB10B904242FCFB8428F372E00C01AF:{n:\"Superman (1979) (Atari) (PAL)\"},FD10915633AEA4F9CD8B518A25D62B55:{n:\"Superman (1979) (Atari) (PAL) [a]\"},\"5DE8803A59C36725888346FDC6E7429D\":{n:\"Superman (1979) (Atari) [fixed]\"},\"149B543C917C180A1B02D33C12415206\":{n:\"Superman (1983) (CCE)\"},CCB807EB79B0ED0F5FDC460445EF703A:{n:\"Superman (Stunt_Cycle_Rules!) (Hack)\"},\"6FAC680FC9A72E0E54255567C72AFE34\":{n:\"Superman (Unknown) (PAL)\"},\"169D4C7BD3A4D09E184A3B993823D048\":{\nn:\"Superman (Unknown) (PAL) [a]\"},AEC9B885D0E8B24E871925630884095C:{n:\"Surf's Up (1983) (Amiga) (Prototype)\"},A2170318A8EF4B50A1B1D38567C220D6:{n:\"Surf's Up (1983) (Amiga) (Prototype) [a]\"},C20F15282A1AA8724D70C117E5C9709E:{n:\"Surfer's Paradise (1983) (Video Gems) (PAL)\"},\"59B70658F9DD0E2075770B07BE1A35CF\":{n:\"Surfer's Paradise (Thomas Jentzsch)\"},\"4D7517AE69F95CFBC053BE01312B7DBA\":{n:\"Surround (1977) (Atari)\"},\"31D08CB465965F80D3541A57EC82C625\":{n:\"Surround (1977) (Atari) (4K)\"},\"52A0003EFB3B1C49FCDE4DBC2C685D8F\":{n:\"Surround (1977) (Atari) (4K) [a]\"},C370C3268AD95B3266D6E36FF23D1F0C:{n:\"Surround (1977) (Atari) (PAL)\"},A60598AD7EE9C5CCAD42D5B0DF1570A1:{n:\"Surround (32 in 1) (1988) (Atari) (PAL)\"},\"5C86E938E0845B9D61F458539E9A552B\":{n:\"Surround (32 in 1) (1988) (Atari) (PAL) (4K)\"},D89FEDDED0436FDEDA7C3C37E2FB7CF1:{n:\"Surround (Unknown) (PAL) (4K)\"},\"4C462B2B6FB0A19A1437EB2C3DC20783\":{n:\"Survival Island (1 of 3) (1983) (Arcadia)\"},B6E40BCE550672E5495A8CDDE7075B8B:{n:\"Survival Island (1 of 3) (1983) (Arcadia) (PAL)\"},\"045035F995272EB2DEB8820111745A07\":{n:\"Survival Island (1983) (Arcadia)\"},\"84DB818CD4111542A15C2A795369A256\":{n:\"Survival Island (1983) (Arcadia) (PAL)\"},\"691D67910B08B63DE8631901D1887C1F\":{n:\"Survival Island (1983) (Arcadia) [a]\"},B31DC989F594764EACFA7931CEAD0050:{n:\"Survival Island (2 of 3) (1983) (Arcadia)\"},\"277C7281AC945B8331E2E6FCAD560C11\":{n:\"Survival Island (2 of 3) (1983) (Arcadia) (PAL)\"},\"4A9009620038F7F30AAEB2A00AE58FDE\":{n:\"Survival Island (3 of 3) (1983) (Arcadia)\"},\"76C685D1A60C0107AA54A772113A2972\":{n:\"Survival Island (3 of 3) (1983) (Arcadia) (PAL)\"},\"59E53894B3899EE164C91CFA7842DA66\":{n:\"Survival Run (1983) (Data Age) (Prototype)\"},\"85E564DAE5687E431955056FBDA10978\":{n:\"Survival Run (1983) (Milton Bradley)\",c:1},C7600D72247C5DFA1EC1A88D23E6C85E:{n:\"Sweat! - The Decathlon Game (1 of 3) (1983) (Arcadia) (Prototype)\",p:1},E51C23389E43AB328CCFB05BE7D451DA:{n:\"Sweat! - The Decathlon Game (1983) (Arcadia) (Prototype)\",p:1},\"5EC73AC7D2AC95AC9530C6D33E713D14\":{n:\"Sweat! - The Decathlon Game (2 of 3) (1983) (Arcadia) (Prototype)\",p:1},\"1E060A8025512AD2127E3DA11E212CCC\":{n:\"Sweat! - The Decathlon Game (3 of 3) (1983) (Arcadia) (Prototype)\",p:1},\"528400FAD9A77FD5AD7FC5FDC2B7D69D\":{n:\"Sword of Saros (1983) (Arcadia)\"},\"8B7CA29A55432F886CEE3D452FB00481\":{n:\"Sword of Saros (1983) (Arcadia) (PAL)\"},\"545048CCB045F9EFC6CF2B125CD0DFA8\":{n:\"Sword of Saros (1983) (Arcadia) [a]\"},\"5AEA9974B975A6A844E6DF10D2B861C4\":{n:\"SwordQuest - EarthWorld (1982) (Atari)\"},A875F0A919129B4F1B5103DDD200D2FE:{n:\"SwordQuest - EarthWorld (1982) (Atari) (PAL)\"},\"05EBD183EA854C0A1B56C218246FBBAE\":{n:\"SwordQuest - EarthWorld (1982) (Atari) [a]\"},F9D51A4E5F8B48F68770C89FFD495ED1:{n:\"SwordQuest - FireWorld (1982) (Atari)\"},BF976CF80BCF52C5F164C1D45F2B316B:{n:\"SwordQuest - FireWorld (1982) (Atari) (PAL)\"},\"3882224ADBD0CA7C748B2A1C9B87263E\":{n:\"SwordQuest - FireWorld (1982) (Atari) (PAL) [a]\"},BC5389839857612CFABEB810BA7EFFDC:{n:\"SwordQuest - WaterWorld (1983) (Atari)\"},\"87662815BC4F3C3C86071DC994E3F30E\":{n:\"Swordfight (1983) (Intellivision)\"},D0B9F705AA5F61F47A748A66009AE2D2:{n:\"Synthcart (14-01-2002) (Paul Slocum)\",c:1},\"2C2AEA31B01C6126C1A43E10CACBFD58\":{n:\"Synthcart (2002) (Paul Slocum)\",c:1},\"8B556C3D9CA8E5E6E665BD759B93FFAE\":{n:\"Synthcart (2002) (Paul Slocum) (PAL) [!]\",c:1},\"896EC58F26E930E02F5E4F046602C3A1\":{n:\"Synthcart (Beta) (2002) (Paul Slocum)\",c:1},\"8933976F2029C0D8492EBD8F4EB21492\":{n:\"Synthcart Plus (09-02-2003) (Paul Slocum)\"},\"294762000E853B4319F9991C1CED5DFC\":{n:\"T.F. Space Invaders (Hack)\"},BECD908F9D7BB361982C3DC02D6475C6:{n:\"THX-1138 (Kyle Pittman) (Hack)\"},\"6FFC95108E5ADD6F9B8ABCAF330BE835\":{n:\"TP Bug (Charles Morgan) (Hack)\"},FB27AFE896E7C928089307B32E5642EE:{n:\"TRON - Deadly Discs (1982) (M Network)\"},\"9E5007131695621D06902AB3C960622A\":{n:\"Tac Scan (1983) (Sega) [h1]\",p:1,c:1},D45EBF130ED9070EA8EBD56176E48A38:{n:\"Tac-Scan (1982) (Sega)\",p:1,c:1},\"06E5DC181A8EDA1C31CC7C581C68B6EF\":{n:\"Tac-Scan (Unknown) (PAL)\",c:1},C77D3B47F2293E69419B92522C6F6647:{n:\"Tank Brigade (1983) (Panda)\"},AD8072675109D13FDD31A2E0403D5CFF:{n:\"Tank City (Funvision)\"},FA6FE97A10EFB9E74C0B5A816E6E1958:{n:\"Tanks But No Tanks (1983) (ZiMAG)\"},\"082FDC8BD47FEF01482CE5883C4FFDB8\":{n:\"Tanks DX (Charles Morgan) (Hack)\"},\"1A613CE60FC834D4970E1E674B9196B3\":{n:\"Tanks War (1983) (Home Vision) (PAL)\"},DE3D0E37729D85AFCB25A8D052A6E236:{n:\"Tapeworm (1982) (Spectravision)\",c:1},\"8ED73106E2F42F91447FB90B6F0EA4A4\":{n:\"Tapeworm (1982) (Spectravision) (PAL)\",c:1},\"33CAC5E767A534C95D292B04F439DC37\":{n:\"Tapeworm (Jone Yuan)\"},C0D2434348DE72FA6EDCC6D8E40F28D7:{n:\"Tapper (1984) (Sega)\"},\"2D6741CDA3000230F6BBDD5E31941C01\":{n:\"Targ (1983) (CBS Electronics) (Prototype)\"},\"3D6FC7A19BE76D808AA233415CB583FC\":{n:\"Target Practice (1983) (CCE)\"},\"7DD9C5284422F729066AB22A284C8283\":{n:\"Target Practice (1983) (CCE) [a]\"},\"0C35806FF0019A270A7ACAE68DE89D28\":{n:\"Task Force (1987) (Froggo)\"},A1EAD9C181D67859AA93C44E40F1709C:{n:\"Tax Avoiders (1982) (American Videogame)\"},\"360BA640F6810EC902B01A09CC8AB556\":{n:\"Taz (06-15-1983) (Atari) (Prototype) (PAL)\"},B31F178AA0D569CCCAC7959F84E0A724:{n:\"Taz (07-13-1983) (Atari) (Prototype)\"},\"9A01115206F32EB0B539C7E5A47CCAFA\":{n:\"Taz (07-15-1983) (Atari) (Prototype)\"},\"7574480AE2AB0D282C887E9015FDB54C\":{n:\"Taz (1983) (Atari)\"},\"0D09CFF0D28033C02C3290EDFC3A5CEA\":{n:\"Taz (1983) (Atari) (Prototype)\"},\"76809EB1EE0DB8A318308A5CDDA0F4E2\":{n:\"Taz (1983) (Atari) (Prototype) [a]\"},\"4702D8D9B48A332724AF198AEAC9E469\":{n:\"Taz (1983) (Atari) [a]\"},AB60EA7B707C58D356CAD858EB18DB43:{n:\"Tazer (John K. Harvey)\"},\"8C2FA33048F055F38358D51EEFE417DB\":{n:\"Teddy Apple (1983) (Home Vision) (PAL)\",c:1},\"3D7AAD37C55692814211C8B590A0334C\":{n:\"Telepathy (1983) (Atari) (Prototype)\"},AE97CF8ED21F4154B4360A3CF6C95C5E:{n:\"Teleterm 2600 (John K. Harvey) (PD)\"},\"203B1EFC6101D4B9D83BB6CC1C71F67F\":{n:\"Teller-Jonglieren! (1983) (Quelle) (PAL)\",c:1},C830F6AE7EE58BCC2A6712FB33E92D55:{n:\"Tempest (01-05-1984) (Atari) (Prototype)\"},\"42CDD6A9E42A3639E190722B8EA3FC51\":{n:\"Tennis (1981) (Activision)\"},\"961112B74A920A5242E233480326C356\":{n:\"Tennis (1981) (Activision) (16K)\"},ACA09FFEA77174B148B96B205109DB4D:{n:\"Tennis (1981) (Activision) (4K)\"},\"74EBACA101CC428CF219F15DDA84B6F8\":{n:\"Tennis (1981) (Activision) (8K)\"},A5C96B046D5F8B7C96DAAA12F925BEF8:{n:\"Tennis (1981) (Activision) (PAL)\"},CA7F166A94EED1A349DEC6D6A358BCAD:{n:\"Tennis (1981) (Activision) (PAL) (4K)\"},\"73EFA9F3CBE197F26E0FB87132829232\":{n:\"Tennis (1983) (CCE) (4K)\"},\"04B488D4EEF622D022A0021375E7E339\":{n:\"Tennis (1983) (Home Vision) (PAL) (4K)\"},A3F8AEBB38182749CB8DA85CFBC63D7C:{n:\"Tennis (208 in 1) (Unknown) (PAL) (Hack)\"},\"16E04823887C547DC24BC70DFF693DF4\":{n:\"Tennis (32 in 1) (1988) (Atari) (PAL)\"},\"30685B9B6EBD9BA71536DD7632A1E3B6\":{n:\"Tennis (Dactari)\"},\"736388D73198552D77D423962000006F\":{n:\"Tennis (Dactari) (4K)\"},\"1F5A2927A0B2FAF87540B01D9D7D7FD1\":{n:\"Tennis (Pet Boat) (PAL)\"},\"61E0F5E1CC207E98704D0758C68DF317\":{n:\"Tennis (Star Game)\"},A3873D7C544AF459F40D58DFCFB78887:{n:\"Tennis (Unknown)\"},\"6697F177847C70505824422E76AAD586\":{n:\"Tennis (Unknown) (PAL) (4K)\"},E3ED4BA3361756970F076E46E9CAD1D2:{n:\"Tennis (Unknown) (PAL) (4K) [a]\"},\"20AE62FB69C6CC6E8098CCA8CD080487\":{n:\"Tennis (Zirok)\"},\"67631EA5CFE44066A1E76DDCB6BCB512\":{n:\"Termool (Unknown) (PAL)\"},\"05C60458EC69E7FE8B1BE973852D84F1\":{n:\"Test (1996) (J.V. Matthews) (PD)\"},F0631C6675033428238408885D7E4FDE:{n:\"Test Cart (2002) (Paul Slocum)\",c:1},B0E1EE07FBC73493EAC5651A52F90F00:{n:\"Tetris 2600 (Colin Hughes)\",c:1},CAE8F83C06831EC7BB6A3C07E98E9342:{n:\"Tetris 2600 (Colin Hughes) [o1]\",c:1},\"5EEB81292992E057B290A5CD196F155D\":{n:\"Texas Chainsaw Massacre, The (1983) (Wizard Video)\"},\"3316EE2F887E9CB9B54DD23C5B98C3E2\":{n:\"Texas Golf (miniature Gold Hack)\"},\"4476C39736090DABAC09F6CAF835FC49\":{n:\"Text Screen (25-01-2003) (AD)\"},\"3B64A00CE147C3C29F7F8F8E531D08D8\":{n:\"This Planet Sucks (16K) (Greg Troutman)\"},\"5FB71CC60E293FE10A5023F11C734E55\":{\nn:\"This Planet Sucks (Fix) (27-12-2002) (Greg Troutman)\"},A98B649912B6CA19EAF5C2D2FAF38562:{n:\"This Planet Sucks (Greg Troutman) (PAL) [!]\"},DFE6AA7443BB813CEFA35A4CF4887422:{n:\"This Planet Sucks (Greg Troutman) [a1]\"},\"0ACAF71E60B89F6B6EAB63DB6AB84510\":{n:\"This Planet Sucks (Greg Troutman) [a2]\"},\"225522777DC7155627808BDE0C1D0EF0\":{n:\"This Planet Sucks Demo 1 (Greg Troutman) (PD)\"},\"8530CAAAF40ACBDCD118C282B5F8A37A\":{n:\"This Planet Sucks Demo 2 (Greg Troutman) (PD)\"},\"7F790939F7EAA8C47A246C4283981F84\":{n:\"This Planet Sucks Demo 3 (Greg Troutman) (PD)\"},E56DA674188BA2F02C7A0A343A01236F:{n:\"This Planet Sucks Demo 4 (Greg Troutman) (PD)\"},\"65C6406F5AF934590097C8C032EBB482\":{n:\"Three Hugger (Pave Demo) (20-12-2002) (Billy Eno)\"},E63A87C231EE9A506F9599AA4EF7DFB9:{n:\"Threshold (1982) (Tigervision)\"},\"67684A1D18C85FFA5D82DAB48FD1CB51\":{n:\"Threshold (1982) (Tigervision) (PAL)\"},\"346555779A2D51B48833463B5433472F\":{n:\"Thrust (V0.1) (2000) (TJ)\"},\"1442D1B35A6478FBA22AE7DD1FCB5634\":{n:\"Thrust (V0.2) (2000) (TJ)\"},BA3B0EEBCCC7B791107DE5B4ABB671B4:{n:\"Thrust (V0.9) (2000) (TJ)\"},\"041B5E56BBC650DB574BD8DB3FAE2696\":{n:\"Thrust (V1.0) (2000) (TJ)\"},\"98FA3AD778A668A79449350DE4B3B95B\":{n:\"Thrust (V1.1) (2000) (TJ)\"},FC668A2251DD79CBD903D4FA0E558F96:{n:\"Thrust (V1.1) (2000) (TJ) [a1]\"},E1E09E2F280E8E142121A377D0DC1B46:{n:\"Thrust (V1.21) (2000) (TJ)\"},DE7BCA4E569AD9D3FD08FF1395E53D2D:{n:\"Thrust (V1.22) (2000) (TJ)\"},CF507910D6E74568A68AC949537BCCF9:{n:\"Thunderground (1983) (Sega)\",c:1},\"1428029E762797069AD795CE7C6A1A93\":{n:\"Thunderground (Unknown) (PAL)\",c:1},C032C2BD7017FDFBBA9A105EC50F800E:{n:\"Thwocker (04-09-1984) (Activision) (Prototype)\"},\"79D6F61DA3C64688AC8E075667F8A39F\":{n:\"Tie-Fighters (MP)\"},\"7576DD46C2F8D8AB159D97E3A3F2052F\":{n:\"Time Machine (1983) (Goliath) (PAL)\"},FC2104DD2DADF9A6176C1C1C8F87CED9:{n:\"Time Pilot (1983) (Coleco)\"},\"4E99EBD65A967CABF350DB54405D577C\":{n:\"Time Pilot (1983) (Coleco) [b1]\"},\"5DB9E5BF663CAD6BF159BC395F6EAD53\":{n:\"Time Race (1983) (Goliath) (PAL)\"},\"71F09F128E76EB14E244BE8F44848759\":{n:\"Time Race (Funvision) (PAL)\"},\"00EAEE22034AFF602F899B684C107D77\":{n:\"Time Race (Rainbow Vision) (PAL)\"},EFB47D70B2965CE689E2C5757616B286:{n:\"Time Test Demo (Eckhard Stolberg) (PAL) (PD)\"},D6D1DDD21E9D17EA5F325FA09305069C:{n:\"Time Warp (1982) (Funvision) (PAL)\"},BC3057A35319AAE3A5CD87A203736ABE:{n:\"Time Warp (1983) (CCE)\"},\"619DE46281EB2E0ADBB98255732483B4\":{n:\"Time Warp (Unknown)\"},\"6D9AFD70E9369C2A6BFF96C4964413B7\":{n:\"Time Warp (Unknown) (PAL)\"},B879E13FD99382E09BCAF1D87AD84ADD:{n:\"Time Warp (Zellers)\"},FB09EE4CCD47AE74A3C314F0D8A40344:{n:\"Titans (SnailSoft)\"},\"12123B534BDEE79ED7563B9AD74F1CBD\":{n:\"Title Match Pro Wrestling (1987) (Absolute)\"},\"153F40E335E5CB90F5CE02E54934AB62\":{n:\"Title Match Pro Wrestling (1987) (Absolute) (PAL)\"},DA6465A34D2E44D26AA9A2A0CD1BCE4D:{n:\"Title Match Pro Wrestling (1987) (Absolute) [a]\"},\"784176346E9422733D55C427230E5BAD\":{n:\"Title Match Pro Wrestling (1989) (Activision)\"},\"3B9480BB6FB1E358C9C0A64E86945AEE\":{n:\"Title Match Pro Wrestling (2002) (Skyworks)\"},DE61A0B171E909A5A4CFCF81D146DBCB:{n:\"Tom Boy (Rainbow Vision) (PAL)\"},ECE908D77AB944F7BAC84322B9973549:{n:\"Tom Boy (Unknown) (PAL60)\"},D85F1E35C5445AC898746719A3D93F09:{n:\"Tom's Eierjagd (1983) (Quelle) (PAL)\"},C05F367FA4767CEB27ABADF0066DF7F4:{n:\"TomInv (31-07-2001) (TJ)\"},\"32DCD1B535F564EE38143A70A8146EFE\":{n:\"Tomarc the Barbarian (1983) (Xonox)\"},\"8BC0D2052B4F259E7A50A7C771B45241\":{n:\"Tomarc the Barbarian (1983) (Xonox) [a]\"},BE2870A0120FD28D25284E9CCDCBDC99:{n:\"Tomb Raider 2600 [REV 01] (Montezuma's Revenge Hack)\"},E0221C95AA657F5764EEEB64C8429258:{n:\"Tomb Raider 2600 [REV 02] (Montezuma's Revenge Hack)\"},\"5B574FAA56836DA0866BA32AE32547F2\":{n:\"Tomb Raider 2600 [REV 03] (Montezuma's Revenge Hack)\"},\"3AC6C50A8E62D4CE71595134CBD8035E\":{n:\"Tomcat (1988) (Absolute)\"},\"155FA7F479DCBA3B10B1494E236D6010\":{n:\"Tomcat (2002) (Skyworks) (PAL)\"},FA2BE8125C3C60AB83E1C0FE56922FCB:{n:\"Tooth Protectors (1983) (DSD-Camelot)\",c:1},E0B24C3F40A46CDA52E29835AB7AD660:{n:\"Top Gun (1983) (Quelle) (PAL)\"},\"01ABCC1D2D3CBA87A3AA0EB97A9D7B9C\":{n:\"Topy (Jone Yuan)\"},\"0AA208060D7C140F20571E3341F5A3F8\":{n:\"Towering Inferno (1982) (U.S. Games)\",c:1},\"15FE28D0C8893BE9223E8CB2D032E557\":{n:\"Towering Inferno (208 in 1) (Unknown) (PAL)\",c:1},F39E4BC99845EDD8621B0F3C7B8C4FD9:{n:\"Toyshop Trouble (AtariAge)\",p:1},\"6AE4DC6D7351DACD1012749CA82F9A56\":{n:\"Track and Field (1984) (Atari)\"},\"66706459E62514D0C39C3797CBF73FF1\":{n:\"Treasure Below (1983) (Video Gems) (PAL)\"},\"81414174F1816D5C1E583AF427AC89FC\":{n:\"Treasure Below (Thomas Jentzsch)\"},B86A12E53AB107B6CAEDD4E0272AA034:{n:\"Treasure Hunting (Funvision)\"},\"1BB91BAE919DDBD655FA25C54EA6F532\":{n:\"Treasure Island (Suntek) (PAL)\"},D6A44277C3EB4F9D039185E0ECF7BFA6:{n:\"Trick (1997) (Eckhard Stolberg)\"},\"0CC8224FF1EDFE458E8629E9E5FE3F5B\":{n:\"Trick 12 (2001) (TJ)\"},\"24DF052902AA9DE21C2B2525EB84A255\":{n:\"Trick Shot (1982) (Imagic)\",c:1},\"097936B07E0E0117B9026AE6835EB168\":{n:\"Trick Shot (1982) (Imagic) (PAL)\",c:1},DCA90EA1084A2FDBE300D7178CA1A138:{n:\"Trick Shot (1982) (Imagic) (PAL) [a]\",c:1},\"8F613EA7C32A587D6741790E32872DDD\":{n:\"Troll Demo (PD)\"},E7A758BB0B43D0F7004E92B9ABF4BC83:{n:\"Troll's Adventure (Hack)\"},DF3E6A9B6927CF59B7AFB626F6FD7EEA:{n:\"Tuby Bird (208 in 1) (Unknown) (PAL)\"},E957EB4612D6BD5940D3492DFA749668:{n:\"Tunnel Demo (27-03-2003) (CT)\"},A14D8A388083C60283E00592B18D4C6C:{n:\"Tunnel Demo (28-03-2003) (AD)\"},\"18D26111CEF66DFF0C8AF8CF0E117843\":{n:\"Tunnel Demo (Cycling Colours 2) (29-03-2003) (AD)\"},\"265A85F66544EAF95FDA06C3D9E48ABF\":{n:\"Tunnel Demo (Cycling Colours) (29-03-2003) (AD)\"},AE047E9468BDA961D8E9E9D8FF52980F:{n:\"Tunnel Demo (Red Spiral) (30-03-2003) (AD)\"},D8B2C81CEA5AF04F795EB3DC6573D72B:{n:\"Tunnel Demo 2 (27-03-2003) (CT)\"},B2737034F974535F5C0C6431AB8CAF73:{n:\"Tunnel Runner (1983) (CBS Electronics)\"},\"7648E72A5B5899076688DF18A1DDCF72\":{n:\"Tunnel Runner (1983) (CBS Electronics) (Prototype)\"},EFEFC02BBC5258815457F7A5B8D8750A:{n:\"Tunnel Runner (1983) (CBS Electronics) [a]\"},D9AB6B67A17DA51E5AD13717E93FA2E2:{n:\"Turbo (Coleco) Prototype Fake v0.1 (TJ)\"},DD4F4E0FBD81762533E39E6F5B55BB3A:{n:\"Turbo WIP (TJ)\"},\"7A5463545DFB2DCFDAFA6074B2F2C15E\":{n:\"Turmoil (1982) (20th Century Fox)\"},\"46258BD92B1F66F4CB47864D7654F542\":{n:\"Turmoil (Zellers)\"},\"085322BAE40D904F53BDCC56DF0593FC\":{n:\"Tutankham (1983) (Parker Bros)\"},\"66C2380C71709EFA7B166621E5BB4558\":{n:\"Tutankham (1983) (Parker Bros) (PAL)\"},\"6FC27A9233FC69D28D3F190B4FF80F03\":{n:\"UFO #6 (Charles Morgan) (Hack)\"},\"6BB09BC915A7411FE160D0B2E4D66047\":{n:\"UFO (32 in 1) (1988) (Atari) (PAL)\"},B290C2B139344FCFF5B312C71B9AC3B2:{n:\"UFO (32 in 1) (1988) (Atari) (PAL) (4K)\"},CA50CC4B21B0155255E066FCD6396331:{n:\"UFO Patrol (Suntek) (PAL)\",c:1},\"1278F74CA1DFAA9122DF3ECA3C5BCAAD\":{n:\"Ungeheuer der Tiefe (Quelle) (PAL)\"},\"81A010ABDBA1A640F7ADF7F84E13D307\":{n:\"Universal Chaos (1989) (Telegames)\",c:1},E020F612255E266A8A6A9795A4DF0C0F:{n:\"Universal Chaos (1989) (Telegames) (PAL)\"},\"5F950A2D1EB331A1276819520705DF94\":{n:\"Unknown 20th Century Fox Game (1983) (20th Century Fox) (Prototype)\",c:1},\"841B7BC1CAD05F5408302308777D49DC\":{n:\"Unknown Activision Game #1 (10-22-1982) (Activision) (Prototype)\"},EE681F566AAD6C07C61BBBFC66D74A27:{n:\"Unknown Activision Game #1 (10-29-1982) (Activision) (Prototype)\"},\"8055B9C2622136FD91EDFEA6DF642DAF\":{n:\"Unknown Activision Game #1 (1983) (Activision) (Prototype) (PAL)\"},\"700A786471C8A91EC09E2F8E47F14A04\":{n:\"Unknown Activision Game #2 (1983) (Activision) (Prototype)\"},\"06B0194CE992584C365278E0D7323279\":{n:\"Unknown Activision Game #2 (Prototype) (PAL)\"},\"73E66E82AC22B305EB4D9578E866236E\":{n:\"Unknown Datatech Game (Jone Yuan)\"},C3205E3707F646E1A106E09C5C49C1BF:{n:\"Unknown Title (bin00003 (200206)) (PD)\"},\"3C3A2BB776DEC245C7D6678B5A56AC10\":{n:\"Unknown Title (bin00003) (PD)\"},B00088418FC891F3FAA3D4DDDE6ACE94:{n:\"Unknown Title (bin00007 (200102)) (PD)\"},\"143918368F4F4DFFF90999188C0197C9\":{n:\"Unknown Title (bin00016 (200110)) (PD)\"\n},\"4DCC7E7C2EC0738E26C817B9383091AF\":{n:\"Unknown Title (bin00026 (200110)) (PD)\"},C150C76CBDE2C9B5A97EB5399D46C64F:{n:\"Unknown Title (xxx00000 (200203)) (PD)\"},A499D720E7EE35C62424DE882A3351B6:{n:\"Up 'n Down (1984) (Sega)\"},C6556E082AAC04260596B4045BC122DE:{n:\"Vanguard (1982) (Atari)\"},\"3CAA902AC0CE4509308990645876426A\":{n:\"Vanguard (1982) (Atari) (PAL)\"},\"9D0BEFA555F003069A21D2F6847AD962\":{n:\"Vanguard (1982) (Atari) (PAL) [a]\"},\"88D7B6B3967DE0DB24CDAE1C7F7181BD\":{n:\"Vanguard (1982) (Atari) (Prototype)\"},\"7EF74879D7CB9FA0EF161B91AD55B3BB\":{n:\"Vanguard (CCE)\"},F9660EBED66FEE8BDFDF07B4FAA22941:{n:\"Vanguard (VGS)\"},\"787EBC2609A31EB5C57C4A18837D1AEE\":{n:\"Vault Assault (19xx) (Prescott)\"},D08FCCFBEBAA531C4A4FA7359393A0A9:{n:\"Venetian Blinds Demo (1982) (Activision)\"},FB884FFD89013331A6F01AE3F6ABD214:{n:\"Venetian Blinds Demo (1982) (Activision) (PAL)\"},\"39DA69FF9833F8C143F03B6E0E7A996B\":{n:\"Ventrra Invaders 2002 (Charles Morgan) (Hack)\"},\"345758747B893E4C9BDDE8877DE47788\":{n:\"Venture (1982) (CBS Electronics) (PAL)\",c:1},\"3E899EBA0CA8CD2972DA1AE5479B4F0D\":{n:\"Venture (1982) (Coleco)\",c:1},\"82DE957D155FC041FC6AFB8315A28550\":{n:\"Venture (1982) (Coleco) (Prototype)\"},C63A98CA404AA5EE9FCFF1DE488C3F43:{n:\"Venture (1987) (Atari)\",c:1},\"7CA7A471D70305C673FEDD08174A81E8\":{n:\"Venture II (2001) (Tim Snider)\",c:1},\"6CD1DC960E3E8D5C5E0FBE67AB49087A\":{n:\"Vertical Playfield Demo 1 (PD)\"},EA6D40DB5498D6386571A76DF448AA4C:{n:\"Vertical Playfield Demo 2 (PD)\"},CE6C4270F605AD3CE5E82678B0FC71F8:{n:\"Vertical Rainbow Demo (PD)\"},BDC381BAF7C252C63739C5E9ED087A5C:{n:\"Vertical Ship Demo 1 (PD)\"},\"6A091B8FFEACD0939850DA2094B51564\":{n:\"Vertically Scrolling Playfield (02-02-2003) (Aaron Bergstrom)\"},\"0956285E24A18EFA10C68A33846CA84D\":{n:\"Viagem Espacial (Dismac)\"},\"539D26B6E9DF0DA8E7465F0F5AD863B7\":{n:\"Video Checkers (1980) (Atari)\"},\"193F060553BA0A2A2676F91D9EC0C555\":{n:\"Video Checkers (1980) (Atari) (PAL)\"},F0B7DB930CA0E548C41A97160B9F6275:{n:\"Video Chess (1979) (Atari)\"},\"3EF9573536730DCD6D9C20B6822DBDC4\":{n:\"Video Chess (1979) (Atari) (PAL)\"},A58B11148C18D85E4C2AEF4FF46ADE67:{n:\"Video Chess (Unknown) (PAL)\"},ED1492D4CAFD7EBF064F0C933249F5B0:{n:\"Video Cube (CCE)\"},\"4191B671BCD8237FC8E297B4947F2990\":{n:\"Video Jogger (1983) (Exus)\"},\"497F3D2970C43E5224BE99F75E97CBBB\":{n:\"Video Life (1981) (CommaVid)\",c:1},\"3EC12372CA3E870B11CA70EDC7EC26A4\":{n:\"Video Life (1981) (CommaVid) (4K)\",c:1},\"4209E9DCDF05614E290167A1C033CFD2\":{n:\"Video Life (1981) (CommaVid) [higher sounds]\",c:1},\"14D365BBFAAC3D20C6119591F57ACCA4\":{n:\"Video Life (Unknown) (4K) (Hack)\",c:1},\"60E0EA3CBE0913D39803477945E9E5EC\":{n:\"Video Olympics (1977) (Atari)\",p:1},C00B65D1BAE0AEF6A1B5652C9C2156A1:{n:\"Video Olympics (1977) (Atari) (4K)\",p:1},\"77D0A577636E1C9212AECCDE9D0BAA4B\":{n:\"Video Olympics (1977) (Atari) (PAL)\",p:1},FE3B461D4C8B179FE68BC77760294C25:{n:\"Video Olympics (1977) (Atari) (PAL) (4K)\",p:1},\"107CC025334211E6D29DA0B6BE46AEC7\":{n:\"Video Pinball (1981) (Atari)\"},\"6E59DD52F88C00D5060EAC56C1A0B0D3\":{n:\"Video Pinball (1981) (Atari) (PAL)\"},A2424C1A0C783D7585D701B1C71B5FDC:{n:\"Video Pinball (Unknown) (PAL)\"},EE659AE50E9DF886AC4F8D7AD10D046A:{n:\"Video Reflex (1983) (Exus)\"},\"16F494F20AF5DC803BC35939EF924020\":{n:\"Video Simon (Mark De Smet)\"},\"93ACD5020AE8EB5673601E2EDECBC158\":{n:\"Video Time Machine (Chris Cracknell)\"},\"3B80B8F52A0939E16B5059F93A3FC19A\":{n:\"Virtual Pet (V007) (after Demo 2) (CRACKERS) (PD)\"},\"4F0071946E80CA68EDFDCCBAC86DCCE0\":{n:\"Virtual Pet Demo 1 (CRACKERS) (PD)\"},\"1F349DD41C3F93C4214E5E308DCCB056\":{n:\"Virtual Pet Demo 2 (CRACKERS) (PD)\"},E17699A54C90F3A56AE4820F779F72C4:{n:\"Vogel Flieh (1983) (Quelle) (PAL)\"},\"6C128BC950FCBDBCAF0D99935DA70156\":{n:\"Volleyball (1983) (Digitel)\"},\"4D8396DEEABB40B5E8578276EB5A8B6D\":{n:\"Volleyball (1983) (Quelle) (PAL)\"},\"5FAFFE1C4C57430978DEC5CED32B9F4A\":{n:\"Volleyball (Dactari - Milmar)\"},\"42B3AB3CF661929BDC77B621A8C37574\":{n:\"Volleyball (Robby)\"},\"8108162BC88B5A14ADC3E031CF4175AD\":{n:\"Vom Himmel durch die Hoelle (1983) (Quelle) (PAL)\"},\"1F21666B8F78B65051B7A609F1D48608\":{n:\"Vulture Attack (1982) (K-Tel Vision)\"},B00A8BC9D7FE7080980A514005CBAD13:{n:\"Vulture Attack (1982) (K-Tel Vision) (PAL)\"},\"6041F400B45511AA3A69FAB4B8FC8F41\":{n:\"Wabbit (1982) (Apollo)\"},\"38CF93EACFB2FA9A2C5E39059FF35A74\":{n:\"WacMan (2003) (Greg Zumwalt) (Hack)\"},\"1C5796D277D9E4DF3F6648F7012884C4\":{n:\"Wachroboter jagt Jupy (Quelle) (PAL)\"},\"7FF53F6922708119E7BF478D7D618C86\":{n:\"Walker (Suntek) (PAL)\"},D175258B2973B917A05B46DF4E1CF15D:{n:\"Walker (Suntek) (PAL) [a]\"},D3456B4CF1BD1A7B8FB907AF1A80EE15:{n:\"Wall Ball (1983) (Avalon Hill)\",c:1},C16FBFDBFDF5590CC8179E4B0F5F5AEB:{n:\"Wall Break (Unknown)\"},EAE6A5510055341D3ABEB45667BB3E9B:{n:\"Wall Defender (HES) (PAL)\"},\"03FF9E8A7AF437F16447FE88CEA3226C\":{n:\"Wall-Defender (1983) (Bomb)\"},\"372BDDF113D088BC572F94E98D8249F5\":{n:\"Wall-Defender (1983) (Bomb) (PAL)\"},\"6522717CFD75D1DBA252CBDE76992090\":{n:\"War 2000 (1983) (Home Vision) (PAL)\"},\"9436B7AD131B5A1F7753CE4309BA3DEE\":{n:\"War of The Worlds (Kyle Pittman) (Hack)\"},CBE5A166550A8129A5E6D374901DFFAD:{n:\"Warlords (1981) (Atari)\",p:1},\"0C80751F6F7A3B370CC9E9F39AD533A7\":{n:\"Warlords (1981) (Atari) (PAL)\",p:1},\"679E910B27406C6A2072F9569AE35FC8\":{n:\"Warplock (1982) (Data Age)\",p:1,c:1},D1C3520B57C348BC21D543699BC88E7E:{n:\"Warplock (1983) (Gameworld) (PAL)\",p:1,c:1},D88691C995008B9AB61A44BB686B32E4:{n:\"Warring Worms (07-02-2002) (Billy Eno)\"},FA3DE71841C0841DB6A741884A6B6B2F:{n:\"Warring Worms (17-02-2002) (Billy Eno)\"},\"2351D26D0BFDEE3095BEC9C05CBCF7B0\":{n:\"Warring Worms (19-01-2002) (Billy Eno)\"},\"7E7C4C59D55494E66EEF5E04EC1C6157\":{n:\"Warring Worms (2002) (Baroque Gaming)\"},A2F296EA2D6D4B59979BAC5DFBF4EDF0:{n:\"Warring Worms (28-01-2002) (Billy Eno)\"},\"7A64B5A6E90619C6AACF244CDD7502F8\":{n:\"Warring Worms (Beta 1) (2002) (Baroque Gaming)\"},\"2F66EBF037321ED0442AC4B89CE22633\":{n:\"Warring Worms (Beta 2) (2002) (Baroque Gaming)\"},D17A8C440D6BE79FAE393A4B46661164:{n:\"Warring Worms (Beta 3) (2002) (Billy Eno)\"},\"4A2FE6F0F6317F006FD6D4B34515448B\":{n:\"Warring Worms (Midwest Classic Edition) (08-06-2002) (Billy Eno)\"},E171558C51BB3BAC97BFA79FA2C1A19C:{n:\"Warring Worms (Tim Strauss Edition) (20-12-2002) (Billy Eno)\"},\"0D7E630A14856F4D52C9666040961D4D\":{n:\"Wavy Line Test (PD)\"},\"5C73693A89B06E5A09F1721A13176F95\":{n:\"Wavy Line Test 2 (PD)\"},BCE4C291D0007F16997FAA5C4DB0A6B8:{n:\"Weltraumtunnel (1983) (Quelle) (PAL)\"},D47387658ED450DB77C3F189B969CC00:{n:\"Westward Ho (1982) (PlayAround) (PAL)\"},\"4C39A2C97917D3D71739B3E21F60BBA5\":{n:\"Whale (Sub Scan Hack)\"},AB10F2974DEE73DAB4579F0CAB35FCA6:{n:\"Wilma Wanderer (1983) (ITT Family Games) (PAL)\"},\"4E02880BEEB8DBD4DA724A3F33F0971F\":{n:\"Wing War (1983) (Imagic) (PAL)\"},\"9D2938EB2B17BB73E9A79BBC06053506\":{n:\"Wing War (1983) (Imagic) (PAL) [a]\"},\"0CDD9CC692E8B04BA8EB31FC31D72E5E\":{n:\"Wing War (Thomas Jentzsch)\"},\"8E48EA6EA53709B98E6F4BD8AA018908\":{n:\"Wings (06-03-1983) (CBS Electronics) (Prototype)\",c:1},\"827A22B9DFFEE24E93ED0DF09FF8414A\":{n:\"Wings (10-10-1983) (CBS Electronics) (Prototype) (PAL)\",c:1},\"83FAFD7BD12E3335166C6314B3BDE528\":{n:\"Winter Games (1987) (Epyx)\"},\"8C36ED2352801031516695D1EEEFE617\":{n:\"Winter Games (1987) (Epyx) (PAL)\"},\"6C1553CA90B413BF762DFC65F2B881C7\":{n:\"Winterjagd (1983) (Quelle) (PAL)\"},\"7B24BFE1B61864E758ADA1FE9ADAA098\":{n:\"Wizard (1980) (Atari) (Prototype)\"},\"3B86A27132FB74D9B35D4783605A1BCB\":{n:\"Wizard (1980) (Atari) (Prototype) (4K)\"},\"1F40EEFC7447336AE6CD8FFA5EB325BE\":{n:\"Wizard (1980) (Atari) (Prototype) (4K) [a]\"},C43BD363E1F128E73BA5F0380B6FD7E3:{n:\"Wizard (1980) (Atari) (Prototype) [a]\"},\"7E8AA18BC9502EB57DAAF5E7C1E94DA7\":{n:\"Wizard of Wor (1982) (CBS Electronics)\",c:1},\"663EF22EB399504D5204C543B8A86BCD\":{n:\"Wizard of Wor (1982) (CBS Electronics) (PAL)\",c:1},EC3BEB6D8B5689E867BAFB5D5F507491:{n:\"Word Zapper (1982) (U.S. Games)\"},\"3A53963F053B22599DB6AC9686F7722F\":{n:\"Word Zapper (208 in 1) (Unknown) (PAL)\"},E1143B72A30D4D3FEE385EEC38B4AA4D:{n:\"Word Zapper (Unknown)\"\n},\"37527966823EE9243D34C7DA8302774F\":{n:\"Word Zapper (Unknown) (PAL)\"},\"2FACD460A6828E0E476D3AC4B8C5F4F7\":{n:\"Words-Attack (1983) (Sancho) (PAL)\",c:1},\"130C5742CD6CBE4877704D733D5B08CA\":{n:\"World End (1983) (Home Vision) (PAL)\"},E62E60A3E6CB5563F72982FCD83DE25A:{n:\"World End (Jone Yuan)\"},\"87F020DAA98D0132E98E43DB7D8FEA7E\":{n:\"Worm War I (1982) (20th Century Fox)\"},\"007D18DEDC1F0565F09C42AA61A6F585\":{n:\"Worm War I (1983) (CCE)\"},FB531FEBF8E155328EC0CD39EF77A122:{n:\"Worm War I (208 in 1) (Unknown) (PAL)\",c:1},\"52B448757081FD9FABF859F4E2F91F6B\":{n:\"Worm War I (Unknown) (PAL)\"},\"5C0520C00163915A4336E481CA4E7EF4\":{n:\"Wuestenschlacht (1983) (Quelle) (PAL)\"},\"332F01FD18E99C6584F61AA45EE7791E\":{n:\"X'Mission (Unknown) (PAL)\",c:1},\"0D35618B6D76DDD46D2626E9E3E40DB5\":{n:\"X-Doom V.26 (PD)\"},F613AAD84D2163D6B197B220BFEC1B7E:{n:\"X-Doom V.27 (PD)\"},\"5961D259115E99C30B64FE7058256BCF\":{n:\"X-Man (1983) (Universal)\"},\"5E201D6BFC520424A28F129EE5E56835\":{n:\"X-Man (1983) (Universal) (PAL)\"},F38358CD8F5ECFEDFFD5ACA1AA939F18:{n:\"X-Man (1983) (Universal) [a]\"},\"9E2C7299C69B602443D327C7DAD51CBF\":{n:\"Xaxyrax Road (Charles Morgan) (Hack)\"},\"972486110933623039A3581DB308FDA6\":{n:\"Xeno Plus (Hack)\"},EAF744185D5E8DEF899950BA7C6E7BB5:{n:\"Xenophobe (1990) (Atari)\"},F02BA8B5292BF3017D10553C9B7B2861:{n:\"Xenophobe (1990) (Atari) (PAL)\"},\"5494B9EE403D9757F0FD1F749E80214A\":{n:\"Xenophobe Arcade (2003) (Larry Petit) (Hack)\"},\"284CA61B2407BDBA3938048B0A559015\":{n:\"Xevious (05-25-1983) (Atari) (Prototype)\",c:1},C6688781F4AB844852F4E3352772289B:{n:\"Xevious (08-02-1983) (Atari) (Prototype)\",c:1},\"24385BA7F5109FBE76AADC0A375DE573\":{n:\"Xevious (CCE)\",c:1},D090836F0A4EA8DB9AC7ABB7D6ADF61E:{n:\"Yahtzee (Hozer Video Games)\",c:1},\"096649575E451508006B17E0353259A5\":{n:\"Yar Vs. Yar (2002) (Justin J. Scott) (Hack)\",c:1},\"159E5CD6CCB968015F49AED5ADBC91EB\":{n:\"Yar's Defeat (2002) (Justin J. Scott) (Hack)\",c:1},C5930D0E8CDAE3E037349BFA08E871BE:{n:\"Yars' Revenge (1982) (Atari)\",c:1},E91D2ECF8803AE52B55BBF105AF04D4B:{n:\"Yars' Revenge (1982) (Atari) (PAL)\",c:1},\"75EA60884C05BA496473C23A58EDF12F\":{n:\"Yars' Revenge (1982) (Atari) (PAL) [a]\",c:1},\"5F681403B1051A0822344F467B05A94D\":{n:\"Yars' Revenge (1982) (Atari) [a]\",c:1},\"2F7772879A1ED04F660AA9D77A86A4BD\":{n:\"Yars' Revenge (Genesis)\",c:1},\"522C9CF684ECD72DB2F85053E6F6F720\":{n:\"Year 1999, The (Rainbow Vision) (PAL)\"},\"2179DFD7EDEE76EFAFE698C1BC763735\":{n:\"Yellow Submarine (Cody Pittman) (PD)\"},\"3856B9425CC0185ED770376A62AF0282\":{n:\"Yellow Submarine (Kyle Pittman) (Hack)\"},C1E6E4E7EF5F146388A090F1C469A2FA:{n:\"Z-Tack (1983) (Bomb)\"},D6DC9B4508DA407E2437BFA4DE53D1B2:{n:\"Z-Tack (1983) (Bomb) (PAL)\"},\"25BB080457351BE724AAC8A02021AA92\":{n:\"Zaxxon (1982) (CBS Electronics) (PAL)\"},EEA0DA9B987D661264CCE69A7C13C3BD:{n:\"Zaxxon (1982) (Coleco)\"},\"1367E41858BE525710EB04D0DAB53505\":{n:\"Zelda (2003) (Kyle Pittman) (Hack)\"},C5A76BAFC4676EDB76E0126FB9F0FB2D:{n:\"Zero Patrol (Charles Morgan) (Hack)\"},\"692202772D8B38CCF85A90C8003A1324\":{n:\"Zi - The Flie Buster (2002) (Fernando Mora) (PD)\"},FB833ED50C865A9A505A125FC9D79A7E:{n:\"Zoo Fun (1983) (Home Vision) (PAL)\"},\"0FCFF6FE3B0769AD5D0CF82814D2A6D9\":{n:\"Zoo Fun (Suntek) (PAL)\"},A336BEAC1F0A835614200ECD9C41FD70:{n:\"Zoo Keeper Sounds (1984) (Atari) (Prototype)\"},\"527B2893F202E0B4930E18E739C81EF4\":{n:\"Star Castle Arcade 124cu\",l:\"Star Castle Arcade\",c:1},\"2CEE5D587E6A2240233C93A5035D5748\":{n:\"Star Castle Arcade 124\",l:\"Star Castle Arcade\",c:1},DCBDD2C1E201637C30369CE657E1B5CC:{n:\"Star Castle Arcade 133cu\",l:\"Star Castle Arcade\",c:1},B503531C719AECEF6E97C4961F97F5E8:{n:\"Star Castle Arcade 133\",l:\"Star Castle Arcade\",c:1},\"33AB116244C57F6726D0D64BA9F5B6A4\":{n:\"Star Castle Arcade 140cu\",l:\"Star Castle Arcade\",c:1},\"15A6D61D04D50B5C4DC77964AF812469\":{n:\"Star Castle Arcade 140\",l:\"Star Castle Arcade\",c:1}},jt.Cartridge=function(){this.powerOn=function(){},this.powerOff=function(){},this.connectBus=function(a){},this.connectSaveStateSocket=function(a){},this.read=function(a){},this.write=function(a,b){},this.needsBusMonitoring=function(){return!1},this.monitorBusBeforeRead=function(a,b){},this.monitorBusBeforeWrite=function(a,b){},this.needsAudioClock=function(){return!1},this.audioClockPulse=function(){},this.controlStateChanged=function(a,b){},this.controlValueChanged=function(a,b){},this.controlsStateReport=function(a){},this.saveState=function(){},this.loadState=function(a){},this.rom=null},jt.Cartridge.base=new jt.Cartridge,jt.Cartridge4K=function(a,b){function c(c){c.rom=a,c.format=b,d=new Array(4096);for(var e=a.content.length,f=0;f<d.length;f+=e)jt.Util.arrayCopy(a.content,0,d,f,e)}this.read=function(a){return d[a&e]},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(d))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.byteStringToUInt8Array(atob(a.b))};var d,e=4095;a&&c(this)},jt.Cartridge4K.prototype=jt.Cartridge.base,jt.Cartridge4K.createFromSaveState=function(a){var b=new jt.Cartridge4K;return b.loadState(a),b},jt.Cartridge2K_CV=function(a,b){function c(c){c.rom=a,c.format=b,e=new Array(4096);for(var d=a.content.length,f=0;f<e.length;f+=d)jt.Util.arrayCopy(a.content,0,e,f,d)}this.read=function(a){var b=d(a);return b<1024?f[b]:e[b]},this.write=function(a,b){var c=d(a);c>=1024&&c<=2047&&(f[c-1024]=b)};var d=function(a){return a&g};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e)),ra:btoa(jt.Util.uInt8ArrayToByteString(f))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b)),f=jt.Util.byteStringToUInt8Array(atob(a.ra))};var e,f=jt.Util.arrayFill(new Array(1024),0),g=4095;a&&c(this)},jt.Cartridge2K_CV.prototype=jt.Cartridge.base,jt.Cartridge2K_CV.createFromSaveState=function(a){var b=new jt.Cartridge2K_CV;return b.loadState(a),b},jt.CartridgeBankedByMaskedRange=function(a,b,c,d,e){function f(f){f.rom=a,f.format=b,h=a.content;var g=h.length/q;i=c,j=i+g-1,l=e,null==d||void 0==d?(o=!1,k=!0):(o=!!d,k=!1),m=d!==!1?jt.Util.arrayFill(new Array(l),0):null}this.read=function(a){var b=g(a);return o&&b>=l&&b<2*l?m[b-l]:h[n+b]},this.write=function(a,b){var c=g(a);c<l&&(o||k)&&(o||(o=!0),m[c]=b)};var g=function(a){var b=a&p;return b>=i&&b<=j&&(n=q*(b-i)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(h)),bo:n,bb:i,es:l,tb:j,s:0|o,sa:0|k,e:m&&btoa(jt.Util.uInt8ArrayToByteString(m))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),h=jt.Util.byteStringToUInt8Array(atob(a.b)),n=a.bo,i=a.bb,l=a.es,j=a.tb,o=!!a.s,k=!!a.sa,m=a.e&&jt.Util.byteStringToUInt8Array(atob(a.e))};var h,i,j,k,l,m,n=0,o=!1,p=4095,q=4096;a&&f(this)},jt.CartridgeBankedByMaskedRange.prototype=jt.Cartridge.base,jt.CartridgeBankedByMaskedRange.createFromSaveState=function(a){var b=new jt.CartridgeBankedByMaskedRange;return b.loadState(a),b},jt.Cartridge8K_E0=function(a,b){function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return b<1024?e[f+b]:b<2048?e[g+b-1024]:b<3072?e[h+b-2048]:e[4096+b]},this.write=function(a,b){d(a)};var d=function(a){var b=a&i;return b>=4064&&b<=4087&&(b<=4071?f=1024*(b-4064):b<=4079?g=1024*(b-4072):b<=4087&&(h=1024*(b-4080))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e)),s0:f,s1:g,s2:h}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b)),f=a.s0,g=a.s1,h=a.s2};var e,f=0,g=0,h=0,i=4095;a&&c(this)},jt.Cartridge8K_E0.prototype=jt.Cartridge.base,jt.Cartridge8K_E0.createFromSaveState=function(a){var b=new jt.Cartridge8K_E0;return b.loadState(a),b},jt.Cartridge64K_F0=function(a,b){function c(c){c.rom=a,\nc.format=b,e=a.content}this.read=function(a){var b=d(a);return e[f+b]},this.write=function(a,b){d(a)};var d=function(a){var b=a&g;return b==j&&(f+=i,f>=h&&(f=0)),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e)),bo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b)),f=a.bo};var e,f=0,g=4095,h=65536,i=4096,j=4080;a&&c(this)},jt.Cartridge64K_F0.prototype=jt.Cartridge.base,jt.Cartridge64K_F0.createFromSaveState=function(a){var b=new jt.Cartridge64K_F0;return b.loadState(a),b},jt.Cartridge8K_FE=function(a,b){function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return e[f+b]},this.write=function(a,b){d(a)};var d=function(a){return 0!==(8192&a)?0!==f&&(f=0):f!=h&&(f=h),a&g};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e)),bo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b)),f=a.bo};var e,f=0,g=4095,h=4096;a&&c(this)},jt.Cartridge8K_FE.prototype=jt.Cartridge.base,jt.Cartridge8K_FE.createFromSaveState=function(a){var b=new jt.Cartridge8K_FE;return b.loadState(a),b},jt.Cartridge16K_E7=function(a,b){function c(c){c.rom=a,c.format=b,e=a.content}this.read=function(a){var b=d(a);return b>=2304&&b<=2559?h[j+b-2304]:i&&b>=1024&&b<=2047?h[b-1024]:b<n?e[f+b]:e[o+b]},this.write=function(a,b){var c=d(a);c>=2048&&c<=2303?h[j+c-2048]=b:i&&c<=1023&&(h[c]=b)};var d=function(a){var b=a&k;return b>=4064&&b<=4075&&(b<=4070?f=m*(b-4064):4071==b?i=!0:b<=4075&&(j=g+p*(b-4072))),b};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e)),bo:f,rs:i,ro:j,ra:btoa(jt.Util.uInt8ArrayToByteString(h))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b)),f=a.bo,i=a.rs,j=a.ro,h=jt.Util.byteStringToUInt8Array(atob(a.ra))};var e,f=0,g=1024,h=jt.Util.arrayFill(new Array(2048),0),i=!1,j=g,k=4095,l=16384,m=2048,n=2048,o=l-m-n,p=256;a&&c(this)},jt.Cartridge16K_E7.prototype=jt.Cartridge.base,jt.Cartridge16K_E7.createFromSaveState=function(a){var b=new jt.Cartridge16K_E7;return b.loadState(a),b},jt.Cartridge10K_DPCa=function(a,b){function c(c){c.rom=a,c.format=b,m=a.content}this.powerOn=function(){y=p,z=0},this.connectBus=function(a){l=a.getTia().getAudioOutput().getChannel0()},this.needsAudioClock=function(){return!0},this.read=function(a){var b=d(a);return b<=63||b>=2048&&b<=2111?f(255&b):m[r+b]},this.write=function(a,b){var c=d(a);(c>=64&&c<=127||c>=2112&&c<=2175)&&g(255&c,b)},this.audioClockPulse=function(){if((z+y|0)>(0|z))for(var a=5;a<=7;a++)x[a]&&(t[a]--,255==(255&t[a])&&h(a,65280&t[a]|u[a]),j(a),A||(A=!0));z+=y,A&&(e(),l.setVolume(B))};var d=function(a){var b=a&o;return 4088===b?r=0:4089===b&&(r=4096),b},e=function(){B=n[(x[5]?4&w[5]:0)|(x[6]?2&w[6]:0)|(x[7]?1&w[7]:0)],A=!1},f=function(a){var b;return a>=0&&a<=3?(k(),s):a>=4&&a<=7?(A&&e(),B):a>=8&&a<=15?(b=m[q-t[a-8]],i(a-8),b):a>=16&&a<=23?(b=m[q-t[a-16]]&w[a-16],i(a-16),b):a>=24&&a<=31?(b=m[q-t[a-24]]&w[a-24],i(a-24),b=240&b|15&b):a>=32&&a<=39?(b=m[q-t[a-32]]&w[a-32],i(a-32),b=128&b|64&b|32&b|16&b|8&b|4&b|2&b|1&b):a>=40&&a<=47?(b=m[q-t[a-40]]&w[a-40],i(a-40),b=255&(b>>>1|b<<7)):a>=48&&a<=55?(b=m[q-t[a-48]]&w[a-48],i(a-48),b=255&(b<<1|b>>7&1)):a>=56&&a<=63?w[a-56]:0},g=function(a,b){if(a>=64&&a<=71){var c=a-64;return u[c]=b,void((255&t[c])===u[c]&&(w[c]=255))}return a>=72&&a<=79?(v[a-72]=b,void(w[a-72]=0)):a>=80&&a<=87?void h(a-80,65280&t[a-80]|255&b):a>=88&&a<=91?void h(a-88,255&t[a-88]|(7&b)<<8):92==a?void h(4,255&t[4]|(7&b)<<8):a>=93&&a<=95?(h(a-88,(255&t[a-88])+((7&b)<<8)),void(x[a-88]=(16&b)>>>4)):void(a>=96&&a<=103||a>=112&&a<=119&&(s=0))},h=function(a,b){t[a]=b},i=function(a){var b=t[a]-1;b<0&&(b=2047),h(a,b),j(a)},j=function(a){var b=255&t[a];b==u[a]?w[a]=255:b==v[a]&&(w[a]=0)},k=function(){s=255&(s<<1|1&~(s>>7^s>>5^s>>4^s>>3)),255===s&&(s=0)};this.controlStateChanged=function(a,b){if(b)switch(a){case jt.ConsoleControls.CARTRIDGE_CLOCK_DEC:y<1&&(y+=.01),jt.Util.log(\"DPC audio clock factor: \"+y);break;case jt.ConsoleControls.CARTRIDGE_CLOCK_INC:y>.3&&(y-=.01),jt.Util.log(\"DPC audio clock factor: \"+y)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(m)),bo:r,rn:s,fp:btoa(jt.Util.uInt8ArrayToByteString(t)),fs:btoa(jt.Util.uInt8ArrayToByteString(u)),fe:btoa(jt.Util.uInt8ArrayToByteString(v)),fm:btoa(jt.Util.uInt8ArrayToByteString(w)),a:btoa(jt.Util.uInt8ArrayToByteString(x))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),m=jt.Util.byteStringToUInt8Array(atob(a.b)),r=a.bo,s=a.rn,t=jt.Util.byteStringToUInt8Array(atob(a.fp)),u=jt.Util.byteStringToUInt8Array(atob(a.fs)),v=jt.Util.byteStringToUInt8Array(atob(a.fe)),w=jt.Util.byteStringToUInt8Array(atob(a.fm)),x=jt.Util.byteStringToUInt8Array(atob(a.a))};var l,m,n=[0,5,5,10,5,10,10,15],o=4095,p=.62,q=10239,r=0,s=0,t=jt.Util.arrayFill(new Array(8),0),u=jt.Util.arrayFill(new Array(8),0),v=jt.Util.arrayFill(new Array(8),0),w=jt.Util.arrayFill(new Array(8),0),x=jt.Util.arrayFill(new Array(8),0),y=p,z=0,A=!0,B=0;a&&c(this)},jt.Cartridge10K_DPCa.prototype=jt.Cartridge.base,jt.Cartridge10K_DPCa.createFromSaveState=function(a){var b=new jt.Cartridge10K_DPCa;return b.loadState(a),b},jt.Cartridge24K_28K_32K_FA2=function(a,b,c){function d(d){d.rom=a,d.format=b,n=a.content,p=c||0,q=p;var e=(n.length-p)/x;o=r+e-1}var e=this;this.connectBus=function(a){l=a},this.connectSaveStateSocket=function(a){m=a},this.read=function(a){var b,c=f(a);if(b=c>=256&&c<512?s[c-256]:n[q+c],c!==y)return b;if(0===u){var d=s[z];if(1===d||2===d)return g(d),64|b}return 0===u?191&b:(j(),0!==u?64|b:191&b)},this.write=function(a,b){var c=f(a);c<256&&(s[c]=b)};var f=function(a){var b=a&w;return b>=r&&b<=o&&(q=p+x*(b-r)),b},g=function(a){u=a,t=Date.now(),1===a?h():2===a&&i()},h=function(){if(l.getTia().getVideoOutput().showOSD(\"Reading from Cartridge Flash Memory...\",!0),m){var a=m.getMedia().loadResourceFromFile(k());a&&(v=jt.Util.byteStringToUInt8Array(atob(a)))}s=v.slice(0)},i=function(){l.getTia().getVideoOutput().showOSD(\"Writing to Cartridge Flash Memory...\",!0),v=s.slice(0),m&&m.getMedia().saveResourceToFile(k(),btoa(jt.Util.uInt8ArrayToByteString(v)))},j=function(){Date.now()-t>1100&&(t=Date.now(),u=0,s[z]=0,l.getTia().getVideoOutput().showOSD(\"Done.\",!0),m&&m.externalStateChange())},k=function(){return\"hfm\"+e.rom.info.h};this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(n)),rs:p,bo:q,tb:o,e:btoa(jt.Util.uInt8ArrayToByteString(s)),ho:u,ht:t}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),n=jt.Util.byteStringToUInt8Array(atob(a.b)),p=a.rs||0,q=a.bo,o=a.tb,s=jt.Util.byteStringToUInt8Array(atob(a.e)),u=a.ho||0,t=Date.now()};var l,m,n,o,p=0,q=0,r=4085,s=jt.Util.arrayFill(new Array(256),0),t=Date.now(),u=0,v=jt.Util.arrayFill(new Array(256),0),w=4095,x=4096,y=4084,z=255;a&&d(this)},jt.Cartridge24K_28K_32K_FA2.prototype=jt.Cartridge.base,jt.Cartridge24K_28K_32K_FA2.createFromSaveState=function(a){var b=new jt.Cartridge24K_28K_32K_FA2;return b.loadState(a),b},jt.CartridgeBankedByBusMonitoring=function(a,b){this.needsBusMonitoring=function(){return!0},this.monitorBusBeforeRead=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.monitorBusBeforeWrite=function(a,b){this.performBankSwitchOnMonitoredAccess(a)},this.performBankSwitchOnMonitoredAccess=function(a){}},jt.CartridgeBankedByBusMonitoring.prototype=jt.Cartridge.base,jt.CartridgeBankedByBusMonitoring.base=new jt.CartridgeBankedByBusMonitoring,jt.Cartridge8K_512K_3F=function(a,b){\nfunction c(c){c.rom=a,c.format=b,d=a.content,e=(d.length-i)/i-1,f=d.length-2*i}this.read=function(a){var b=a&h;return b>=j?d[f+b]:d[g+b]},this.monitorBusBeforeWrite=function(a,b){if(a<=63){var c=255&b;c<=e&&(g=c*i)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(d)),bo:g,sm:e,fo:f}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.byteStringToUInt8Array(atob(a.b)),g=a.bo,e=a.sm,f=a.fo};var d,e,f,g=0,h=4095,i=2048,j=2048;a&&c(this)},jt.Cartridge8K_512K_3F.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3F.createFromSaveState=function(a){var b=new jt.Cartridge8K_512K_3F;return b.loadState(a),b},jt.Cartridge8K_512K_3E=function(a,b){function c(c){c.rom=a,c.format=b,e=a.content,f=(e.length-m)/m-1,g=e.length-2*m}this.read=function(a){var b=d(a);return b>=n?e[g+b]:j>=0&&b<1024?k[j+b]||0:e[i+b]},this.write=function(a,b){if(!(j<0)){var c=d(a);c>=1024&&c<=2047&&(k[j+c-1024]=b)}};var d=function(a){return a&l};this.monitorBusBeforeWrite=function(a,b){if(63===a){var c=255&b;return void(c<=f&&(i=c*m,j=-1))}if(62===a){var d=255&b;j=d*h}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e)),bo:i,sm:f,fo:g,ro:j,ra:btoa(jt.Util.uInt8ArrayToByteString(k))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b)),i=a.bo,f=a.sm,g=a.fo,j=a.ro,k=jt.Util.byteStringToUInt8Array(atob(a.ra))};var e,f,g,h=1024,i=0,j=-1,k=jt.Util.arrayFill(new Array(h),0),l=4095,m=2048,n=2048;a&&c(this)},jt.Cartridge8K_512K_3E.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_512K_3E.createFromSaveState=function(a){var b=new jt.Cartridge8K_512K_3E;return b.loadState(a),b},jt.Cartridge8K_256K_SB=function(a,b){function c(c){c.rom=a,c.format=b,d=a.content,e=d.length/h-1}this.read=function(a){return d[f+(a&g)]},this.performBankSwitchOnMonitoredAccess=function(a){if(2048===(6144&a)){var b=127&a;b>e||(f=b*h)}},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(d)),bo:f,m:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.byteStringToUInt8Array(atob(a.b)),f=a.bo,e=a.m};var d,e,f=0,g=4095,h=4096;a&&c(this)},jt.Cartridge8K_256K_SB.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_256K_SB.createFromSaveState=function(a){var b=new jt.Cartridge8K_256K_SB;return b.loadState(a),b},jt.Cartridge8K_64K_AR=function(a,b){function c(c){c.rom=a,c.format=b,e=jt.Util.arrayFill(new Array(4*M)),o()}this.powerOn=function(){h(0),E=0},this.connectBus=function(a){d=a},this.read=function(a){return f<M?e[q+f]:e[r+f-M]},this.write=function(a,b){r===N&&f>=K&&f<K+256&&i(f-K)},this.performBankSwitchOnMonitoredAccess=function(a){return f=a&Q,a&=8191,8184==a?void h(t):w>0?void(a!==v&&(v=a,0===--w&&(a&R)===S&&(f<M?e[q+f]=t:r<N&&(e[r+f-M]=t)))):void((a&R)===S&&f<=255&&(t=f,u&&(v=a,w=5)))};var d,e,f,g,h=function(a){var b=a>>2&7;switch(b){case 0:q=2*M,r=N;break;case 1:q=0*M,r=N;break;case 2:q=2*M,r=0*M;break;case 3:q=0*M,r=2*M;break;case 4:q=2*M,r=N;break;case 5:q=1*M,r=N;break;case 6:q=2*M,r=1*M;break;case 7:q=1*M,r=2*M;break;default:throw new Error(\"Invalid bank configuration\")}w=0,u=0!==(2&a),x=0===(1&a)},i=function(b){for(var c=!1;;){if(E>a.content.length-1){if(c)return 0===b?d.getTia().getVideoOutput().showOSD(\"Could not load Tape from Start. Not a Start Tape ROM!\",!0):d.getTia().getVideoOutput().showOSD(\"Could not find next Part to load in Tape!\",!0),void n(!1);E=0,c=!0}if(jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,E)===b)return 0===b?d.getTia().getVideoOutput().showOSD(\"Loaded Tape from Start\",!0):d.getTia().getVideoOutput().showOSD(\"Loaded next Part from Tape\",!0),void j();E+=O}},j=function(){k(),l(),m()},k=function(){jt.Util.arrayCopy(a.content,E+4*M,s,0,s.length),y=s[1]<<8|255&s[0],z=s[2],A=s[3],B=s[4],C=s[5],D=s[7]<<8|255&s[6],g=jt.Util.arrayFill(new Array(A),0),jt.Util.arrayCopy(s,16,g,0,A)},l=function(){jt.Util.arrayFillSegment(e,7*L,8*L-1,0);for(var b=E,c=0,d=g.length;c<d;c++){var f=g[c],h=(3&f)*M,i=(f>>2)*L;h+i+255<N&&jt.Util.arrayCopy(a.content,b,e,h+i,L),b+=L}E+=O},m=function(){e[N+G-63488]=z,e[N+F-63488]=C,e[N+I-63488]=256*Math.random()|0,e[N+H-63488]=255&y,e[N+H+1-63488]=y>>8&255,n(!0)},n=function(a){e[N+J-63488]=a?1:0},o=function(){var a=JSZip.compressions.DEFLATE.uncompress(jt.Util.byteStringToUInt8Array(atob(P)));jt.Util.arrayCopy(a,0,e,N,M)},p=256,q=0,r=0,s=jt.Util.arrayFill(new Array(p),0),t=0,u=!1,v=-1,w=0,x=!1,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=64256,G=64257,H=64258,I=64260,J=64261,K=3072,L=256,M=8*L,N=3*M,O=4*M+p,P=\"7dSxCsIwEAbgv6niGkeddPVZ8kCOXc43yCIokkGIUN+gLxAoZHTxHRxjYq2xk7vSIPS75bb7uYNTuOJWu/bod3iU42BzUTiBe9sTzSjToBnNBVxfQz/nQ+2NhA2a05KYmhhjmxhoQZymxGil8gpeesOdyioW5DN25yxsiri3chQOUO1WeCSI/hPx9AJ/m/576KROMUhlfdE4dQ+AfJoPNBikgOZdLw==\",Q=4095,R=4096,S=4096;this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(e))}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),e=jt.Util.byteStringToUInt8Array(atob(a.b))},a&&c(this)},jt.Cartridge8K_64K_AR.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_64K_AR.createFromSaveState=function(a){var b=new jt.Cartridge8K_64K_AR;return b.loadState(a),b},jt.Cartridge8K_64K_AR.HEADER_SIZE=256,jt.Cartridge8K_64K_AR.PAGE_SIZE=256,jt.Cartridge8K_64K_AR.BANK_SIZE=8*jt.Cartridge8K_64K_AR.PAGE_SIZE,jt.Cartridge8K_64K_AR.PART_SIZE=4*jt.Cartridge8K_64K_AR.BANK_SIZE+jt.Cartridge8K_64K_AR.HEADER_SIZE,jt.Cartridge8K_64K_AR.peekPartNoOnTape=function(a,b){return a[b+4*jt.Cartridge8K_64K_AR.BANK_SIZE+5]},jt.Cartridge8K_64K_AR.checkTape=function(a){if(0!=jt.Cartridge8K_64K_AR.peekPartNoOnTape(a.content,0)){var b=new Error(\"Wrong Supercharger Tape Part ROM!\\nPlease load a Full Tape ROM file.\");throw b.formatDenial=!0,b}},jt.Cartridge64K_X07=function(a,b){function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){2061===(6159&a)?e=((240&a)>>4)*g:e>=h&&0===(6272&a)&&(e=(0===(64&a)?14:15)*g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(d)),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.byteStringToUInt8Array(atob(a.b)),e=a.bo};var d,e=0,f=4095,g=4096,h=14*g;a&&c(this)},jt.Cartridge64K_X07.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge64K_X07.createFromSaveState=function(a){var b=new jt.Cartridge64K_X07;return b.loadState(a),b},jt.Cartridge8K_0840=function(a,b){function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){var b=6208&a;2048===b?0!==e&&(e=0):2112===b&&e!==g&&(e=g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(d)),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),d=jt.Util.byteStringToUInt8Array(atob(a.b)),e=a.bo};var d,e=0,f=4095,g=4096;a&&c(this)},jt.Cartridge8K_0840.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_0840.createFromSaveState=function(a){var b=new jt.Cartridge8K_0840;return b.loadState(a),b},jt.Cartridge8K_UA=function(a,b){function c(c){c.rom=a,c.format=b,d=a.content}this.read=function(a){return d[e+(a&f)]},this.performBankSwitchOnMonitoredAccess=function(a){544===a?0!==e&&(e=0):576===a&&e!==g&&(e=g)},this.saveState=function(){return{f:this.format.name,r:this.rom.saveState(),b:btoa(jt.Util.uInt8ArrayToByteString(d)),bo:e}},this.loadState=function(a){this.format=jt.CartridgeFormats[a.f],this.rom=jt.ROM.loadState(a.r),\nd=jt.Util.byteStringToUInt8Array(atob(a.b)),e=a.bo};var d,e=0,f=4095,g=4096;a&&c(this)},jt.Cartridge8K_UA.prototype=jt.CartridgeBankedByBusMonitoring.base,jt.Cartridge8K_UA.createFromSaveState=function(a){var b=new jt.Cartridge8K_UA;return b.loadState(a),b},jt.CartridgeFormats={\"4K\":{name:\"4K\",desc:\"4K Atari\",priority:101,tryFormat:function(a){if(a.content.length>=8&&a.content.length<=4096&&4096%a.content.length===0)return this},createCartridgeFromRom:function(a){return new jt.Cartridge4K(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge4K.createFromSaveState(a)}},CV:{name:\"CV\",desc:\"2K Commavid +RAM\",priority:102,tryFormat:function(a){if(2048===a.content.length||4096===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge2K_CV(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge2K_CV.createFromSaveState(a)}},E0:{name:\"E0\",desc:\"8K Parker Bros.\",priority:102,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_E0(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_E0.createFromSaveState(a)}},F0:{name:\"F0\",desc:\"64K Dynacom Megaboy\",priority:101,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_F0(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge64K_F0.createFromSaveState(a)}},FE:{name:\"FE\",desc:\"8K Robotank/Decathlon\",priority:103,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_FE(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_FE.createFromSaveState(a)}},E7:{name:\"E7\",desc:\"16K M-Network\",priority:102,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge16K_E7(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge16K_E7.createFromSaveState(a)}},F8:{name:\"F8\",desc:\"8K Atari (+RAM)\",priority:101,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,null,128)},createCartridgeFromSaveState:function(a){return jt.CartridgeBankedByMaskedRange.createFromSaveState(a)}},F6:{name:\"F6\",desc:\"16K Atari (+RAM)\",priority:101,tryFormat:function(a){if(16384===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4086,null,128)},createCartridgeFromSaveState:function(a){return jt.CartridgeBankedByMaskedRange.createFromSaveState(a)}},F4:{name:\"F4\",desc:\"32K Atari (+RAM)\",priority:101,tryFormat:function(a){if(32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4084,null,128)},createCartridgeFromSaveState:function(a){return jt.CartridgeBankedByMaskedRange.createFromSaveState(a)}},FA2cu:{name:\"FA2cu\",desc:\"32K CBS RAM Plus CU Image\",priority:103,tryFormat:function(a){if(32768===a.content.length){var b=jt.Util.arraysEqual(a.content.slice(32,36),this.cuMagicWord);return this.priority=103-(b?30:0),this}},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this,1024)},createCartridgeFromSaveState:function(a){return jt.Cartridge24K_28K_32K_FA2.createFromSaveState(a)},cuMagicWord:[30,171,173,16]},FA2:{name:\"FA2\",desc:\"24K/28K/32K CBS RAM Plus\",priority:102,tryFormat:function(a){if(24576===a.content.length||28672===a.content.length||32768===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge24K_28K_32K_FA2(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge24K_28K_32K_FA2.createFromSaveState(a)}},FA:{name:\"FA\",desc:\"12K CBS RAM Plus\",priority:101,tryFormat:function(a){if(12288===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4088,!0,256)},createCartridgeFromSaveState:function(a){return jt.CartridgeBankedByMaskedRange.createFromSaveState(a)}},EF:{name:\"EF\",desc:\"8K-64K H. Runner (+RAM)\",priority:114,tryFormat:function(a){if(a.content.length%4096===0&&a.content.length>=8192&&a.content.length<=65536)return this},createCartridgeFromRom:function(a){return new jt.CartridgeBankedByMaskedRange(a,this,4064,null,128)},createCartridgeFromSaveState:function(a){return jt.CartridgeBankedByMaskedRange.createFromSaveState(a)}},DPCa:{name:\"DPCa\",desc:\"10K DPC Pitfall 2 (Enhanced Audio)\",priority:101,tryFormat:function(a){if(a.content.length>=10240&&a.content.length<=10496)return this},createCartridgeFromRom:function(a){return new jt.Cartridge10K_DPCa(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge10K_DPCa.createFromSaveState(a)}},\"3F\":{name:\"3F\",desc:\"8K-512K Tigervision\",priority:112,tryFormat:function(a){if(a.content.length%2048===0&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3F(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_512K_3F.createFromSaveState(a)}},\"3E\":{name:\"3E\",desc:\"8K-512K Tigervision (+RAM)\",priority:111,tryFormat:function(a){if(a.content.length%2048===0&&a.content.length<=524288)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_512K_3E(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_512K_3E.createFromSaveState(a)}},X07:{name:\"X07\",desc:\"64K AtariAge\",priority:102,tryFormat:function(a){if(65536===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge64K_X07(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge64K_X07.createFromSaveState(a)}},\"0840\":{name:\"0840\",desc:\"8K Econobanking\",priority:116,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_0840(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_0840.createFromSaveState(a)}},UA:{name:\"UA\",desc:\"8K UA Limited\",priority:115,tryFormat:function(a){if(8192===a.content.length)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_UA(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_UA.createFromSaveState(a)}},SB:{name:\"SB\",desc:\"8K-256K Superbanking\",priority:113,tryFormat:function(a){if(a.content.length%4096===0&&a.content.length>=8192&&a.content.length<=262144)return this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_256K_SB(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_256K_SB.createFromSaveState(a)}},AR:{name:\"AR\",desc:\"8K-64K Arcadia/Starpath/Supercharger\",priority:101,tryFormat:function(a){if(a.content.length%jt.Cartridge8K_64K_AR.PART_SIZE===0&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE>=1&&a.content.length/jt.Cartridge8K_64K_AR.PART_SIZE<=8)return jt.Cartridge8K_64K_AR.checkTape(a),this},createCartridgeFromRom:function(a){return new jt.Cartridge8K_64K_AR(a,this)},createCartridgeFromSaveState:function(a){return jt.Cartridge8K_64K_AR.createFromSaveState(a)}}},jt.CartridgeDatabase=function(){this.createCartridgeFromRom=function(b){var c=a(b);if(0!==c.length){var d=c[0];return jt.Util.log(\"\"+d.name+\": \"+d.desc+\", priority: \"+d.priority+(d.priorityBoosted?\" (\"+d.priorityBoosted+\")\":\"\")),d.createCartridgeFromRom(b)}},this.createCartridgeFromSaveState=function(a){var b=jt.CartridgeFormats[a.f];if(!b){var c=new Error(\"Unsupported ROM Format: \"+a.f);throw c.javatari=!0,c}return b.createCartridgeFromSaveState(a)},this.produceInfo=function(a){var d=a.content.length,e=jt.MD5(a.content);a.content.length>d&&a.content.splice(d);var f=jt.CartridgeInfoLibrary[e];return f?jt.Util.log(\"\"+f.n):(f=b(a.source),jt.Util.log(\"Unknown ROM: \"+f.n)),c(f,a.source,e),f};var a=function(a){var b,c,e=[];for(var f in jt.CartridgeFormats)try{if(b=jt.CartridgeFormats[f].tryFormat(a),\n!b)continue;d(b,a.info),e.push(b)}catch(a){if(!a.formatDenial)throw a;c||(c=a)}if(0===e.length){var g=c||new Error(\"Unsupported ROM Format. Size: \"+a.content.length);throw g.javatari=!0,g}return e.sort(function(a,b){return(a.priorityBoosted||a.priority)-(b.priorityBoosted||b.priority)}),e},b=function(a){var b={n:\"Unknown\"};if(!a||!a.trim())return b;var c=a,d=c.lastIndexOf(\"/\"),e=c.lastIndexOf(\"\\\\\"),f=c.lastIndexOf(\"?\"),g=Math.max(d,Math.max(e,f));g>=0&&g<c.length-1&&(c=c.substring(g+1));var h=c.lastIndexOf(\".\");return h>=0&&(c=c.substring(0,h)),b.n=c.trim()||\"Unknown\",b},c=function(a,b,c){a.h=c,a.l||(a.l=e(a.n));var d=a.n.toUpperCase();a:if(!a.p&&(a.p=0,!d.match(k+\"JOYSTICK(S)?\"+l)))if(d.match(k+\"PADDLE(S)?\"+l))a.p=1;else for(var m=0;m<i.length;m++)if(d.match(i[m])){a.p=1;break a}a:if(!a.c)if(d.match(k+\"CRT(_|-)?MODE\"+l))a.c=1;else for(m=0;m<j.length;m++)if(d.match(j[m])){a.c=1;break a}a:if(!a.f){var n=b.toUpperCase();for(var o in jt.CartridgeFormats)if(f(o,d)||f(o,n)){a.f=o;break a}for(o in h)if(g(o,d)){a.f=o;break a}}},d=function(a,b){b.f&&a.name===b.f?a.priorityBoosted=a.priority-m:a.priorityBoosted=void 0},e=function(a){return a.split(/(\\(|\\[)/)[0].trim()},f=function(a,b){return b.match(k+a+l)},g=function(a,b){var c=h[a];if(!c)return!1;for(var d=0;d<c.length;d++)if(b.match(c[d]))return!0;return!1},h={E0:[\"^.*MONTEZUMA.*$\",\"^.*MONTZREV.*$\",\"^.*GYRUS.*$\",\"^.*TOOTH.*PROTECTORS.*$\",\"^.*TOOTHPRO.*$\",\"^.*DEATH.*STAR.*BATTLE.*$\",\"^.*DETHSTAR.*$\",\"^.*JAMES.*BOND.*$\",\"^.*JAMEBOND.*$\",\"^.*SUPER.*COBRA.*$\",\"^.*SPRCOBRA.*$\",\"^.*TUTANKHAM.*$\",\"^.*TUTANK.*$\",\"^.*POPEYE.*$\",\"^.*(SW|STAR.?WARS).*ARCADE.*GAME.*$\",\"^.*SWARCADE.*$\",\"^.*Q.*BERT.*QUBES.*$\",\"^.*QBRTQUBE.*$\",\"^.*FROGGER.?(2|II).*$\",\"^.*DO.*CASTLE.*$\"],FE:[\"^.*ROBOT.*TANK.*$\",\"^.*ROBOTANK.*$\",\"^.*DECATHLON.*$\",\"^.*DECATHLN.*$\"],E7:[\"^.*BUMP.*JUMP.*$\",\"^.*BNJ.*$\",\"^.*BURGER.*TIME.*$\",\"^.*BURGTIME.*$\",\"^.*POWER.*HE.?MAN.*$\",\"^.*HE_MAN.*$\"],\"3F\":[\"^.*POLARIS.*$\",\"^.*RIVER.*PATROL.*$\",\"^.*RIVERP.*$\",\"^.*SPRINGER.*$\",\"^.*MINER.*2049.*$\",\"^.*MNR2049R.*$\",\"^.*MINER.*2049.*VOLUME.*$\",\"^.*MINRVOL2.*$\",\"^.*ESPIAL.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],\"3E\":[\"^.*BOULDER.*DASH.*$\",\"^.*BLDRDASH.*$\"],DPCa:[\"^.*PITFALL.*(2|II).*$\"]},i=[\"^.*PADDLES.*$\",\"^.*BREAKOUT.*$\",\"^.*SUPER.*BREAKOUT.*$\",\"^.*SUPERB.*$\",\"^.*WARLORDS.*$\",\"^.*STEEPLE.*CHASE.*$\",\"^.*STEPLCHS.*$\",\"^.*VIDEO.*OLYMPICS.*$\",\"^.*VID(|_)OLYM(|P).*$\",\"^.*CIRCUS.*ATARI.*$\",\"^.*CIRCATRI.*$\",\"^.*KABOOM.*$\",\"^.*BUGS((?!BUNNY).)*\",\"^.*BACHELOR.*PARTY.*$\",\"^.*BACHELOR.*$\",\"^.*BACHELORETTE.*PARTY.*$\",\"^.*BACHLRTT.*$\",\"^.*BEAT.*EM.*EAT.*EM.*$\",\"^.*BEATEM.*$\",\"^.*PHILLY.*FLASHER.*$\",\"^.*PHILLY.*$\",\"^.*JEDI.*ARENA.*$\",\"^.*JEDIAREN.*$\",\"^.*EGGOMANIA.*$\",\"^.*EGGOMANA.*$\",\"^.*PICNIC.*$\",\"^.*PIECE.*O.*CAKE.*$\",\"^.*PIECECKE.*$\",\"^.*BACKGAMMON.*$\",\"^.*BACKGAM.*$\",\"^.*BLACKJACK.*$\",\"^.*BLACK(|_)J.*$\",\"^.*CANYON.*BOMBER.*$\",\"^.*CANYONB.*$\",\"^.*CASINO.*$\",\"^.*DEMONS.*DIAMONDS.*$\",\"^.*DEMONDIM.*$\",\"^.*DUKES.*HAZZARD.*2.*$\",\"^.*STUNT.?2.*$\",\"^.*ENCOUNTER.*L.?5.*$\",\"^.*ENCONTL5.*$\",\"^.*G.*I.*JOE.*COBRA.*STRIKE.*$\",\"^.*GIJOE.*$\",\"^.*GUARDIAN.*$\",\"^.*MARBLE.*CRAZE.*$\",\"^.*MARBCRAZ.*$\",\"^.*MEDIEVAL.*MAYHEM.*$\",\"^.*MONDO.*PONG.*$\",\"^.*NIGHT.*DRIVER.*$\",\"^.*NIGHTDRV.*$\",\"^.*PARTY.*MIX.*$\",\"^.*POKER.*PLUS.*$\",\"^.*PONG.*SPORTS.*$\",\"^.*SCSICIDE.*$\",\"^.*SECRET.*AGENT.*$\",\"^.*SOLAR.*STORM.*$\",\"^.*SOLRSTRM.*$\",\"^.*SPEEDWAY.*$\",\"^.*STREET.*RACER.*$\",\"^.*STRTRACE.*$\",\"^.*STUNT.*CYCLE.*$\",\"^.*STUNT.?1.*$\",\"^.*TAC.?SCAN.*$\",\"^.*MUSIC.*MACHINE.*$\",\"^.*MUSCMACH.*$\",\"^.*VONG.*$\",\"^.*WARPLOCK.*$\"],j=[\"^.*STAR.*CASTLE.*$\",\"^.*SEAWEED.*$\",\"^.*ANDREW.*DAVIE.*$\",\"^.*DEMO.*IMAGE.*AD.*$\"],k=\"^(|.*?(\\\\W|_|%20))\",l=\"(|(\\\\W|_|%20).*)$\",m=50},jt.CartridgeDatabase=new jt.CartridgeDatabase,jt.MD5=function(a){function b(a){var b=(a>>>0).toString(16);return\"00000000\".substr(0,8-b.length)+b}function c(a){for(var b=[],c=0;c<a.length;c++)b=b.concat(k(a[c]));return b}function d(a){for(var b=[],c=0;c<8;c++)b.push(255&a),a>>>=8;return b}function e(a,b){return a<<b&4294967295|a>>>32-b}function f(a,b,c){return a&b|~a&c}function g(a,b,c){return c&a|~c&b}function h(a,b,c){return a^b^c}function i(a,b,c){return b^(a|~c)}function j(a,b){return a[b+3]<<24|a[b+2]<<16|a[b+1]<<8|a[b]}function k(a){for(var b=[],c=0;c<a.length;c++)if(a.charCodeAt(c)<=127)b.push(a.charCodeAt(c));else for(var d=encodeURIComponent(a.charAt(c)).substr(1).split(\"%\"),e=0;e<d.length;e++)b.push(parseInt(d[e],16));return b}function l(a,c,d,e){for(var f=\"\",g=0,h=0,i=3;i>=0;i--)h=arguments[i],g=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=255&h,h>>>=8,g<<=8,g|=h,f+=b(g);return f}function m(a){for(var b=new Array(a.length),c=0;c<a.length;c++)b[c]=a[c];return b}function n(a,b){return 4294967295&a+b}function o(){function a(a,b,c,d){var f=v;v=u,u=t,t=n(t,e(n(s,n(a,n(b,c))),d)),s=f}var b=p.length;p.push(128);var c=p.length%64;if(c>56){for(var k=0;k<64-c;k++)p.push(0);c=p.length%64}for(k=0;k<56-c;k++)p.push(0);p=p.concat(d(8*b));var m=1732584193,o=4023233417,q=2562383102,r=271733878,s=0,t=0,u=0,v=0;for(k=0;k<p.length/64;k++){s=m,t=o,u=q,v=r;var w=64*k;a(f(t,u,v),3614090360,j(p,w),7),a(f(t,u,v),3905402710,j(p,w+4),12),a(f(t,u,v),606105819,j(p,w+8),17),a(f(t,u,v),3250441966,j(p,w+12),22),a(f(t,u,v),4118548399,j(p,w+16),7),a(f(t,u,v),1200080426,j(p,w+20),12),a(f(t,u,v),2821735955,j(p,w+24),17),a(f(t,u,v),4249261313,j(p,w+28),22),a(f(t,u,v),1770035416,j(p,w+32),7),a(f(t,u,v),2336552879,j(p,w+36),12),a(f(t,u,v),4294925233,j(p,w+40),17),a(f(t,u,v),2304563134,j(p,w+44),22),a(f(t,u,v),1804603682,j(p,w+48),7),a(f(t,u,v),4254626195,j(p,w+52),12),a(f(t,u,v),2792965006,j(p,w+56),17),a(f(t,u,v),1236535329,j(p,w+60),22),a(g(t,u,v),4129170786,j(p,w+4),5),a(g(t,u,v),3225465664,j(p,w+24),9),a(g(t,u,v),643717713,j(p,w+44),14),a(g(t,u,v),3921069994,j(p,w),20),a(g(t,u,v),3593408605,j(p,w+20),5),a(g(t,u,v),38016083,j(p,w+40),9),a(g(t,u,v),3634488961,j(p,w+60),14),a(g(t,u,v),3889429448,j(p,w+16),20),a(g(t,u,v),568446438,j(p,w+36),5),a(g(t,u,v),3275163606,j(p,w+56),9),a(g(t,u,v),4107603335,j(p,w+12),14),a(g(t,u,v),1163531501,j(p,w+32),20),a(g(t,u,v),2850285829,j(p,w+52),5),a(g(t,u,v),4243563512,j(p,w+8),9),a(g(t,u,v),1735328473,j(p,w+28),14),a(g(t,u,v),2368359562,j(p,w+48),20),a(h(t,u,v),4294588738,j(p,w+20),4),a(h(t,u,v),2272392833,j(p,w+32),11),a(h(t,u,v),1839030562,j(p,w+44),16),a(h(t,u,v),4259657740,j(p,w+56),23),a(h(t,u,v),2763975236,j(p,w+4),4),a(h(t,u,v),1272893353,j(p,w+16),11),a(h(t,u,v),4139469664,j(p,w+28),16),a(h(t,u,v),3200236656,j(p,w+40),23),a(h(t,u,v),681279174,j(p,w+52),4),a(h(t,u,v),3936430074,j(p,w),11),a(h(t,u,v),3572445317,j(p,w+12),16),a(h(t,u,v),76029189,j(p,w+24),23),a(h(t,u,v),3654602809,j(p,w+36),4),a(h(t,u,v),3873151461,j(p,w+48),11),a(h(t,u,v),530742520,j(p,w+60),16),a(h(t,u,v),3299628645,j(p,w+8),23),a(i(t,u,v),4096336452,j(p,w),6),a(i(t,u,v),1126891415,j(p,w+28),10),a(i(t,u,v),2878612391,j(p,w+56),15),a(i(t,u,v),4237533241,j(p,w+20),21),a(i(t,u,v),1700485571,j(p,w+48),6),a(i(t,u,v),2399980690,j(p,w+12),10),a(i(t,u,v),4293915773,j(p,w+40),15),a(i(t,u,v),2240044497,j(p,w+4),21),a(i(t,u,v),1873313359,j(p,w+32),6),a(i(t,u,v),4264355552,j(p,w+60),10),a(i(t,u,v),2734768916,j(p,w+24),15),a(i(t,u,v),1309151649,j(p,w+52),21),a(i(t,u,v),4149444226,j(p,w+16),6),a(i(t,u,v),3174756917,j(p,w+44),10),a(i(t,u,v),718787259,j(p,w+8),15),a(i(t,u,v),3951481745,j(p,w+36),21),m=n(m,s),o=n(o,t),q=n(q,u),r=n(r,v)}return l(r,q,o,m).toUpperCase()}var p=null,q=null;return\"string\"==typeof a?p=k(a):a.constructor==Array?0===a.length?p=a:\"string\"==typeof a[0]?p=c(a):\"number\"==typeof a[0]?p=a:q=typeof a[0]:\"undefined\"!=typeof ArrayBuffer?a instanceof ArrayBuffer?p=m(new Uint8Array(a)):a instanceof Uint8Array||a instanceof Int8Array?p=m(a):a instanceof Uint32Array||a instanceof Int32Array||a instanceof Uint16Array||a instanceof Int16Array||a instanceof Float32Array||a instanceof Float64Array?p=m(new Uint8Array(a.buffer)):q=typeof a:q=typeof a,q&&alert(\"MD5 type mismatch, cannot process \"+q),\no()},!function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\0\\0\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(\"undefined\"==typeof a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);\"undefined\"==typeof b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\0\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;\nfor(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return\"string\"===e?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||\"undefined\"==typeof b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&\"undefined\"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||\"undefined\"==typeof b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=\"undefined\"!=typeof b&&b,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";w+=\"\\n\\0\",w+=p||q?\"\\0\\b\":\"\\0\\0\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+\"\u0014\\0\"+w+s(o.length,2)+\"\\0\\0\\0\\0\"+(j===!0?\"\u0010\\0\\0\\0\":\"\\0\\0\\0\\0\")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),\nthis.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=\"undefined\"!=typeof a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(a){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;e.append(b),c.blob=0===e.getBlob(\"application/zip\").size}catch(a){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(k(e.uint8array?a.subarray(c,h):a.slice(c,h))),c=h}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(a){h=!1}if(!h){for(var i=\"\",k=0;k<a.length;k++)i+=String.fromCharCode(a[k]);return i}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(a){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(c){try{var b=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,d=new b;return d.append(a),d.getBlob(\"application/zip\")}catch(a){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),\nthis.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=!!(16&this.externalFileAttributes)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),\nthis.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d!==m||(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n)},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d!==i.Z_FINISH||(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK)},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(a){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(a){g=!1}for(var h=new e.Buf8(256),i=0;256>i;i++)h[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;h[254]=h[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,i=b||a.length,j=new Array(2*i);for(e=0,c=0;i>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=h[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&i>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+h[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a^=-1;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),\n0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-ja?a.strstart-(a.w_size-ja):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ia,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ia-(m-f),f=m-ia,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-ja)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ha)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+ha-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<ha)););}while(a.lookahead<ja&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sa;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sa;if(a.strstart-a.block_start>=a.w_size-ja&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sa:sa}function o(a,b){for(var c,d;;){if(a.lookahead<ja){if(m(a),a.lookahead<ja&&b===H)return sa;if(0===a.lookahead)break}if(c=0,a.lookahead>=ha&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-ja&&(a.match_length=l(a,c)),a.match_length>=ha)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-ha),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ha){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=a.strstart<ha-1?a.strstart:ha-1,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function p(a,b){for(var c,d,e;;){if(a.lookahead<ja){if(m(a),a.lookahead<ja&&b===H)return sa;if(0===a.lookahead)break}if(c=0,a.lookahead>=ha&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=ha-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-ja&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===ha&&a.strstart-a.match_start>4096)&&(a.match_length=ha-1)),a.prev_length>=ha&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ha,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ha),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+ha-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=ha-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sa}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sa}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<ha-1?a.strstart:ha-1,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ia){if(m(a),a.lookahead<=ia&&b===H)return sa;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=ha&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ia;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ia-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ha?(c=D._tr_tally(a,1,a.match_length-ha),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sa;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sa}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ua:va):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sa:ta}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ha-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fa),this.dyn_dtree=new C.Buf16(2*(2*da+1)),this.bl_tree=new C.Buf16(2*(2*ea+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(ga+1),this.heap=new C.Buf16(2*ca+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*ca+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?la:qa,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,\ni.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+ha-1)/ha),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ra&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===la)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=ma):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wa),h.status=qa);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ka),m+=31-m%31,h.status=qa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===ma)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=na)}else h.status=na;if(h.status===na)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=oa)}else h.status=oa;if(h.status===oa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pa)}else h.status=pa;if(h.status===pa&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qa)):h.status=qa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===ra&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==ra){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ua||o===va)&&(h.status=ra),o===sa||o===ua)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===ta&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==la&&b!==ma&&b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra?d(a,O):(a.state=null,b===qa?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,aa=29,ba=256,ca=ba+1+aa,da=30,ea=19,fa=2*ca+1,ga=15,ha=3,ia=258,ja=ia+ha+1,ka=32,la=42,ma=69,na=73,oa=91,pa=103,qa=113,ra=666,sa=1,ta=2,ua=3,va=4,wa=3,xa=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xa(0,0,0,0,n),new xa(4,4,8,4,o),new xa(4,5,16,8,o),new xa(4,6,32,32,o),new xa(4,4,16,16,p),new xa(8,16,32,32,p),new xa(8,16,128,128,p),new xa(8,32,128,256,p),new xa(32,128,258,1024,p),new xa(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg=\"invalid literal/length code\",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg=\"invalid distance code\",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,\nb.bits=0,b.lencode=b.lendyn=new r.Buf32(oa),b.distcode=b.distdyn=new r.Buf32(pa),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,ra)}function k(a){if(sa){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sa=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa=0,Ba=new r.Buf8(4),Ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xa=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=la;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg=\"invalid window size\",c.mode=la;break}c.dmax=1<<wa,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=la;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=la;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=t(c.check,Ba,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=t(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.comment+=String.fromCharCode(wa));while(wa&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wa)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=la;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ia;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=ba,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=la}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=la;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=la;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Ca[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=v(w,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid code lengths set\",c.mode=la;break}c.have=0,c.mode=aa;case aa:for(;c.have<c.nlen+c.ndist;){for(;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sa)m>>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qa,n-=qa,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=la;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=la;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===la)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=la;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg=\"invalid literal/lengths set\",c.mode=la;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg=\"invalid distances set\",c.mode=la;break}if(c.mode=ba,b===B)break a;case ba:c.mode=ca;case ca:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<<c.lenbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(ra&&0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.lencode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ha;break}if(32&ra){c.back=-1,c.mode=V;break}if(64&ra){a.msg=\"invalid literal/length code\",c.mode=la;break}c.extra=15&ra,c.mode=da;case da:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=ea;case ea:for(;Aa=c.distcode[m&(1<<c.distbits)-1],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,\n!(n>=qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&ra)){for(ta=qa,ua=ra,va=sa;Aa=c.distcode[va+((m&(1<<ta+ua)-1)>>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(n>=ta+qa);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg=\"invalid distance code\",c.mode=la;break}c.offset=sa,c.extra=15&ra,c.mode=fa;case fa:if(c.extra){for(za=c.extra;za>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=la;break}c.mode=ga;case ga:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=la;break}q>c.wnext?(q-=c.wnext,oa=c.wsize-q):oa=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,oa=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[oa++];while(--q);0===c.length&&(c.mode=ca);break;case ha:if(0===j)break a;f[h++]=c.length,j--,c.mode=ca;break;case ia:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=la;break}m=0,n=0}c.mode=ja;case ja:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=la;break}m=0,n=0}c.mode=ka;case ka:xa=D;break a;case la:xa=G;break a;case ma:return H;case na:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<la&&(c.mode<ia||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=ma,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===ba||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xa===C&&(xa=I),xa)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,aa=19,ba=20,ca=21,da=22,ea=23,fa=24,ga=25,ha=26,ia=27,ja=28,ka=29,la=30,ma=31,na=32,oa=852,pa=592,qa=15,ra=qa,sa=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?ga[a]:ga[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ia[d]=c,a=0;a<1<<_[d];a++)ha[c++]=d;for(ha[c-1]=d,e=0,d=0;16>d;d++)for(ja[d]=e,a=0;a<1<<aa[d];a++)ga[e++]=d;for(e>>=7;R>d;d++)for(ja[d]=e<<7,a=0;a<1<<aa[d]-7;a++)ga[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)ea[2*a+1]=8,a++,f[8]++;for(;255>=a;)ea[2*a+1]=9,a++,f[9]++;for(;279>=a;)ea[2*a+1]=7,a++,f[7]++;for(;287>=a;)ea[2*a+1]=8,a++,f[8]++;for(l(ea,Q+1,f),a=0;R>a;a++)fa[2*a+1]=5,fa[2*a]=i(a,5);ka=new na(ea,_,P+1,Q,U),la=new na(fa,aa,0,R,U),ma=new na(new Array(0),ba,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=ha[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ia[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=aa[i],0!==j&&(d-=ja[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,\na.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*ca[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*ca[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pa||(m(),pa=!0),a.l_desc=new oa(a.dyn_ltree,ka),a.d_desc=new oa(a.dyn_dtree,la),a.bl_desc=new oa(a.bl_tree,ma),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,ea),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,ea,fa)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ha[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],aa=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],ba=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ca=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],da=512,ea=new Array(2*(Q+2));d(ea);var fa=new Array(2*R);d(fa);var ga=new Array(da);d(ga);var ha=new Array(N-M+1);d(ha);var ia=new Array(O);d(ia);var ja=new Array(R);d(ja);var ka,la,ma,na=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},oa=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pa=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),jt.Keys={VK_ESCAPE:{c:27,n:\"Esc\"},VK_F1:{c:112,n:\"F1\"},VK_F2:{c:113,n:\"F2\"},VK_F3:{c:114,n:\"F3\"},VK_F4:{c:115,n:\"F4\"},VK_F5:{c:116,n:\"F5\"},VK_F6:{c:117,n:\"F6\"},VK_F7:{c:118,n:\"F7\"},VK_F8:{c:119,n:\"F8\"},VK_F9:{c:120,n:\"F9\"},VK_F10:{c:121,n:\"F10\"},VK_F11:{c:122,n:\"F11\"},VK_F12:{c:123,n:\"F12\"},VK_SCROLL_LOCK:{c:145,n:\"ScrLck\"},VK_PAUSE:{c:19,n:\"Pause\"},VK_QUOTE:{c:192,n:\"'\"},VK_TILDE:{c:222,n:\"~\"},VK_1:{c:49,n:\"1\"},VK_2:{c:50,n:\"2\"},VK_3:{c:51,n:\"3\"},VK_4:{c:52,n:\"4\"},VK_5:{c:53,n:\"5\"},VK_6:{c:54,n:\"6\"},VK_7:{c:55,n:\"7\"},VK_8:{c:56,n:\"8\"},VK_9:{c:57,n:\"9\"},VK_0:{c:48,n:\"0\"},VK_MINUS:{c:189,n:\"-\"},VK_MINUS2:{c:173,n:\"-\"},VK_EQUALS:{c:187,n:\"=\"},VK_EQUALS2:{c:61,n:\"=\"},VK_BACK_SPACE:{c:8,n:\"Bkspc\"},VK_TAB:{c:9,n:\"Tab\"},VK_Q:{c:81,n:\"Q\"},VK_W:{c:87,n:\"W\"},VK_E:{c:69,n:\"E\"},VK_R:{c:82,n:\"R\"},VK_T:{c:84,n:\"T\"},VK_Y:{c:89,n:\"Y\"},VK_U:{c:85,n:\"U\"},VK_I:{c:73,n:\"I\"},VK_O:{c:79,n:\"O\"},VK_P:{c:80,n:\"P\"},VK_ACUTE:{c:219,n:\"´\"},VK_OPEN_BRACKET:{c:221,n:\"[\"},VK_CLOSE_BRACKET:{c:220,n:\"]\"},VK_CAPS_LOCK:{c:20,n:\"CpsLck\"},VK_A:{c:65,n:\"A\"},VK_S:{c:83,n:\"S\"},VK_D:{c:68,n:\"D\"},VK_F:{c:70,n:\"F\"},VK_G:{c:71,n:\"G\"},VK_H:{c:72,n:\"H\"},VK_J:{c:74,n:\"J\"},VK_K:{c:75,n:\"K\"},VK_L:{c:76,n:\"L\"},VK_CEDILLA:{c:186,n:\"Ç\"},VK_TILDE:{c:222,n:\"~\"},VK_ENTER:{c:13,n:\"Enter\"},VK_SHIFT:{c:16,n:\"Shift\"},VK_BACK_SLASH:{c:226,n:\"\\\\\"},VK_Z:{c:90,n:\"Z\"},VK_X:{c:88,n:\"X\"},VK_C:{c:67,n:\"C\"},VK_V:{c:86,n:\"V\"},VK_B:{c:66,n:\"B\"},VK_N:{c:78,n:\"N\"},VK_M:{c:77,n:\"M\"},VK_COMMA:{c:188,n:\"] =\"},VK_PERIOD:{c:190,n:\".\"},VK_SEMICOLON:{c:191,n:\";\"},VK_SLASH:{c:193,n:\"/\"},VK_CONTROL:{c:17,n:\"Ctrl\"},VK_ALT:{c:18,n:\"Alt\"},VK_SPACE:{c:32,n:\"Space\"},VK_INSERT:{c:45,n:\"Ins\"},VK_DELETE:{c:46,n:\"Del\"},VK_HOME:{c:36,n:\"Home\"},VK_END:{c:35,n:\"End\"},VK_PAGE_UP:{c:33,n:\"PgUp\"},VK_PAGE_DOWN:{c:34,n:\"PgDown\"},VK_UP:{c:38,n:\"Up\"},VK_DOWN:{c:40,n:\"Down\"},VK_LEFT:{c:37,n:\"Left\"},VK_RIGHT:{c:39,n:\"Right\"},VK_NUM_LOCK:{c:144,n:\"Num\"},VK_DIVIDE:{c:111,n:\"Num /\"},VK_MULTIPLY:{c:106,n:\"Num *\"},VK_SUBTRACT:{c:109,n:\"Num -\"},VK_ADD:{c:107,n:\"Num +\"},VK_DECIMAL:{c:194,n:\"Num .\"},VK_NUMPAD0:{c:96,n:\"Num 0\"},VK_NUMPAD1:{c:97,n:\"Num 1\"},VK_NUMPAD2:{c:98,n:\"Num 2\"},VK_NUMPAD3:{c:99,n:\"Num 3\"},VK_NUMPAD4:{c:100,n:\"Num 4\"},VK_NUMPAD5:{c:101,n:\"Num 5\"},VK_NUMPAD6:{c:102,n:\"Num 6\"},VK_NUMPAD7:{c:103,n:\"Num 7\"},VK_NUMPAD8:{c:104,n:\"Num 8\"},VK_NUMPAD9:{c:105,n:\"Num 9\"},VK_NUMPAD_CENTER:{c:12,n:\"Num Cntr\"}},jt.KeysByCode={};for(var a in jt.Keys)jt.KeysByCode[jt.Keys[a].c]=jt.Keys[a];Javatari.preferences={},Javatari.preferences.defaults={KP0LEFT:jt.Keys.VK_LEFT.c,KP0UP:jt.Keys.VK_UP.c,KP0RIGHT:jt.Keys.VK_RIGHT.c,KP0DOWN:jt.Keys.VK_DOWN.c,KP0BUT:jt.Keys.VK_SPACE.c,KP0BUT2:jt.Keys.VK_DELETE.c,KP1LEFT:jt.Keys.VK_F.c,KP1UP:jt.Keys.VK_T.c,KP1RIGHT:jt.Keys.VK_H.c,KP1DOWN:jt.Keys.VK_G.c,KP1BUT:jt.Keys.VK_A.c,KP1BUT2:jt.Keys.VK_PERIOD.c,JP0DEVICE:-1,JP0XAXIS:0,JP0XAXISSIG:1,JP0YAXIS:1,JP0YAXISSIG:1,JP0PAXIS:0,JP0PAXISSIG:1,JP0BUT:0,JP0BUT2:1,JP0SELECT:8,JP0RESET:9,JP0PAUSE:7,JP0FAST:6,JP0DEADZONE:.3,JP0PCENTER:.3,JP0PSENS:.75,JP1DEVICE:-1,JP1XAXIS:0,JP1XAXISSIG:1,JP1YAXIS:1,JP1YAXISSIG:1,JP1PAXIS:0,JP1PAXISSIG:1,JP1BUT:0,JP1BUT2:1,JP1SELECT:8,JP1RESET:9,JP1PAUSE:7,JP1FAST:6,JP1DEADZONE:.3,JP1PCENTER:.3,JP1PSENS:.75},Javatari.preferences.loadDefaults=function(){for(var a in Javatari.preferences.defaults)Javatari.preferences[a]=Javatari.preferences.defaults[a]},Javatari.preferences.load=function(){try{Javatari.preferences.loadDefaults();var a=JSON.parse(localStorage.javatariprefs||\"{}\");for(var b in Javatari.preferences.defaults)a[b]&&(Javatari.preferences[b]=a[b])}catch(a){}},Javatari.preferences.save=function(){try{localStorage.javatariprefs=JSON.stringify(Javatari.preferences)}catch(a){}},jt.GamepadConsoleControls=function(a){function b(a,b){this.index=a,this.update=function(b){return c=b[a],!!c},this.hasMoved=function(){var a=c.timestamp;return!a||a>m&&(m=a,!0)},this.getButtonDigital=function(a){var b=c.buttons[a];return\"object\"==typeof b?b.pressed||b.value>.5:b>.5},this.getDPadDirection=function(){return this.getButtonDigital(12)?this.getButtonDigital(15)?1:this.getButtonDigital(14)?7:0:this.getButtonDigital(13)?this.getButtonDigital(15)?3:this.getButtonDigital(14)?5:4:this.getButtonDigital(14)?6:this.getButtonDigital(15)?2:-1;\n},this.getStickDirection=function(){var a=c.axes[d],b=c.axes[e];if((a<0?-a:a)<h?a=0:a*=f,(b<0?-b:b)<h?b=0:b*=g,0===a&&0===b)return-1;var i=(1-Math.atan2(a,b)/Math.PI)/2;return i+=1/16,i>=1&&(i-=1),8*i|0},this.getPaddlePosition=function(){var a=c.axes[i]*j*k+l|0;return a<0?a=0:a>380&&(a=380),a};var c,d=b.xAxis,e=b.yAxis,f=b.xAxisSig,g=b.yAxisSig,h=b.deadzone,i=b.paddleAxis,j=b.paddleAxisSig,k=b.paddleSens,l=b.paddleCenter,m=Number.MIN_VALUE}this.connect=function(a){i=a},this.connectScreen=function(a){j=a},this.powerOn=function(){q=!!navigator.getGamepads,q&&(this.applyPreferences(),e())},this.powerOff=function(){q=!1},this.toggleMode=function(){q&&(e(),u=!u,j.getMonitor().showOSD(\"Gamepad input \"+(u?\"Swapped\":\"Normal\"),!0))},this.setPaddleMode=function(a){q&&(t=a,m.xPosition=n.xPosition=-1)},this.setP1ControlsMode=function(a){v=a},this.clockPulse=function(){if(q&&(++r>=60&&(r=0),k||l||0===r)){var a=navigator.getGamepads();k?k.update(a)?k.hasMoved()&&f(k,m,o,!u):(k=null,c(!0,!1)):0===r&&(k=d(o,p,a),k&&c(!0,!0)),l?l.update(a)?l.hasMoved()&&f(l,n,p,u):(l=null,c(!1,!1)):0===r&&(l=d(p,o,a),l&&c(!1,!0))}};var c=function(a,b){j.getMonitor().showOSD((a^v^u?\"P1\":\"P2\")+\" Gamepad \"+(b?\"connected\":\"disconnected\"),a)},d=function(a,c,d){if(d&&0!==d.length){if(a.device>=0)return d[a.device]?new b(a.device,a):null;for(var e=0,f=d.length;e<f;e++)if(d[e]&&!(e===c.device||k&&k.index===e||l&&l.index===e))return new b(e,a)}},e=function(){m=g(),n=g()},f=function(b,c,d,e){if(t&&0!==d.paddleSens){var f=b.getPaddlePosition();f!==c.xPosition&&(c.xPosition=f,i.controlValueChanged(e^v?s.PADDLE0_POSITION:s.PADDLE1_POSITION,f))}var g=b.getDPadDirection();if(g!==-1||t&&0!==d.paddleSens||(g=b.getStickDirection()),g!==c.direction){var j=7===g||0===g||1==g,k=1===g||2===g||3===g,l=3===g||4===g||5===g,m=5===g||6===g||7===g;e?(a.processKeyEvent(Javatari.preferences.KP0UP,j,0),a.processKeyEvent(Javatari.preferences.KP0RIGHT,k,0),a.processKeyEvent(Javatari.preferences.KP0DOWN,l,0),a.processKeyEvent(Javatari.preferences.KP0LEFT,m,0)):(a.processKeyEvent(Javatari.preferences.KP1UP,j,0),a.processKeyEvent(Javatari.preferences.KP1RIGHT,k,0),a.processKeyEvent(Javatari.preferences.KP1DOWN,l,0),a.processKeyEvent(Javatari.preferences.KP1LEFT,m,0)),c.direction=g}if(w===b)return void h();var n=b.getButtonDigital(d.button)||b.getButtonDigital(d.button2);n!==c.button&&(a.processKeyEvent(e?Javatari.preferences.KP0BUT:Javatari.preferences.KP1BUT,n,0),c.button=n);var o=b.getButtonDigital(d.select);o!==c.select&&(a.processKeyEvent(jt.DOMConsoleControls.KEY_SELECT,o,0),c.select=o);var p=b.getButtonDigital(d.reset);p!==c.reset&&(a.processKeyEvent(jt.DOMConsoleControls.KEY_RESET,p,0),c.reset=p);var q=b.getButtonDigital(d.pause);q!==c.pause&&(a.processKeyEvent(jt.DOMConsoleControls.KEY_PAUSE,q,jt.DOMConsoleControls.KEY_ALT_MASK),c.pause=q);var r=b.getButtonDigital(d.fastSpeed);r!==c.fastSpeed&&(a.processKeyEvent(jt.DOMConsoleControls.KEY_FAST_SPEED,r,0),c.fastSpeed=r)},g=function(){return{direction:-1,button:!1,select:!1,reset:!1,fastSpeed:!1,pause:!1,xPosition:-1}},h=function(){};this.applyPreferences=function(){o={device:Javatari.preferences.JP0DEVICE,xAxis:Javatari.preferences.JP0XAXIS,xAxisSig:Javatari.preferences.JP0XAXISSIG,yAxis:Javatari.preferences.JP0YAXIS,yAxisSig:Javatari.preferences.JP0YAXISSIG,paddleAxis:Javatari.preferences.JP0PAXIS,paddleAxisSig:Javatari.preferences.JP0PAXISSIG,button:Javatari.preferences.JP0BUT,button2:Javatari.preferences.JP0BUT2,select:Javatari.preferences.JP0SELECT,reset:Javatari.preferences.JP0RESET,pause:Javatari.preferences.JP0PAUSE,fastSpeed:Javatari.preferences.JP0FAST,paddleCenter:Javatari.preferences.JP0PCENTER*-190+190-5,paddleSens:Javatari.preferences.JP0PSENS*-190,deadzone:Javatari.preferences.JP0DEADZONE},p={device:Javatari.preferences.JP1DEVICE,xAxis:Javatari.preferences.JP1XAXIS,xAxisSig:Javatari.preferences.JP1XAXISSIG,yAxis:Javatari.preferences.JP1YAXIS,yAxisSig:Javatari.preferences.JP1YAXISSIG,paddleAxis:Javatari.preferences.JP1PAXIS,paddleAxisSig:Javatari.preferences.JP1PAXISSIG,button:Javatari.preferences.JP1BUT,button2:Javatari.preferences.JP1BUT2,select:Javatari.preferences.JP1SELECT,reset:Javatari.preferences.JP1RESET,pause:Javatari.preferences.JP1PAUSE,fastSpeed:Javatari.preferences.JP1FAST,paddleCenter:Javatari.preferences.JP1PCENTER*-190+190-5,paddleSens:Javatari.preferences.JP1PSENS*-190,deadzone:Javatari.preferences.JP1DEADZONE}};var i,j,k,l,m,n,o,p,q=!1,r=-1,s=jt.ConsoleControls,t=!1,u=!1,v=!1,w=null},jt.DOMConsoleControls=function(){function a(){n=new jt.GamepadConsoleControls(b),j()}var b=this;this.connect=function(a,b){l&&l.removeInsertionListener(this),l=b,l.addInsertionListener(this),k=a,k.connectControls(this),n.connect(a)},this.connectPeripherals=function(a,b){m=a.getMonitor(),n.connectScreen(a),this.addInputElements(a.keyControlsInputElements()),b&&this.addInputElements(b.keyControlsInputElements())},this.powerOn=function(){i(),n.powerOn(),0===E?e(!1,!1):1===E&&e(!0,!1)},this.powerOff=function(){e(!1,!1),n.powerOff()},this.destroy=function(){},this.addInputElements=function(a){for(var b=0;b<a.length;b++)a[b].addEventListener(\"keydown\",this.keyDown),a[b].addEventListener(\"keyup\",this.keyUp)},this.toggleP1ControlsMode=function(){this.setP1ControlsMode(!p),d()},this.setP1ControlsMode=function(a){p=a,n.setP1ControlsMode(a),this.applyPreferences()},this.isP1ControlsMode=function(){return p},this.togglePaddleMode=function(){e(!q,!0)},this.isPaddleMode=function(){return q},this.getGamepadControls=function(){return n},this.keyDown=function(a){var b=0|(a.ctrlKey?pa:0)|(a.altKey?qa:0)|(a.shiftKey?ra:0);if(c(a.keyCode,!0,b))return a.returnValue=!1,a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),!1},this.keyUp=function(a){var b=0|(a.ctrlKey?pa:0)|(a.altKey?qa:0)|(a.shiftKey?ra:0);if(c(a.keyCode,!1,b))return a.returnValue=!1,a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),!1},this.cartridgeInserted=function(a){if(a&&!(E>=0)){var b=1===a.rom.info.p;q!==b&&e(b,!1)}},this.clockPulse=function(){n.clockPulse(),q&&(u?t||(r-=s,r<0&&(r=0),k.controlValueChanged(o.PADDLE0_POSITION,r)):t&&(r+=s,r>380&&(r=380),k.controlValueChanged(o.PADDLE0_POSITION,r)),y?x||(v-=w,v<0&&(v=0),k.controlValueChanged(o.PADDLE1_POSITION,v)):x&&(v+=w,v>380&&(v=380),k.controlValueChanged(o.PADDLE1_POSITION,v)))},this.processKeyEvent=function(a,b,c){if(f(a,c,b))return!0;var d=g(a,c);if(null==d)return!1;q&&(d=h(d));var e=D[d];return e&&e===b||(D[d]=b,k.controlStateChanged(d,b)),!0};var c=this.processKeyEvent,d=function(){m.showOSD(\"Controllers: \"+(q?\"Paddles\":\"Joysticks\")+(p?\", Swapped\":\"\"),!0)},e=function(a,b){q=a,t=u=x=y=!1,s=w=2,r=v=q?190:-1;for(var c=0;c<o.playerDigitalControls.length;c++)k.controlStateChanged(o.playerDigitalControls[c],!1);k.controlValueChanged(o.PADDLE0_POSITION,r),k.controlValueChanged(o.PADDLE1_POSITION,v),n.setPaddleMode(q),b&&d()},f=function(a,c,d){var e;if(d){if(c===qa||c===pa)switch(a){case G:return b.toggleP1ControlsMode(),!0;case F:return n.toggleMode(),!0;case H:return b.togglePaddleMode(),!0}if(q){if(e=g(a,c),null==e)return!1;switch(e){case o.JOY0_LEFT:return t=!0,!0;case o.JOY0_RIGHT:return u=!0,!0;case o.JOY0_UP:return s<10&&s++,m.showOSD(\"P1 Paddle speed: \"+s,!0),!0;case o.JOY0_DOWN:return s>1&&s--,m.showOSD(\"P1 Paddle speed: \"+s,!0),!0;case o.JOY1_LEFT:return x=!0,!0;case o.JOY1_RIGHT:return y=!0,!0;case o.JOY1_UP:return w<10&&w++,m.showOSD(\"P2 Paddle speed: \"+w,!0),!0;case o.JOY1_DOWN:return w>1&&w--,m.showOSD(\"P2 Paddle speed: \"+w,!0),!0}}}else if(q){if(e=g(a,c),null==e)return!1;switch(e){case o.JOY0_LEFT:return t=!1,!0;case o.JOY0_RIGHT:return u=!1,!0;case o.JOY1_LEFT:return x=!1,!0;case o.JOY1_RIGHT:return y=!1,!0}}return!1},g=function(a,b){switch(b){case 0:var c=z[a];return c?c:A[a];case pa:return B[a];case qa:return C[a]}return null},h=function(a){switch(a){case o.JOY0_BUTTON:return o.PADDLE0_BUTTON;\ncase o.JOY1_BUTTON:return o.PADDLE1_BUTTON}return a},i=function(){window.onhelp=function(){return!1}},j=function(){b.applyPreferences(),A[O]=o.POWER,A[P]=o.BLACK_WHITE,A[Q]=o.DIFFICULTY0,A[oa]=o.CARTRIDGE_REMOVE,A[la]=o.SAVE_STATE_FILE,A[R]=o.DIFFICULTY1,A[J]=o.SELECT,A[K]=o.SELECT,A[L]=o.RESET,C[O]=o.POWER,C[P]=o.BLACK_WHITE,C[Q]=o.DIFFICULTY0,C[oa]=o.CARTRIDGE_REMOVE,C[la]=o.SAVE_STATE_FILE,C[R]=o.DIFFICULTY1,C[J]=o.SELECT,C[K]=o.SELECT,C[L]=o.RESET,A[M]=o.FAST_SPEED,C[N]=o.PAUSE,C[S]=o.FRAME,C[T]=o.TRACE,C[U]=o.DEBUG,C[V]=o.NO_COLLISIONS,C[W]=o.VIDEO_STANDARD,B[N]=o.PAUSE,B[S]=o.FRAME,B[T]=o.TRACE,B[U]=o.DEBUG,B[V]=o.NO_COLLISIONS,B[W]=o.VIDEO_STANDARD,B[O]=o.POWER_FRY,B[X]=o.SAVE_STATE_0,B[Y]=o.SAVE_STATE_0,B[Z]=o.SAVE_STATE_1,B[$]=o.SAVE_STATE_2,B[_]=o.SAVE_STATE_3,B[aa]=o.SAVE_STATE_4,B[ba]=o.SAVE_STATE_5,B[ca]=o.SAVE_STATE_6,B[da]=o.SAVE_STATE_7,B[ea]=o.SAVE_STATE_8,B[fa]=o.SAVE_STATE_9,B[ga]=o.SAVE_STATE_10,B[ha]=o.SAVE_STATE_11,B[ia]=o.SAVE_STATE_11,B[ja]=o.SAVE_STATE_12,B[ka]=o.SAVE_STATE_12,C[X]=o.LOAD_STATE_0,C[Y]=o.LOAD_STATE_0,C[Z]=o.LOAD_STATE_1,C[$]=o.LOAD_STATE_2,C[_]=o.LOAD_STATE_3,C[aa]=o.LOAD_STATE_4,C[ba]=o.LOAD_STATE_5,C[ca]=o.LOAD_STATE_6,C[da]=o.LOAD_STATE_7,C[ea]=o.LOAD_STATE_8,C[fa]=o.LOAD_STATE_9,C[ga]=o.LOAD_STATE_10,C[ha]=o.LOAD_STATE_11,C[ia]=o.LOAD_STATE_11,C[ja]=o.LOAD_STATE_12,C[ka]=o.LOAD_STATE_12,C[I]=o.CARTRIDGE_FORMAT,C[ma]=o.CARTRIDGE_CLOCK_DEC,C[na]=o.CARTRIDGE_CLOCK_INC,B[I]=o.CARTRIDGE_FORMAT,B[ma]=o.CARTRIDGE_CLOCK_DEC,B[na]=o.CARTRIDGE_CLOCK_INC};this.applyPreferences=function(){z={},p?(z[Javatari.preferences.KP0LEFT]=o.JOY1_LEFT,z[Javatari.preferences.KP0UP]=o.JOY1_UP,z[Javatari.preferences.KP0RIGHT]=o.JOY1_RIGHT,z[Javatari.preferences.KP0DOWN]=o.JOY1_DOWN,z[Javatari.preferences.KP0BUT]=o.JOY1_BUTTON,z[Javatari.preferences.KP0BUT2]=o.JOY1_BUTTON,z[Javatari.preferences.KP1LEFT]=o.JOY0_LEFT,z[Javatari.preferences.KP1UP]=o.JOY0_UP,z[Javatari.preferences.KP1RIGHT]=o.JOY0_RIGHT,z[Javatari.preferences.KP1DOWN]=o.JOY0_DOWN,z[Javatari.preferences.KP1BUT]=o.JOY0_BUTTON,z[Javatari.preferences.KP1BUT2]=o.JOY0_BUTTON):(z[Javatari.preferences.KP0LEFT]=o.JOY0_LEFT,z[Javatari.preferences.KP0UP]=o.JOY0_UP,z[Javatari.preferences.KP0RIGHT]=o.JOY0_RIGHT,z[Javatari.preferences.KP0DOWN]=o.JOY0_DOWN,z[Javatari.preferences.KP0BUT]=o.JOY0_BUTTON,z[Javatari.preferences.KP0BUT2]=o.JOY0_BUTTON,z[Javatari.preferences.KP1LEFT]=o.JOY1_LEFT,z[Javatari.preferences.KP1UP]=o.JOY1_UP,z[Javatari.preferences.KP1RIGHT]=o.JOY1_RIGHT,z[Javatari.preferences.KP1DOWN]=o.JOY1_DOWN,z[Javatari.preferences.KP1BUT]=o.JOY1_BUTTON,z[Javatari.preferences.KP1BUT2]=o.JOY1_BUTTON)};var k,l,m,n,o=jt.ConsoleControls,p=!1,q=!1,r=0,s=3,t=!1,u=!1,v=0,w=3,x=!1,y=!1,z={},A={},B={},C={},D={},E=Javatari.PADDLES_MODE,F=jt.DOMConsoleControls.KEY_TOGGLE_JOYSTICK,G=jt.DOMConsoleControls.KEY_TOGGLE_P1_MODE,H=jt.DOMConsoleControls.KEY_TOGGLE_PADDLE,I=jt.DOMConsoleControls.KEY_CARTRIDGE_FORMAT,J=jt.DOMConsoleControls.KEY_SELECT,K=jt.DOMConsoleControls.KEY_SELECT2,L=jt.DOMConsoleControls.KEY_RESET,M=jt.DOMConsoleControls.KEY_FAST_SPEED,N=jt.DOMConsoleControls.KEY_PAUSE,O=jt.Keys.VK_F1.c,P=jt.Keys.VK_F2.c,Q=jt.Keys.VK_F4.c,R=jt.Keys.VK_F9.c,S=jt.Keys.VK_F.c,T=jt.Keys.VK_Q.c,U=jt.Keys.VK_D.c,V=jt.Keys.VK_C.c,W=jt.Keys.VK_V.c,X=jt.Keys.VK_QUOTE.c,Y=jt.Keys.VK_TILDE.c,Z=jt.Keys.VK_1.c,$=jt.Keys.VK_2.c,_=jt.Keys.VK_3.c,aa=jt.Keys.VK_4.c,ba=jt.Keys.VK_5.c,ca=jt.Keys.VK_6.c,da=jt.Keys.VK_7.c,ea=jt.Keys.VK_8.c,fa=jt.Keys.VK_9.c,ga=jt.Keys.VK_0.c,ha=jt.Keys.VK_MINUS.c,ia=jt.Keys.VK_MINUS2.c,ja=jt.Keys.VK_EQUALS.c,ka=jt.Keys.VK_EQUALS2.c,la=jt.Keys.VK_F8.c,ma=jt.Keys.VK_END.c,na=jt.Keys.VK_HOME.c,oa=jt.Keys.VK_F7.c,pa=1,qa=jt.DOMConsoleControls.KEY_ALT_MASK,ra=4;a()},jt.DOMConsoleControls.KEY_SELECT=jt.Keys.VK_F11.c,jt.DOMConsoleControls.KEY_SELECT2=jt.Keys.VK_F10.c,jt.DOMConsoleControls.KEY_RESET=jt.Keys.VK_F12.c,jt.DOMConsoleControls.KEY_FAST_SPEED=jt.Keys.VK_TAB.c,jt.DOMConsoleControls.KEY_PAUSE=jt.Keys.VK_P.c,jt.DOMConsoleControls.KEY_TOGGLE_JOYSTICK=jt.Keys.VK_J.c,jt.DOMConsoleControls.KEY_TOGGLE_P1_MODE=jt.Keys.VK_K.c,jt.DOMConsoleControls.KEY_TOGGLE_PADDLE=jt.Keys.VK_L.c,jt.DOMConsoleControls.KEY_CARTRIDGE_FORMAT=jt.Keys.VK_B.c,jt.DOMConsoleControls.KEY_ALT_MASK=2,jt.DOMMonitorControls=function(a){function b(){e()}this.addInputElements=function(a){for(var b=0;b<a.length;b++)a[b].addEventListener(\"keydown\",this.keyDown)},this.keyDown=function(a){var b=0|(a.ctrlKey?B:0)|(a.altKey?C:0)|(a.shiftKey?D:0);if(c(a.keyCode,b))return a.returnValue=!1,a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),!1};var c=function(b,c){var e=d(b,c);return!!e&&(a.controlActivated(e),!0)},d=function(a,b){switch(b){case 0:return f[a];case C:return h[a];case D:return g[a];case B:return k[a];case B|C:return l[a];case D|B:return i[a];case D|C:return j[a]}return null},e=function(){var a=jt.Monitor.Controls;f[A]=a.EXIT,f[r]=a.LOAD_CARTRIDGE_FILE,f[s]=a.LOAD_CARTRIDGE_URL,h[r]=a.LOAD_CARTRIDGE_FILE,h[s]=a.LOAD_CARTRIDGE_URL,k[r]=a.LOAD_CARTRIDGE_FILE_NO_AUTO_POWER,k[s]=a.LOAD_CARTRIDGE_URL_NO_AUTO_POWER,h[v]=a.CRT_FILTER,h[x]=a.DEBUG,h[y]=a.STATS,h[w]=a.CRT_MODES,h[z]=a.FULLSCREEN,k[v]=a.CRT_FILTER,k[x]=a.DEBUG,k[y]=a.STATS,k[w]=a.CRT_MODES,k[z]=a.FULLSCREEN,g[n]=a.SIZE_MINUS,g[p]=a.SIZE_PLUS,g[m]=a.SIZE_MINUS,g[o]=a.SIZE_PLUS,j[n]=a.SCALE_Y_MINUS,j[p]=a.SCALE_Y_PLUS,j[m]=a.SCALE_X_MINUS,j[o]=a.SCALE_X_PLUS,l[n]=a.ORIGIN_Y_MINUS,l[p]=a.ORIGIN_Y_PLUS,l[m]=a.ORIGIN_X_MINUS,l[o]=a.ORIGIN_X_PLUS,i[n]=a.HEIGHT_MINUS,i[p]=a.HEIGHT_PLUS,i[m]=a.WIDTH_MINUS,i[o]=a.WIDTH_PLUS,g[u]=a.LOAD_CARTRIDGE_PASTE,k[t]=a.LOAD_CARTRIDGE_PASTE,f[q]=a.SIZE_DEFAULT},f={},g={},h={},i={},j={},k={},l={},m=jt.Keys.VK_LEFT.c,n=jt.Keys.VK_UP.c,o=jt.Keys.VK_RIGHT.c,p=jt.Keys.VK_DOWN.c,q=jt.Keys.VK_BACK_SPACE.c,r=jt.Keys.VK_F5.c,s=jt.Keys.VK_F6.c,t=jt.Keys.VK_V.c,u=jt.Keys.VK_INSERT.c,v=jt.Keys.VK_T.c,w=jt.Keys.VK_R.c,x=jt.Keys.VK_D.c,y=jt.Keys.VK_G.c,z=jt.Keys.VK_ENTER.c,A=jt.Keys.VK_ESCAPE.c,B=1,C=2,D=4;b()},jt.Monitor=function(){function a(a){v(),e(jt.VideoStandard.NTSC),j(),C=new jt.DOMMonitorControls(a)}this.connectDisplay=function(a){z=a;var b=z.displayDefaultOpeningScaleX(L,M);n(b,b/ga),p()},this.connectPeripherals=function(a){A=a},this.connect=function(a,b){b.addInsertionListener(this),B=a,B.connectMonitor(this),h()},this.addControlInputElements=function(a){C.addInputElements(a)},this.nextLine=function(a,e){if(!d(null!==a))return!1;var g=!1;return V<K?V>=P&&V<P+M&&(G?jt.Util.arrayCopy(a,O,G,(V-P)*J,L):jt.Util.uInt32ArrayCopyToUInt8Array(a,O,H,(V-P)*J,L)):g=c(),V++,T||Y++,e&&(T||f(),g=b()||g),g},this.synchOutput=function(){q()},this.currentLine=function(){return V},this.showOSD=function(a,b){z.showOSD(a,b)},this.videoStandardDetectionStart=function(){T=null,U=0,Y=0},this.getVideoStandardDetected=function(){return T},this.cartridgeInserted=function(a){ka>=0||0!==ma&&1!==ma||t(a?a.rom.info.c||0:0)};var b=function(){return!(V<K-ia)&&(_&&z.showOSD(B.standard.name+\"  \"+V+\" lines\",!0),V=0,W++,!0)},c=function(){return V>K+ia+ja&&b()},d=function(a){return a?(X=!0,h()):(X=!1,i()),a},e=function(a){I=a,J=a.width,K=a.height,l(L,N),k(O,Q)},f=function(){var a=Y;Y=0,(a>=250&&a<=281||a>=300&&a<=325)&&++U>=5&&g(a)},g=function(a){T=a<290?jt.VideoStandard.NTSC:jt.VideoStandard.PAL;var b=Z,c=a-T.height;c=c>2?(c>6?6:c)-2:0,c!=b&&(Z=c,e(T))},h=function(){I!=B.standard&&e(B.standard)},i=function(){V=0,z.adjustToVideoSignalOff()},j=function(){if(l(da,ea),k(ba,ca),null!=z){var a=z.displayDefaultOpeningScaleX(L,M);n(a,a/ga)}else n(fa,ha);p()},k=function(a,b){O=a,O<0?O=0:O>J-L&&(O=J-L),Q=b,Q<0?Q=0:Q/100*K>K-M&&(Q=(K-M)/K*100);var c=Z/2;P=Q/100*K+c|0,P+M>K&&(P=K-M)},l=function(a,b){L=a,L<10?L=10:L>J&&(L=J),N=b,N<10?N=10:N>100&&(N=100),M=N/100*(K+Z)|0,M>K&&(M=K),k(O,Q),m()},m=function(){z&&(z.displaySize(L*R|0,M*S|0),z.displayMinimumSize(L*fa/ha|0,M))},n=function(a,b){R=a,R<1&&(R=1),S=b,S<1&&(S=1),m()},o=function(a){var b=0|a;b<1&&(b=1),n(b*ga,b);\n},p=function(){z&&z.displayCenter()},q=function(){X&&(E.putImageData(F,0,0),z.refresh(D,L,M),$>0&&w())},r=function(){z.displayToggleFullscreen()},s=function(){return z.showOSD(\"Not yet supported!\",!0)},t=function(a){var b=a>4||a<0?0:a;ma!==b&&(ma=b,z.showOSD(\"CRT mode: \"+la[ma],!0))},u=function(){z.exit()},v=function(){D=document.createElement(\"canvas\"),D.width=jt.VideoStandard.PAL.width,D.height=jt.VideoStandard.PAL.height,E=D.getContext(\"2d\"),F=E.getImageData(0,0,D.width,D.height),F.data.buffer?G=new Uint32Array(F.data.buffer):H=F.data},w=function(){G&&jt.Util.arrayFill(G,4278255360)},x=function(){return!!Javatari.CARTRIDGE_CHANGE_DISABLED&&(z.showOSD(\"Cartridge change is disabled\",!0),!0)},y=jt.Monitor.Controls;this.controlActivated=function(a){switch(a){case y.LOAD_CARTRIDGE_FILE:x()||A.openFileChooserDialog(!0);break;case y.LOAD_CARTRIDGE_FILE_NO_AUTO_POWER:x()||A.openFileChooserDialog(!1);break;case y.LOAD_CARTRIDGE_URL:x()||A.openURLChooserDialog(!0);break;case y.LOAD_CARTRIDGE_URL_NO_AUTO_POWER:x()||A.openURLChooserDialog(!1);break;case y.CRT_MODES:s();break;case y.CRT_FILTER:z.toggleCRTFilter();break;case y.STATS:_=!_,z.showOSD(null,!0);break;case y.DEBUG:$++,$>4&&($=0);break;case y.ORIGIN_X_MINUS:k(O+1,Q);break;case y.ORIGIN_X_PLUS:k(O-1,Q);break;case y.ORIGIN_Y_MINUS:k(O,Q+.5);break;case y.ORIGIN_Y_PLUS:k(O,Q-.5);break;case y.SIZE_DEFAULT:j();break;case y.FULLSCREEN:r();break;case y.EXIT:u()}if(!aa)switch(a){case y.WIDTH_MINUS:l(L-1,N);break;case y.WIDTH_PLUS:l(L+1,N);break;case y.HEIGHT_MINUS:l(L,N-.5);break;case y.HEIGHT_PLUS:l(L,N+.5);break;case y.SCALE_X_MINUS:n(R-.5,S);break;case y.SCALE_X_PLUS:n(R+.5,S);break;case y.SCALE_Y_MINUS:n(R,S-.5);break;case y.SCALE_Y_PLUS:n(R,S+.5);break;case y.SIZE_MINUS:o(S-1);break;case y.SIZE_PLUS:o(S+1)}};var z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V=0,W=0,X=!1,Y=0,Z=0,$=0,_=!1,aa=Javatari.SCREEN_RESIZE_DISABLED,ba=68,ca=12.4,da=160,ea=81.5,fa=4,ga=2,ha=2,ia=16,ja=5,ka=0,la=[\"OFF\",\"Phosphor\",\"Phosphor Scanlines\",\"RGB\",\"RGB Phosphor\"],ma=ka<0?0:ka;a(this)},jt.Monitor.Controls={WIDTH_PLUS:1,HEIGHT_PLUS:2,WIDTH_MINUS:3,HEIGHT_MINUS:4,ORIGIN_X_PLUS:5,ORIGIN_Y_PLUS:6,ORIGIN_X_MINUS:7,ORIGIN_Y_MINUS:8,SCALE_X_PLUS:9,SCALE_Y_PLUS:10,SCALE_X_MINUS:11,SCALE_Y_MINUS:12,SIZE_PLUS:13,SIZE_MINUS:14,SIZE_DEFAULT:15,FULLSCREEN:16,LOAD_CARTRIDGE_FILE:21,LOAD_CARTRIDGE_FILE_NO_AUTO_POWER:22,LOAD_CARTRIDGE_URL:23,LOAD_CARTRIDGE_URL_NO_AUTO_POWER:24,LOAD_CARTRIDGE_PASTE:25,CRT_FILTER:31,CRT_MODES:32,DEBUG:41,STATS:42,EXIT:51},jt.CanvasDisplay=function(a){function b(a){J(),C(),I(),D(),H(),i=h.getContext(\"2d\"),c=new jt.Monitor,c.connectDisplay(a),c.addControlInputElements(a.keyControlsInputElements())}this.connectPeripherals=function(b,d){b.registerForDnD(a),b.registerForFileInputElement(a),d.registerForDownloadElement(a),c.connectPeripherals(b)},this.connect=function(a,b,e){c.connect(a,e),d=b},this.powerOn=function(){a.style.visibility=\"visible\",this.focus(),B()},this.powerOff=function(){a.style.visibility=\"hidden\",a.style.display=\"none\"},this.refresh=function(a,b,c){L=!0,i.drawImage(a,0,0,b,c,0,0,h.width,h.height)},this.adjustToVideoSignalOff=function(){L=!1,B()},this.keyControlsInputElements=function(){return[a]},this.displayDefaultOpeningScaleX=function(a,b){if(N){var c=g.clientWidth,d=g.clientHeight,e=c/a;e-=e%Q;for(var f=e/Q*b;f>d+35;)e-=Q,f=e/Q*b;return 0|e}return R},this.displaySize=function(a,b){z(a,b),A(),L||B()},this.displayMinimumSize=function(a,b){},this.displayCenter=function(){this.focus()},this.getMonitor=function(){return c},this.showOSD=function(a,b){return m&&clearTimeout(m),a?(!b&&K||(l.innerHTML=a),l.style.transition=\"none\",l.style.top=\"15px\",l.style.opacity=1,K=!0,void(m=setTimeout(function(){l.style.transition=\"all 0.15s linear\",l.style.top=\"-29px\",l.style.opacity=0,K=!1},P))):(l.style.transition=\"all 0.15s linear\",l.style.top=\"-29px\",l.style.opacity=0,void(K=!1))},this.toggleCRTFilter=function(){M=!M,this.showOSD(M?\"CRT Filter: ON\":\"CRT Filter: OFF\",!0),A()},this.displayToggleFullscreen=function(){Javatari.SCREEN_FULLSCREEN_DISABLED||(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement?document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen():g.requestFullscreen?g.requestFullscreen():g.webkitRequestFullscreen?g.webkitRequestFullscreen():g.webkitRequestFullScreen?g.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):g.mozRequestFullScreen?g.mozRequestFullScreen():g.msRequestFullscreen?g.msRequestFullscreen():this.showOSD(\"Fullscreen is not supported by your browser!\"))},this.exit=function(){d.controlStateChanged(jt.ConsoleControls.POWER_OFF,!0),c.controlActivated(jt.Monitor.Controls.SIZE_DEFAULT)},this.focus=function(){h.focus()};var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=function(a){e||(e=new jt.Settings),e.show(a)},y=function(){var a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;N=!!a,c.controlActivated(jt.Monitor.Controls.SIZE_DEFAULT),N&&setTimeout(function(){c.controlActivated(jt.Monitor.Controls.SIZE_DEFAULT)},120)},z=function(b,c){h.width=b,h.height=c,h.style.width=\"\"+b+\"px\",h.style.height=\"\"+c+\"px\",N||(f.style.width=\"\"+b+\"px\",f.style.height=\"\"+c+\"px\",b+=2*v,c+=u+w,a.style.width=\"\"+b+\"px\",a.style.height=\"\"+c+\"px\")},A=function(){void 0!==i.imageSmoothingEnabled?i.imageSmoothingEnabled=M:(i.webkitImageSmoothingEnabled=M,i.mozImageSmoothingEnabled=M,i.msImageSmoothingEnabled=M)},B=function(){if(i.fillStyle=\"black\",i.fillRect(0,0,h.width,h.height),n.isLoaded){var a=n.width,b=n.height;if(b>.7*h.height){var c=.7*h.height/b;b=b*c|0,a=a*c|0}i.drawImage(n,(h.width-a)/2|0,(h.height-b)/2|0,a,b)}},C=function(){a.style.position=\"relative\",a.style.overflow=\"hidden\",a.style.outline=\"none\",a.tabIndex=\"-1\",f=document.createElement(\"div\"),f.style.position=\"relative\",f.style.overflow=\"hidden\",f.style.background=\"black\",f.style.border=\"0 solid black\",f.style.borderWidth=\"\"+u+\"px \"+v+\"px \"+w+\"px\",2===Javatari.SCREEN_CONTROL_BAR&&(f.style.borderImage=\"url(\"+O+\"screenborder.png) \"+u+\" \"+v+\" \"+w+\" repeat stretch\"),g=document.createElement(\"div\"),g.style.position=\"relative\",g.style.width=\"100%\",g.style.height=\"100%\",g.style.overflow=\"hidden\",g.style.background=\"black\",document.addEventListener(\"fullscreenchange\",y),document.addEventListener(\"webkitfullscreenchange\",y),document.addEventListener(\"mozfullscreenchange\",y),document.addEventListener(\"msfullscreenchange\",y),f.appendChild(g),h=document.createElement(\"canvas\"),h.style.position=\"absolute\",h.style.display=\"block\",h.style.left=h.style.right=0,h.style.top=h.style.bottom=0,h.style.margin=\"auto\",h.tabIndex=\"-1\",h.style.outline=\"none\",g.appendChild(h),z(jt.CanvasDisplay.DEFAULT_STARTING_WIDTH,jt.CanvasDisplay.DEFAULT_STARTING_HEIGHT),a.appendChild(f)},D=function(){j=document.createElement(\"div\"),j.style.position=\"absolute\",j.style.left=\"0\",j.style.right=\"0\",j.style.height=\"29px\",2===Javatari.SCREEN_CONTROL_BAR?j.style.bottom=\"0\":1===Javatari.SCREEN_CONTROL_BAR?(j.style.bottom=\"-30px\",j.style.background=\"rgba(47, 47, 43, .8)\",j.style.transition=\"bottom 0.3s ease-in-out\",a.addEventListener(\"mouseover\",function(){k&&clearTimeout(k),j.style.bottom=\"0px\"}),a.addEventListener(\"mouseleave\",function(){k=setTimeout(function(){j.style.bottom=\"-30px\"},1e3)})):(j.style.bottom=\"0\",j.style.background=\"rgb(44, 44, 40)\",j.style.border=\"1px solid black\"),o=E(6,-26,24,23,-436,-208),G(o,jt.ConsoleControls.POWER);var b=23;Javatari.SCREEN_FULLSCREEN_DISABLED||(s=E(-53,-26,24,22,-387,-209),F(s,jt.Monitor.Controls.FULLSCREEN),b=0),Javatari.SCREEN_RESIZE_DISABLED||(q=E(-92+b,-26,18,22,-342,-209),F(q,jt.Monitor.Controls.SIZE_MINUS),r=E(-74+b,-26,21,22,-364,-209),F(r,jt.Monitor.Controls.SIZE_PLUS)),\nt=E(-29,-26,24,22,-412,-209),t.style.cursor=\"pointer\",t.addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),x()}),p=E(\"CENTER\",-26,24,24,-388,-181),p.style.cursor=\"pointer\",p.addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),x(\"ABOUT\")}),a.appendChild(j)},E=function(a,b,c,d,e,f,g){var h=document.createElement(\"div\");return h.style.position=\"absolute\",\"CENTER\"===a?(h.style.left=h.style.right=0,h.style.margin=\"0 auto\"):a>0?h.style.left=\"\"+a+\"px\":h.style.right=\"\"+(-c-a)+\"px\",b>0?h.style.top=\"\"+b+\"px\":h.style.bottom=\"\"+(-d-b)+\"px\",h.style.width=\"\"+c+\"px\",h.style.height=\"\"+d+\"px\",h.style.outline=\"none\",g||(h.style.backgroundImage=\"url(\"+O+\"sprites.png)\",h.style.backgroundPosition=\"\"+e+\"px \"+f+\"px\",h.style.backgroundRepeat=\"no-repeat\"),j.appendChild(h),h},F=function(a,b){a.style.cursor=\"pointer\",a.addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),c.controlActivated(b)})},G=function(a,b){a.style.cursor=\"pointer\",a.addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),d.controlStateChanged(b,!0)})},H=function(){n=new Image,n.isLoaded=!1,n.onload=function(){n.isLoaded=!0,B()},n.src=O+\"logo.png\"},I=function(){l=document.createElement(\"div\"),l.style.position=\"absolute\",l.style.overflow=\"hidden\",l.style.top=\"-29px\",l.style.right=\"18px\",l.style.height=\"29px\",l.style.padding=\"0 12px\",l.style.margin=\"0\",l.style.font=\"bold 15px/29px sans-serif\",l.style.color=\"rgb(0, 255, 0)\",l.style.background=\"rgba(0, 0, 0, 0.4)\",l.style.opacity=0,l.innerHTML=\"\",g.appendChild(l)},J=function(){2===Javatari.SCREEN_CONTROL_BAR?(u=5,v=5,w=31):1===Javatari.SCREEN_CONTROL_BAR?(u=1,v=1,w=1):(u=1,v=1,w=30)},K=!1,L=!1,M=!1,N=!1,O=Javatari.IMAGES_PATH,P=2500,Q=2,R=2*(Javatari.SCREEN_OPENING_SIZE||2);b(this)},jt.CanvasDisplay.DEFAULT_STARTING_WIDTH=640,jt.CanvasDisplay.DEFAULT_STARTING_HEIGHT=426,jt.ConsolePanel=function(a){function b(){f(),g(),l()}this.connectPeripherals=function(b,c){n=b,n.getMonitor().addControlInputElements(this.keyControlsInputElements()),c.registerForDnD(a)},this.connect=function(a,b){o=a,o.addForwardedInput(this),o.addRedefinitionListener(this),p=b,p.addInsertionListener(this)},this.powerOn=function(){a.style.visibility=\"visible\",c(),d()},this.powerOff=function(){a.style.visibility=\"hidden\",a.style.display=\"none\"},this.keyControlsInputElements=function(){return[a]};var c=function(){k(r,!C[m.POWER]),k(s,C[m.BLACK_WHITE]),k(t,C[m.SELECT]),k(u,C[m.RESET]),k(v,C[m.DIFFICULTY0]),k(w,C[m.DIFFICULTY1]),d()},d=function(){if(k(x,q),k(B,q),B.innerHTML=q&&q.rom.info.l||F,q&&q.rom.info.lc){var a=q.rom.info.lc.trim().split(/\\s+/);B.style.color=a[0]||G,B.style.background=a[1]||H,B.style.borderColor=a[2]||I}else B.style.color=G,B.style.background=H,B.style.borderColor=I},e=function(){o.controlsStateReport(C),c()},f=function(){a.style.position=\"relative\",a.style.width=\"\"+jt.ConsolePanel.DEFAULT_WIDTH+\"px\",a.style.height=\"\"+jt.ConsolePanel.DEFAULT_HEIGHT+\"px\",a.style.background=\"black url(\"+E+\"sprites.png) no-repeat\",a.style.outline=\"none\",a.tabIndex=\"-1\"},g=function(){r=h(31,-85,25,47,2,-141),i(r,m.POWER,!1),s=h(95,-85,25,47,-22,-141),i(s,m.BLACK_WHITE,!1),t=h(351,-85,25,47,-46,-141),i(t,m.SELECT,!0),u=h(414,-85,25,47,-70,-141),i(u,m.RESET,!0),v=h(162,-133,33,22,-94,-157),i(v,m.DIFFICULTY0,!1),w=h(275,-133,33,22,-94,-137),i(w,m.DIFFICULTY1,!1),x=h(141,-94,189,82,-127,-139),y=h(143,-93,184,55,0,0,!0),j(y,jt.Monitor.Controls.LOAD_CARTRIDGE_FILE),Javatari.CARTRIDGE_CHANGE_DISABLED||(z=h(171,-35,31,30,2,-188),j(z,jt.Monitor.Controls.LOAD_CARTRIDGE_FILE),k(z,!0),A=h(267,-35,31,30,-94,-188),j(A,jt.Monitor.Controls.LOAD_CARTRIDGE_URL),k(A,!0))},h=function(b,c,d,e,f,g,h){var i=document.createElement(\"div\");return i.style.opacity=0,i.style.position=\"absolute\",b>0?i.style.left=\"\"+b+\"px\":i.style.right=\"\"+(-d-b)+\"px\",c>0?i.style.top=\"\"+c+\"px\":i.style.bottom=\"\"+(-e-c)+\"px\",i.style.width=\"\"+d+\"px\",i.style.height=\"\"+e+\"px\",i.style.outline=\"none\",h||(i.style.backgroundImage=\"url(\"+E+\"sprites.png)\",i.style.backgroundPosition=\"\"+f+\"px \"+g+\"px\",i.style.backgroundRepeat=\"no-repeat\"),a.appendChild(i),i},i=function(a,b,c){if(b){a.style.cursor=\"pointer\";var d;a.addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),d=!0,o.controlStateChanged(b,!0)}),c&&(a.addEventListener(\"mouseup\",function(a){a.preventDefault&&a.preventDefault(),d=!1,o.controlStateChanged(b,!1)}),a.addEventListener(\"mouseleave\",function(a){a.preventDefault&&a.preventDefault(),d&&(d=!1,o.controlStateChanged(b,!1))}))}},j=function(a,b){a.style.cursor=\"pointer\",a.addEventListener(\"click\",function(a){a.preventDefault&&a.preventDefault(),n.getMonitor().controlActivated(b)})},k=function(a,b){a.style.opacity=b?1:0},l=function(){var b=(Javatari.CARTRIDGE_LABEL_COLORS||\"\").trim().split(/\\s+/);b[0]&&(G=b[0]),b[1]&&(H=b[1]),b[2]&&(I=b[2]),B=document.createElement(\"div\"),B.style.position=\"absolute\",B.style.overflow=\"hidden\",B.style.textOverflow=\"ellipsis\",B.style.whiteSpace=\"nowrap\",B.style.top=\"52px\",B.style.left=\"158px\",B.style.width=\"148px\",B.style.height=\"25px\",B.style.padding=\"0 2px\",B.style.margin=\"0\",B.style.font=\"bold 14px/25px sans-serif\",B.style.textAlign=\"center\",B.style.color=G,B.style.background=H,B.style.border=\"1px solid \"+I,B.style.opacity=\"0\",B.innerHTML=\"\",j(B,jt.Monitor.Controls.LOAD_CARTRIDGE_FILE),a.appendChild(B)},m=jt.ConsoleControls;this.controlStateChanged=function(a,b){D[a]&&e()},this.controlValueChanged=function(a,b){},this.controlsStateReport=function(a){},this.controlsStatesRedefined=function(){e()},this.cartridgeInserted=function(a){q=a,d()};var n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C={},D={};D[m.POWER]=1,D[m.BLACK_WHITE]=1,D[m.SELECT]=1,D[m.RESET]=1,D[m.DIFFICULTY0]=1,D[m.DIFFICULTY1]=1;var E=Javatari.IMAGES_PATH,F=\"JAVATARI.js\",G=\"#fa2525\",H=\"#101010\",I=\"transparent\";b()},jt.ConsolePanel.DEFAULT_WIDTH=465,jt.ConsolePanel.DEFAULT_HEIGHT=137,jt.WebAudioSpeaker=function(){this.connect=function(b){a=b,a.connectMonitor(this)},this.powerOn=function(){e(),c&&(d=c.createScriptProcessor(Javatari.AUDIO_BUFFER_SIZE,0,1),d.onaudioprocess=f,this.play())},this.powerOff=function(){this.mute(),c=void 0},this.play=function(){d&&d.connect(c.destination)},this.mute=function(){d&&d.disconnect()};var a,b,c,d,e=function(){try{var a=window.AudioContext||window.webkitAudioContext||window.WebkitAudioContext;if(!a)throw new Error(\"WebAudio API not supported by the browser\");c=new a,b=jt.TiaAudioSignal.SAMPLE_RATE/c.sampleRate,jt.Util.log(\"Speaker AudioContext created. Sample rate: \"+c.sampleRate)}catch(a){jt.Util.log(\"Could not create AudioContext. Audio disabled.\\n\"+a.message)}},f=function(c){if(a){var d=c.outputBuffer.getChannelData(0),e=a.retrieveSamples((d.length*b|0)+1);jt.Util.arrayCopyCircularSourceWithStep(e.buffer,e.start,e.bufferSize,b,d,0,d.length)}}},jt.LocalStorageSaveStateMedia=function(){this.connect=function(a){a.connectMedia(this)},this.registerForDownloadElement=function(a){b=a},this.saveState=function(a,b){var d=e(b);return d&&c(\"save\"+a,d)},this.loadState=function(a){var b=d(\"save\"+a);return f(b)},this.saveStateFile=function(a,b){var c=e(b);return c&&g(a||\"JavatariSave\",c)},this.loadStateFile=function(a){return f(a)},this.saveResourceToFile=function(a,b){try{var d=b&&JSON.stringify(b);return c(a,d)}catch(a){}},this.loadResourceFromFile=function(a){try{var b=d(a);return b&&JSON.parse(b)}catch(a){}};var a,b,c=function(a,b){try{return localStorage[\"javatari\"+a]=b,!0}catch(a){return!1}},d=function(a){try{return localStorage[\"javatari\"+a]}catch(a){}},e=function(a){try{return i+JSON.stringify(a)}catch(a){}},f=function(a){try{var b;if(b=a instanceof Array?jt.Util.uInt8ArrayToByteString(a.slice(0,i.length)):a.substr(0,i.length),b!==i)return;var c=a.slice(i.length);return c instanceof Array&&(c=jt.Util.uInt8ArrayToByteString(c)),c&&JSON.parse(c)}catch(a){}},g=function(b,c){a||h(),a.href&&(window.URL||window.webkitURL).revokeObjectURL(a.href),\nb&&(b+=j);var d=new Blob([c],{type:\"data:application/octet-stream\"});return a.download=b.trim(),a.href=(window.URL||window.webkitURL).createObjectURL(d),a.click(),!0},h=function(){a=document.createElement(\"a\"),a.style.display=\"none\",a.href=\"#\",b.appendChild(a)},i=\"javatarijsstate!\",j=\".jst\"},jt.ROMLoader=function(){var a=this;this.connect=function(a,d){b=a,c=d},this.registerForDnD=function(a){a.addEventListener(\"dragover\",g,!1),a.addEventListener(\"drop\",h,!1)},this.registerForFileInputElement=function(a){e=a},this.openFileChooserDialog=function(a){d||k(),l=a!==!1,d.click()},this.openURLChooserDialog=function(a){l=a!==!1;var b;try{b=localStorage&&localStorage[o]}catch(a){}if(b=prompt(\"Load ROM from URL:\",b||\"\"),b&&(b=b.toString().trim())){try{localStorage[o]=b}catch(a){}this.loadFromURL(b)}},this.loadFromFile=function(a){jt.Util.log(\"Reading ROM file: \"+a.name);var b=new FileReader;b.onload=function(b){var c=new Uint8Array(b.target.result);i(a.name,c)},b.onerror=function(a){j(\"File reading error: \"+a.target.error.name)},b.readAsArrayBuffer(a)},this.loadFromURL=function(a){jt.Util.log(\"Reading ROM from URL: \"+a);var b=new XMLHttpRequest;b.withCredentials=!0,b.open(\"GET\",a,!0),b.responseType=\"arraybuffer\",b.timeout=2e3,b.onload=function(){if(200===b.status){var c=new Uint8Array(b.response);i(a,c)}else j(\"URL reading error: \"+(b.statusText||b.status))},b.onerror=function(){j(\"URL reading error: \"+(b.statusText||b.status))},b.ontimeout=function(){j(\"URL reading error: \"+(b.statusText||b.status))},b.send()};var b,c,d,e,f=function(b){if(b.returnValue=!1,b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation(),b.target.focus(),this.files&&this.files.length){var c=this.files[0];try{d.value=\"\"}catch(a){}return a.loadFromFile(c),!1}},g=function(a){a.returnValue=!1,a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),Javatari.CARTRIDGE_CHANGE_DISABLED?a.dataTransfer.dropEffect=\"none\":a.dataTransfer.dropEffect=\"link\"},h=function(b){if(b.returnValue=!1,b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation(),b.target.focus(),l=b.altKey!==!0,!Javatari.CARTRIDGE_CHANGE_DISABLED&&b.dataTransfer){var c=b.dataTransfer&&b.dataTransfer.files;if(c&&c.length>0)return void a.loadFromFile(c[0]);var d=b.dataTransfer.getData(\"URL\");d&&d.length>0&&a.loadFromURL(d)}},i=function(a,d){var e,f,g;try{if(g=new Array(d.length),jt.Util.arrayCopy(d,0,g,0,g.length),c.loadStateFile(g))return void jt.Util.log(\"SaveState file loaded\");f=new jt.ROM(a,g),e=jt.CartridgeDatabase.createCartridgeFromRom(f),b&&b.insert(e,l)}catch(a){if(!a.javatari)throw jt.Util.log(a.stack),a;try{for(var h=new JSZip(d),i=h.file(m),k=0;k<i.length;k++){var n=i[k];jt.Util.log(\"Trying zip file content: \"+n.name);try{var o=n.asUint8Array();return g=new Array(o.length),jt.Util.arrayCopy(o,0,g,0,g.length),f=new jt.ROM(n.name,g),e=jt.CartridgeDatabase.createCartridgeFromRom(f),void(b&&b.insert(e,l))}catch(a){}}j(\"No valid ROM files inside zip file\")}catch(b){j(a.message)}}},j=function(a){jt.Util.log(\"\"+a),jt.Util.message(\"Could not load ROM:\\n\\n\"+a)},k=function(a){d=document.createElement(\"input\"),d.id=\"ROMLoaderFileInput\",d.type=\"file\",d.accept=n,d.style.display=\"none\",d.addEventListener(\"change\",f),e.appendChild(d)},l=!0,m=/^.*\\.(bin|BIN|rom|ROM|a26|A26|jst|JST)$/,n=\".bin,.rom,.a26,.zip,.jst\",o=\"javatarilasturl\";Javatari.loadROMFromURL=this.loadFromURL},jt.Settings=function(){var a=this;this.show=function(c){return this.panel?(q=!1,o=null,e(),c&&this.setPage(c),this[\"jt-cover\"].classList.add(\"show\"),this[\"jt-modal\"].classList.add(\"show\"),void this.panel.focus()):(b(this),void setTimeout(function(){a.show(c)},0))},this.hide=function(){q&&m(),this[\"jt-modal\"].classList.remove(\"show\"),this[\"jt-cover\"].classList.remove(\"show\"),Javatari.room.screen.focus()},this.setPage=function(b){var c={HELP:\"0\",CONTROLS:\"-560px\",ABOUT:\"-1120px\"}[b],d={HELP:\"0\",CONTROLS:\"33.3%\",ABOUT:\"66.6%\"}[b];c&&(a[\"jt-content\"].style.left=c),d&&(a[\"jt-menu-selection\"].style.left=d),a[\"jt-menu-help\"].classList[\"HELP\"===b?\"add\":\"remove\"](\"selected\"),a[\"jt-menu-controls\"].classList[\"CONTROLS\"===b?\"add\":\"remove\"](\"selected\"),a[\"jt-menu-about\"].classList[\"ABOUT\"===b?\"add\":\"remove\"](\"selected\")};var b=function(){var b=document.createElement(\"style\");b.type=\"text/css\",b.innerHTML=SettingsGUI.css(),document.head.appendChild(b),a.panel=document.createElement(\"div\"),a.panel.innerHTML=SettingsGUI.html(),a.panel.style.outline=\"none\",a.panel.tabIndex=-1,document.body.appendChild(a.panel),delete SettingsGUI.html,delete SettingsGUI.css,c(),d()},c=function(){function b(a,c){c(a);for(var d=a.childNodes,e=0;e<d.length;e++)b(d[e],c)}b(a.panel,function(b){b.id&&(a[b.id]=b)})},d=function(){a.panel.addEventListener(\"mousedown\",function(b){b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation(),a.hide()}),a[\"jt-modal\"].addEventListener(\"mousedown\",function(a){a.stopPropagation&&a.stopPropagation(),h()}),a[\"jt-back\"].addEventListener(\"mousedown\",function(b){b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation(),a.hide()}),a.panel.addEventListener(\"keydown\",function(a){a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),f(a)}),a[\"jt-menu-help\"].addEventListener(\"mousedown\",function(b){b.preventDefault&&b.preventDefault(),a.setPage(\"HELP\")}),a[\"jt-menu-controls\"].addEventListener(\"mousedown\",function(b){b.preventDefault&&b.preventDefault(),a.setPage(\"CONTROLS\")}),a[\"jt-menu-about\"].addEventListener(\"mousedown\",function(b){b.preventDefault&&b.preventDefault(),a.setPage(\"ABOUT\")});for(var b in n)!function(b){a[b].addEventListener(\"mousedown\",function(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),g(b)})}(b);a[\"jt-controls-defaults\"].addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),k()}),a[\"jt-controls-revert\"].addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),l()});for(var c in p)!function(b){a[p[c]].addEventListener(\"mousedown\",function(a){a.preventDefault&&a.preventDefault(),Javatari.room.controls.processKeyEvent(b,!0,jt.DOMConsoleControls.KEY_ALT_MASK),h()})}(0|c)},e=function(){a[\"jt-browserinfo\"].innerHTML=navigator.userAgent,Javatari.room.controls.isPaddleMode()?(a[\"jt-control-p1-controller\"].style.backgroundPositionY=\"-91px\",a[\"jt-control-p2-controller\"].style.backgroundPositionY=\"-91px\",a[\"jt-control-p1-up-label\"].innerHTML=a[\"jt-control-p2-up-label\"].innerHTML=\"+ Speed\",a[\"jt-control-p1-down-label\"].innerHTML=a[\"jt-control-p2-down-label\"].innerHTML=\"- Speed\"):(a[\"jt-control-p1-controller\"].style.backgroundPositionY=\"0\",a[\"jt-control-p2-controller\"].style.backgroundPositionY=\"0\",a[\"jt-control-p1-up-label\"].innerHTML=a[\"jt-control-p2-up-label\"].innerHTML=\"Up\",a[\"jt-control-p1-down-label\"].innerHTML=a[\"jt-control-p2-down-label\"].innerHTML=\"Down\");var b=Javatari.room.controls.isP1ControlsMode();a[\"jt-control-p1-label\"].innerHTML=\"Player \"+(b?\"2\":\"1\"),a[\"jt-control-p2-label\"].innerHTML=\"Player \"+(b?\"1\":\"2\");for(var c in n)if(c===o)a[c].classList.add(\"redefining\"),a[c].classList.remove(\"undefined\"),a[c].innerHTML=\"?\";else{a[c].classList.remove(\"redefining\");var d=jt.KeysByCode[Javatari.preferences[n[c]]];d?(a[c].classList.remove(\"undefined\"),a[c].innerHTML=d.n):(a[c].classList.add(\"undefined\"),a[c].innerHTML=\"-\")}},f=function(a){a.keyCode===r?j():o?i(a.keyCode):a.altKey&&p[a.keyCode]&&(Javatari.room.controls.keyDown(a),e())},g=function(a){o=a,e()},h=function(){o=null,e()},i=function(a){if(o&&jt.KeysByCode[a]){if(Javatari.preferences[n[o]]!==a){for(var b in n)Javatari.preferences[n[b]]===a&&(Javatari.preferences[n[b]]=-1);Javatari.preferences[n[o]]=a,q=!0}h()}},j=function(){o?h():a.hide()},k=function(){Javatari.preferences.loadDefaults(),q=!0,h()},l=function(){Javatari.preferences.load(),q=!1,h()},m=function(){Javatari.room.controls.applyPreferences(),Javatari.preferences.save(),\nq=!1},n={\"jt-control-p1-button1\":\"KP0BUT\",\"jt-control-p1-button2\":\"KP0BUT2\",\"jt-control-p1-up\":\"KP0UP\",\"jt-control-p1-left\":\"KP0LEFT\",\"jt-control-p1-right\":\"KP0RIGHT\",\"jt-control-p1-down\":\"KP0DOWN\",\"jt-control-p2-button1\":\"KP1BUT\",\"jt-control-p2-button2\":\"KP1BUT2\",\"jt-control-p2-up\":\"KP1UP\",\"jt-control-p2-left\":\"KP1LEFT\",\"jt-control-p2-right\":\"KP1RIGHT\",\"jt-control-p2-down\":\"KP1DOWN\"},o=null,p={};p[jt.DOMConsoleControls.KEY_TOGGLE_P1_MODE]=\"jt-controls-swap-keys\",p[jt.DOMConsoleControls.KEY_TOGGLE_JOYSTICK]=\"jt-controls-swap-gamepads\",p[jt.DOMConsoleControls.KEY_TOGGLE_PADDLE]=\"jt-controls-toggle-paddles\";var q=!1,r=27},SettingsGUI={},SettingsGUI.html=function(){return'<div id=\"jt-cover\"><div id=\"jt-modal\"><div id=\"jt-menu\"><div id=\"jt-back\"><div id=\"jt-back-arrow\">&larr;</div></div><div class=\"caption\">Settings</div><div class=\"items\"><div id=\"jt-menu-help\" class=\"item selected\">HELP</div><div id=\"jt-menu-controls\" class=\"item\">CONTROLS</div><div id=\"jt-menu-about\" class=\"item\">ABOUT</div><div id=\"jt-menu-selection\"></div></div></div><div id=\"jt-content\"><div id=\"jt-help\"><div class=\"left\"><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Ctrl</div> + <div class=\"key\">1 - 0</div></div><div class=\"desc\">Save State</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">1 - 0</div></div><div class=\"desc\">Load State</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key\">F8</div></div><div class=\"desc\">Save State File</div></div><div class=\"hotkey\"></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">P</div></div><div class=\"desc\">Pause</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">F</div></div><div class=\"desc\">Next Frame</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">V</div></div><div class=\"desc\">NTSC/PAL</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">R</div></div><div class=\"desc\">CRT Modes</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">T</div></div><div class=\"desc\">CRT Filter</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">G</div></div><div class=\"desc\">Show Info</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">D</div></div><div class=\"desc\">Debug Modes</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">C</div></div><div class=\"desc\">Collisions</div></div></div><div class=\"right\"><div class=\"hotkey\"><div class=\"command\"><div class=\"key\">Tab</div></div><div class=\"desc\">Fast Speed</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">Enter</div></div><div class=\"desc\">Full Screen</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Ctrl</div> + <div class=\"key\">F1</div></div><div class=\"desc\">Fry Console</div></div><div class=\"hotkey\"><div class=\"command\"><div class=\"key\">F7</div></div><div class=\"desc\">Remove Cartridge</div></div><div class=\"hotkey\"></div><div class=\"hotkey\"><div class=\"command right-bottom\"><div class=\"key\">Backspace</div></div><div class=\"desc\">Screen Defaults</div></div><div class=\"hotkey\"><div class=\"command right-bottom\"><div class=\"key\">Shift</div> + <div class=\"key\">Arrows</div></div><div class=\"desc\">Screen Size</div></div><div class=\"hotkey\"><div class=\"command right-bottom\"><div class=\"key\">Shift</div> <div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">Arrows</div></div><div class=\"desc\">Screen Scale</div></div><div class=\"hotkey\"><div class=\"command right-bottom\"><div class=\"key\">Shift</div> <div class=\"key key-ctrlalt\">Ctrl</div> + <div class=\"key\">Arrows</div></div><div class=\"desc\">Viewport Size</div></div><div class=\"hotkey\"><div class=\"command right-bottom\"><div class=\"key key-ctrlalt\">Ctrl</div> <div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">Arrows</div></div><div class=\"desc\">Viewport Origin</div></div><div class=\"hotkey\"></div><div class=\"hotkey\"><div class=\"desc\">Drag/Drop Files or URLs to load ROMs</div></div></div></div><div id=\"jt-controls\"><div class=\"player p1\"><div id=\"jt-control-p1-label\" class=\"title\">Player 1</div><div class=\"command fire1\">Button<br><div id=\"jt-control-p1-button1\" class=\"key\">Space</div></div><div class=\"command up\"><div id=\"jt-control-p1-up-label\">Up</div><div id=\"jt-control-p1-up\" class=\"key\">Up</div></div><div class=\"command fire2\">Button<br><div id=\"jt-control-p1-button2\" class=\"key\">Del</div></div><div class=\"command left\">Left<br><div id=\"jt-control-p1-left\" class=\"key\">Left</div></div><div class=\"command controller\"><div id=\"jt-control-p1-controller\"></div></div><div class=\"command right\">Right<br><div id=\"jt-control-p1-right\" class=\"key\">Right</div></div><div class=\"command down\"><div id=\"jt-control-p1-down-label\">Down</div><div id=\"jt-control-p1-down\" class=\"key\">Down</div></div></div><div class=\"player p2\"><div id=\"jt-control-p2-label\" class=\"title\">Player 2</div><div class=\"command fire1\">Button<br><div id=\"jt-control-p2-button1\" class=\"key\">A</div></div><div class=\"command up\"><div id=\"jt-control-p2-up-label\">Up</div><div id=\"jt-control-p2-up\" class=\"key\">T</div></div><div class=\"command fire2\">Button<br><div id=\"jt-control-p2-button2\" class=\"key\">Dot</div></div><div class=\"command left\">Left<br><div id=\"jt-control-p2-left\" class=\"key\">F</div></div><div class=\"command controller\"><div id=\"jt-control-p2-controller\"></div></div><div class=\"command right\">Right<br><div id=\"jt-control-p2-right\" class=\"key\">H</div></div><div class=\"command down\"><div id=\"jt-control-p2-down-label\">Down</div><div id=\"jt-control-p2-down\" class=\"key\">G</div></div></div><div class=\"modes\"><div class=\"title\">Modes</div><div id=\"jt-controls-swap-keys\" class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">K</div></div><div class=\"desc\">Swap Keys</div></div><div id=\"jt-controls-swap-gamepads\" class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">J</div></div><div class=\"desc\">Swap Gamepads</div></div><div id=\"jt-controls-toggle-paddles\" class=\"hotkey\"><div class=\"command\"><div class=\"key key-ctrlalt\">Alt</div> + <div class=\"key\">L</div></div><div class=\"desc\">Toggle Paddles</div></div></div><div id=\"jt-controls-revert\">REVERT</div><div id=\"jt-controls-defaults\">DEFAULTS</div></div><div id=\"jt-about\"><div id=\"jt-logo-version\">'+Javatari.VERSION+'</div><div class=\"info\">Created by Paulo Augusto Peccin<br><a href=\"http://javatari.org\">http://javatari.org</a></div><div id=\"jt-browserinfo\"></div></div></div></div></div>'},SettingsGUI.css=function(){return'#jt-cover {position: fixed;top: 0;right: 0;bottom: 0;left: 0;visibility: hidden;opacity: 0;background-color: rgba(0, 0, 0, 0.6);transition: all .2s ease-out;}#jt-cover.show {visibility: visible;opacity: 1;}#jt-modal {position: relative;overflow: hidden;width: 560px;top: 80px;left: -120px;margin: 0 auto;color: rgba(0, 0, 0, 0.90);font-family: arial, sans-serif;box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4);transition: all .2s ease-out;}#jt-modal.show {left: 0;}#jt-modal .hotkey {height: 27px;padding: 3px 5px;font-size: 13px;box-sizing: border-box;}#jt-modal .hotkey .command {position: relative;float: left;font-weight: 600;color: rgba(0, 0, 0, .50);}#jt-modal .hotkey .desc {float: left;padding-top: 3px;}#jt-modal .key {position: relative;display: inline-block;top: -1px;min-width: 25px;height: 21px;padding: 4px 6px 3px;box-sizing: border-box;font-weight: 600;font-size: 12px;line-height: 12px;color: rgba(0, 0, 0, .68);background-color: white;border-radius: 3px;border: 1px solid rgb(210, 210, 210);box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5);text-align: center;}#jt-modal .key-ctrlalt {width: 31px;padding-left: 0;padding-right: 2px;}#jt-menu {position: relative;background-color: white;border-bottom: 1px solid rgb(200, 200, 200);}#jt-menu #jt-back {position: absolute;width: 18px;height: 32px;margin: 3px;padding: 0 11px;font-size: 35px;color: white;cursor: pointer;}#jt-menu #jt-back:hover {background-color: rgba(0, 0, 0, .12);}#jt-menu #jt-back-arrow {position: relative;overflow: hidden;top: -7px;}#jt-menu .caption {height: 29px;margin: 0 -1px;padding: 9px 0 0 48px;font-size: 19px;color: white;background-color: rgb(235, 62, 35);box-shadow: 0 1px 4px rgba(0, 0, 0, .8);}#jt-menu .items {position: relative;width: 70%;height: 39px;margin: 0 auto;font-weight: 600;}#jt-menu .item {float: left;width: 33.3%;height: 100%;padding-top: 13px;font-size: 14px;color: rgba(0, 0, 0, .43);text-align: center;cursor: pointer}#jt-menu .selected {color: rgb(224, 56, 34);}#jt-menu #jt-menu-selection {position: absolute;left: 0;bottom: 0;width: 33.3%;height: 3px;background-color: rgb(235, 62, 35);transition: left 0.3s ease-in-out}#jt-content {position: relative;left: 0;width: 1680px;height: 370px;background-color: rgb(220, 220, 220);transition: left 0.3s ease-in-out}#jt-help, #jt-controls, #jt-about {position: absolute;width: 560px;height: 100%;box-sizing: border-box;}#jt-help {padding-top: 22px;}#jt-help .left {float: left;padding-left: 30px;}#jt-help .right {float: left;padding-left: 34px;}#jt-help .left .command {width: 104px;}#jt-help .right .command {width: 109px;}#jt-help .command.right-bottom {width: 164px;}#jt-controls {left: 560px;}#jt-controls .player {position: absolute;top: 15px;width: 217px;color: rgba(0, 0, 0, .8);}#jt-controls .p1 {left: 28px;}#jt-controls .p2 {right: 28px;}#jt-controls .title {padding-bottom: 4px;margin: 0 14px 8px 12px;font-size: 18px;text-align: center;border-bottom: 2px solid rgba(242, 66, 35, .55);}#jt-controls .player .command {position: relative;float: left;width: 33%;height: 45px;font-size: 13px;text-align: center;}#jt-controls .command.fire1, #jt-controls .command.fire2 {top: 14px;}#jt-controls .command.left, #jt-controls .command.right {top: 27px;}#jt-controls .command.down {float: none;clear: both;margin: 0 auto;}#jt-controls .command.controller {height: 90px;}#jt-controls #jt-control-p1-controller, #jt-controls #jt-control-p2-controller {width: 70px;height: 89px;margin-left: 1px;background: url(\"'+Javatari.IMAGES_PATH+'sprites.png\") no-repeat -466px 0;}#jt-controls .player .key {min-width: 33px;height: 23px;padding: 5px 6px 4px;margin-top: 2px;cursor: pointer;}#jt-controls .player .key:hover {box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170);}#jt-controls .player .key.redefining {color: white;background-color: rgb(87, 128, 255);border-color: rgb(71, 117, 255);}#jt-controls .player .key.undefined {background-color: rgb(255, 150, 130);border-color: rgb(255, 130, 90);}#jt-controls .modes {position: absolute;top: 200px;left: 0;right: 0;width: 200px;margin: 0 auto;}#jt-controls .modes .hotkey {position: relative;padding-left: 8px;cursor: pointer;}#jt-controls .modes .hotkey:hover {background-color: white;box-shadow: 1px 1px 3px 1px rgb(180, 180, 180);}#jt-controls .modes .command {margin-right: 12px;}#jt-controls-defaults, #jt-controls-revert {position: absolute;bottom: 18px;padding: 7px 10px;font-size: 12px;font-weight: 600;border-radius: 1px;cursor: pointer}#jt-controls-defaults:hover, #jt-controls-revert:hover {background-color: white;box-shadow: 1px 1px 3px 1px rgb(180, 180, 180);}#jt-controls-revert {right: 30px;color: rgba(0, 0, 0, 0.8);}#jt-controls-defaults {right: 115px;color: rgb(0, 80, 230);}#jt-about {left: 1120px;}#jt-about #jt-logo-version {width: 248px;height: 220px;margin: 28px auto 14px;font-size: 18px;color: rgba(255, 255, 255, 0.97);padding-top: 190px;box-sizing: border-box;text-align: center;background: black url(\"'+Javatari.IMAGES_PATH+'logo.png\") no-repeat 5px 13px;background-size: 233px 173px;box-shadow: 3px 3px 14px rgb(75, 75, 75);}#jt-about .info {font-size: 18px;line-height: 30px;text-align: center;}#jt-about a {color: rgb(0, 80, 230);text-decoration: none;}#jt-about #jt-browserinfo {position: absolute;left: 0;right: 0;bottom: 7px;font-size: 10px;text-align: center;color: transparent;}';\n},jt.Room=function(a,b,c){function d(){g(),h()}var e=this;this.powerOn=function(a){i(),e.screen.powerOn(),e.consolePanel&&this.consolePanel.powerOn(),e.speaker.powerOn(),e.controls.powerOn(),f(),e.console.getCartridgeSocket().inserted()&&!e.console.powerIsOn&&e.console.powerOn(a)},this.powerOff=function(){e.console.powerOff(),e.controls.powerOff(),e.speaker.powerOff(),e.screen.powerOff(),e.consolePanel&&this.consolePanel.powerOff()};var f=function(){e.console.getCartridgeSocket().inserted()||c&&e.console.getCartridgeSocket().insert(c,!1)},g=function(){e.stateMedia=new jt.LocalStorageSaveStateMedia,e.romLoader=new jt.ROMLoader,e.screen=new jt.CanvasDisplay(a),e.screen.connectPeripherals(e.romLoader,e.stateMedia),b&&(e.consolePanel=new jt.ConsolePanel(b),e.consolePanel.connectPeripherals(e.screen,e.romLoader)),e.speaker=new jt.WebAudioSpeaker,e.controls=new jt.DOMConsoleControls,e.controls.connectPeripherals(e.screen,e.consolePanel)},h=function(){e.console=new jt.AtariConsole,e.stateMedia.connect(e.console.getSavestateSocket()),e.romLoader.connect(e.console.getCartridgeSocket(),e.console.getSavestateSocket()),e.screen.connect(e.console.getVideoOutput(),e.console.getControlsSocket(),e.console.getCartridgeSocket()),e.consolePanel&&e.consolePanel.connect(e.console.getControlsSocket(),e.console.getCartridgeSocket(),e.controls),e.speaker.connect(e.console.getAudioOutput()),e.controls.connect(e.console.getControlsSocket(),e.console.getCartridgeSocket())},i=function(){function a(){document.hidden?e.speaker.mute():e.speaker.play()}document.addEventListener(\"visibilitychange\",a)};this.screen=null,this.consolePanel=null,this.speaker=null,this.controls=null,this.console=null,this.stateMedia=null,this.romLoader=null,d()},Javatari.start=function(){if(Javatari.preferences.load(),!Javatari.screenElement&&(Javatari.screenElement=document.getElementById(Javatari.SCREEN_ELEMENT_ID),!Javatari.screenElement))throw new Error('Javatari cannot be started. HTML document is missing screen element with id \"'+Javatari.SCREEN_ELEMENT_ID+'\"');Javatari.consolePanelElement||(Javatari.consolePanelElement=document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID)),Javatari.room=new jt.Room(Javatari.screenElement,Javatari.consolePanelElement),Javatari.room.powerOn(),Javatari.ROM_AUTO_LOAD_URL&&Javatari.room.romLoader.loadFromURL(Javatari.ROM_AUTO_LOAD_URL),Javatari.shutdown=function(){Javatari.room&&Javatari.room.powerOff(),jt.Util.log(\"shutdown\"),delete Javatari},delete Javatari.start,delete Javatari.preLoadImagesAndStart,jt.Util.log(Javatari.VERSION+\" started\")},Javatari.preLoadImagesAndStart=function(){function a(a){Javatari.start&&Javatari.AUTO_START!==!1&&(a||d&&0===e)&&Javatari.start()}var b=[\"sprites.png\",\"logo.png\",\"screenborder.png\"],c=b.length,d=!1,e=c;document.addEventListener(\"DOMContentLoaded\",function(){d=!0,a(!1)});for(var f=0;f<c;f++){var g=new Image;g.src=Javatari.IMAGES_PATH+b[f],g.onload=function(){e--,a(!1)}}window.addEventListener(\"load\",function(){a(!0)})},Javatari.preLoadImagesAndStart();"
  },
  {
    "path": "src/main/Configurator.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Configurator = {\n\n    applyConfig: function() {\n\n        var urlParams = {};\n\n        // Override parameters with values set in URL, if allowed\n        if (Javatari.ALLOW_URL_PARAMETERS) {\n            urlParams = parseURLParams();\n            // First override PRESETS parameters\n            if (urlParams.PRESETS) { this.applyParam(\"PRESETS\", urlParams.PRESETS); delete urlParams.PRESETS }\n        }\n\n        // Apply reset\n        if (urlParams.RESET) this.applyReset();\n\n        // Apply  presets\n        this.applyPresets(Javatari.PRESETS);\n\n        // Apply additional single parameter overrides\n        for (var param in urlParams) this.applyParam(param, urlParams[param]);\n\n        // Ensure the correct types of the parameters\n        normalizeParameterTypes();\n\n        // Apply user asked page CSS\n        if (Javatari.PAGE_BACK_CSS) document.body.style.background = Javatari.PAGE_BACK_CSS;\n\n        function parseURLParams() {\n            var search = (window.location.search || \"\").split('+').join(' ');\n            var reg = /[?&]?([^=]+)=([^&]*)/g;\n            var tokens;\n            var parameters = {};\n            while (tokens = reg.exec(search)) {\n                var parName = decodeURIComponent(tokens[1]).trim().toUpperCase();\n                parName = jt.Configurator.abbreviations[parName] || parName;\n                parameters[parName] = decodeURIComponent(tokens[2]).trim();\n            }\n            return parameters;\n        }\n\n        function normalizeParameterTypes() {\n            Javatari.AUTO_POWER_ON_DELAY |= 0;\n            Javatari.CARTRIDGE_CHANGE_DISABLED = Javatari.CARTRIDGE_CHANGE_DISABLED === true || Javatari.CARTRIDGE_CHANGE_DISABLED == \"true\";\n            Javatari.SCREEN_RESIZE_DISABLED = Javatari.SCREEN_RESIZE_DISABLED === true || Javatari.SCREEN_RESIZE_DISABLED == \"true\";\n            Javatari.SCREEN_FULLSCREEN_MODE = Javatari.SCREEN_FULLSCREEN_MODE |= 0;\n            Javatari.SCREEN_FILTER_MODE |= 0;\n            Javatari.SCREEN_CRT_MODE |= 0;\n            Javatari.SCREEN_DEFAULT_SCALE = parseFloat(Javatari.SCREEN_DEFAULT_SCALE);\n            Javatari.SCREEN_DEFAULT_ASPECT = parseFloat(Javatari.SCREEN_DEFAULT_ASPECT);\n            Javatari.SCREEN_CANVAS_SIZE = Javatari.SCREEN_CANVAS_SIZE | 0;\n            Javatari.SCREEN_CONTROL_BAR |= 0;\n            Javatari.SCREEN_FORCE_HOST_NATIVE_FPS |= 0;\n            Javatari.SCREEN_VSYNCH_MODE |= 0;\n            Javatari.AUDIO_MONITOR_BUFFER_BASE |= 0;\n            Javatari.AUDIO_MONITOR_BUFFER_SIZE |= 0;\n            Javatari.AUDIO_SIGNAL_BUFFER_RATIO = parseFloat(Javatari.AUDIO_SIGNAL_BUFFER_RATIO);\n            Javatari.AUDIO_SIGNAL_ADD_FRAMES |= 0;\n        }\n    },\n\n    applyPresets: function(presetList) {\n        var presetNames = (presetList || \"\").trim().toUpperCase().split(\",\");\n        // Apply list in order\n        for (var i = 0; i < presetNames.length; i++)\n            this.applyPreset(presetNames[i].trim());\n    },\n\n    applyPreset: function(presetName) {\n        if (!presetName) return;\n        var presetPars = Javatari.PRESETS_CONFIG[presetName];\n        if (presetPars) {\n            jt.Util.log(\"Applying preset: \" + presetName);\n            for (var par in presetPars) {\n                var parName = par.trim().toUpperCase();\n                if (parName[0] !== \"_\") this.applyParam(parName, presetPars[par]);      // Normal Parameter to set\n                else if (parName === \"_INCLUDE\") this.applyPresets(presetPars[par]);    // Preset to include\n            }\n        } else\n            jt.Util.warning(\"Preset \\\"\" + presetName + \"\\\" not found, skipping...\");\n    },\n\n    applyParam: function(name, value) {\n        if (name.indexOf(\".\") < 0)\n            Javatari[name] = value;\n        else {\n            var obj = Javatari;\n            var parts = name.split('.');\n            for (var p = 0; p < parts.length - 1; ++p) {\n                obj = obj[parts[p]];\n            }\n            obj[parts[parts.length - 1]] = value;\n        }\n    },\n\n    mediaURLSpecs: function() {\n        // URLs specified by fixed media loading parameters\n        var OPEN_TYPE = jt.FileLoader.OPEN_TYPE;\n        return [\n            Javatari.AUTODETECT_URL && {\n                url: Javatari.AUTODETECT_URL,\n                onSuccess: function (res) {\n                    Javatari.room.fileLoader.loadFromContent(res.url, res.content, OPEN_TYPE.AUTO, 0, true, false);\n                }\n            },\n            Javatari.CARTRIDGE_URL && {\n                url: Javatari.CARTRIDGE_URL,\n                onSuccess: function (res) {\n                    Javatari.room.fileLoader.loadFromContent(res.url, res.content, OPEN_TYPE.ROM, 0, true, false, Javatari.CARTRIDGE_FORMAT);\n                }\n            }\n        ];\n    },\n\n    applyReset: function() {\n        jt.Util.warning(\"Removing all data saved on this client\");\n        for(var p in localStorage)\n            if (p.indexOf(\"javatari\") === 0) delete localStorage[p];\n    },\n\n    abbreviations: {\n        P: \"PRESETS\",\n        PRESET: \"PRESETS\",\n        ROM: \"CARTRIDGE_URL\",\n        CART: \"CARTRIDGE_URL\",\n        FORMAT: \"CARTRIDGE_FORMAT\",\n        ROM_FORMAT: \"CARTRIDGE_FORMAT\",\n        CART_FORMAT: \"CARTRIDGE_FORMAT\",\n        ANY: \"AUTODETECT_URL\",\n        AUTO: \"AUTODETECT_URL\",\n        AUTODETECT: \"AUTODETECT_URL\",\n        STATE: \"STATE_URL\",\n        SAVESTATE: \"STATE_URL\",\n        JOIN: \"NETPLAY_JOIN\",\n        NICK: \"NETPLAY_NICK\",\n        VERSION: \"VERSION_CHANGE_ATTEMPTED\"      // Does not allow version to be changed ;-)\n    }\n\n};\n"
  },
  {
    "path": "src/main/Javatari.js",
    "content": "// Javatari version 5.0.4\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Main Emulator parameters.\n// May be overridden dynamically by URL query parameters, if ALLOW_URL_PARAMETERS = true.\n\nJavatari = {\n\n    PRESETS:                        \"\",                         // Configuration Presets to apply. See Presets Configuration\n\n    // Full or relative URL of Media files to load\n    CARTRIDGE_URL:                  \"\",\n    AUTODETECT_URL:                 \"\",\n    STATE_URL:                      \"\",\n\n    // Forcing ROM formats\n    CARTRIDGE_FORMAT:               \"\",                         // 4K, F8, F4, FE, AR, etc...\n\n    // NetPlay\n    NETPLAY_JOIN:                   \"\",                         // Join NetPlay! Session automatically\n    NETPLAY_NICK:                   \"\",                         // NetPlay! Nickname\n\n    // General configuration\n    AUTO_START:                     true,\n    AUTO_POWER_ON_DELAY:            1200,                       // -1: no auto Power-ON; >= 0: wait specified milliseconds before Power-ON\n    CARTRIDGE_SHOW_RECENT:          true,\n    CARTRIDGE_CHANGE_DISABLED:      false,\n    CARTRIDGE_LABEL_COLORS:         \"\",                         // Space-separated colors for Label, Background, Border. e.g. \"#f00 #000 transparent\". Leave \"\" for defaults\n    SCREEN_RESIZE_DISABLED:         false,\n    SCREEN_CONSOLE_PANEL_DISABLED:  false,\n    SCREEN_ELEMENT_ID:              \"javatari-screen\",\n    CONSOLE_PANEL_ELEMENT_ID:       -1,                         // -1: auto. Don't change! :-)\n    SCREEN_FULLSCREEN_MODE:         -1,                         // -2: disabled; -1: auto; 0: off; 1: on\n    SCREEN_CRT_MODE:                0,                          // -1: auto; 0: off; 1: on\n    SCREEN_FILTER_MODE:             -3,                         // -3: user set (default auto); -2: browser default; -1: auto; 0..3: smoothing level\n    SCREEN_DEFAULT_SCALE:           -1,                         // -1: auto; 0.5..N in 0.1 steps: scale\n    SCREEN_DEFAULT_ASPECT:          1,                          // in 0.1 steps\n    SCREEN_CANVAS_SIZE:             2,                          // Internal canvas size factor. Don't change! :-)\n    SCREEN_CONTROL_BAR:             1,                          // 0: on hover; 1: always\n    SCREEN_FORCE_HOST_NATIVE_FPS:   -1,                         // -1: auto. Don't change! :-)\n    SCREEN_VSYNCH_MODE:             -2,                         // -2: user set (default on); -1: disabled; 0: off; 1: on\n    AUDIO_MONITOR_BUFFER_BASE:      -3,                         // -3: user set (default auto); -2: disable audio; -1: auto; 0: browser default; 1..6: base value. More buffer = more delay\n    AUDIO_MONITOR_BUFFER_SIZE:      -1,                         // -1: auto; 256, 512, 1024, 2048, 4096, 8192, 16384: buffer size.     More buffer = more delay. Don't change! :-)\n    AUDIO_SIGNAL_BUFFER_RATIO:      2,                          // Internal Audio Signal buffer based on Monitor buffer\n    AUDIO_SIGNAL_ADD_FRAMES:        3,                          // Additional frames in internal Audio Signal buffer based on Monitor buffer\n    PADDLES_MODE:                   -1,                         // -1: auto; 0: off; 1: on\n    TOUCH_MODE:                     -1,                         // -1: auto; 0: disabled; 1: enabled; 2: enabled (swapped)\n\n    IMAGES_PATH:                    window.JAVATARI_IMAGES_PATH || \"images/\",\n    PAGE_BACK_CSS:                  \"\",                         // CSS to modify page background color. Applied to the body element\n\n    SERVER_ADDRESS:                 \"webmsx.azurewebsites.net/\",\n    SERVER_KEEPALIVE:               0,\n\n    RESET:                          0,                          // if value = 1 clear all saved data on the client\n    ALLOW_URL_PARAMETERS:           true                        // Allows user to override any of these parameters via URL query parameters\n\n};\n\nJavatari.PRESETS_CONFIG = { };                                  // No built-in Presets for now\n\njt = window.jt || {};                                           // Namespace for all classes and objects\n"
  },
  {
    "path": "src/main/Launcher.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\nJavatari.start = function (consolePowerOn) {\n\"use strict\";\n\n    // Emulator can only be started once\n    delete Javatari.start;\n    delete Javatari.preLoadImagesAndStart;\n\n    // Init preferences\n    Javatari.userPreferences.load();\n\n    // Get container elements\n    if (!Javatari.screenElement) {\n        Javatari.screenElement = document.getElementById(Javatari.SCREEN_ELEMENT_ID);\n        if (!Javatari.screenElement)\n            throw new Error('Javatari cannot be started. ' +\n            'HTML document is missing screen element with id \"' + Javatari.SCREEN_ELEMENT_ID + '\"');\n    }\n\n    // Apply Configuration, including Machine Type and URL Parameters if allowed\n    jt.Configurator.applyConfig();\n\n    // Build and start emulator\n    if (consolePowerOn === undefined) consolePowerOn = Javatari.AUTO_POWER_ON_DELAY >= 0;\n    Javatari.room = new jt.Room(Javatari.screenElement, consolePowerOn);\n    Javatari.room.powerOn();\n    jt.Util.log(\"version \" + Javatari.VERSION + \" started\");\n\n    // Prepare ROM Database\n    jt.CartridgeDatabase.uncompress();\n\n    // Init KeepAlive\n    jt.NetClient.initKeepAlive();\n\n    // NetPlay! auto-join Session?\n    var joinSession = Javatari.NETPLAY_JOIN;\n\n    // Auto-load BIOS, Expansions, State, Cartridges, Disks and Tape files if specified and downloadable\n    if (!joinSession && Javatari.STATE_URL) {\n        // State loading, Console will Auto Power on\n        new jt.MultiDownloader(\n            [{ url: Javatari.STATE_URL }],\n            function onAllSuccess(urls) {\n                Javatari.room.start(function() {\n                    Javatari.room.fileLoader.loadFromContent(urls[0].url, urls[0].content, jt.FileLoader.OPEN_TYPE.STATE, 0, false);\n                });\n            }\n        ).start();\n    } else {\n        // Normal media loading. Power Console on only after all files are loaded and inserted\n        var mediaURLs = joinSession ? [] : jt.Configurator.mediaURLSpecs();       // Skip media loading if joining Session\n        new jt.MultiDownloader(\n            mediaURLs,\n            function onAllSuccess() {\n                Javatari.room.start(joinSession\n                    ? function() { Javatari.room.getNetClient().joinSession(joinSession, Javatari.NETPLAY_NICK); }\n                    : undefined\n                );\n            }\n        ).start();\n    }\n\n    Javatari.shutdown = function () {\n        if (Javatari.room) Javatari.room.powerOff();\n        jt.Util.log(\"shutdown\");\n    };\n\n};\n\n// Pre-load images if needed and start emulator as soon as all are loaded and DOM is ready\nJavatari.preLoadImagesAndStart = function() {\n    var domReady = false;\n    var imagesToLoad = jt.Images.embedded ? 0 : jt.Images.count;\n\n    function tryStart(bypass) {\n        if (Javatari.start && Javatari.AUTO_START && (bypass || (domReady && imagesToLoad === 0)))\n            Javatari.start();\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        domReady = true;\n        tryStart(false);\n    });\n\n    if (imagesToLoad > 0) {\n        for (var i in jt.Images.urls) {\n            var img = new Image();\n            img.src = jt.Images.urls[i];\n            img.onload = function () {\n                imagesToLoad--;\n                tryStart(false);\n            };\n        }\n    }\n\n    window.addEventListener(\"load\", function() {\n        tryStart(true);\n    });\n};\n\n// AppCache update control\nif (window.applicationCache) {\n    function onUpdateReady() {\n        alert(\"A new version is available!\\nJavatari will restart...\");\n        window.applicationCache.swapCache();\n        window.location.reload();\n    }\n    if (window.applicationCache.status === window.applicationCache.UPDATEREADY) onUpdateReady();\n    else window.applicationCache.addEventListener(\"updateready\", onUpdateReady);\n}\n\nJavatari.VERSION = \"5.0.4\";\n\n// Start pre-loading images right away\nJavatari.preLoadImagesAndStart();\n"
  },
  {
    "path": "src/main/atari/audio/AudioSignal.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.AudioSignal = function(name, source, sampleRate, volume) {\n\"use strict\";\n\n    var self = this;\n\n    this.flush = function() {\n        nextSampleToGenerate = 0;\n        nextSampleToRetrieve = 0;\n        availSamples = maxAvailSamples;\n\n        //console.log(\"FLUSH!\");\n    };\n\n    this.setFps = function(fps) {\n        // Calculate total samples per frame based on fps\n        samplesPerFrame = (sampleRate / fps) | 0;\n        updateBufferSize();\n    };\n\n    this.audioFinishFrame = function() {             // Enough samples to complete frame, signal always ON\n        if (frameSamples > 0) {\n            //console.log(\">>> Audio finish frame: \" + frameSamples);\n            while(frameSamples > 0) audioClockPulse();\n        }\n        frameSamples = samplesPerFrame;\n    };\n\n    this.retrieveSamples = function(quant, mute) {\n        var generated = maxAvailSamples - availSamples;\n\n        //var generated = nextSampleToGenerate >= nextSampleToRetrieve\n        //    ? nextSampleToGenerate - nextSampleToRetrieve\n        //    : maxSamples - nextSampleToRetrieve + nextSampleToGenerate;\n\n        //console.log(\">>> Samples available: \" + generated);\n\n        //if (nextSampleToGenerate === nextSampleToRetrieve)\n        //    console.log(\"MATCH: \" + nextSampleToGenerate );\n\n        //if (nextSampleToGenerate < nextSampleToRetrieve)\n        //    console.log(\"WRAP: \" + nextSampleToGenerate );\n\n        var missing = quant - generated;\n\n        if (missing > 0) {\n            if (missing > availSamples) missing = availSamples;\n            generateMissingSamples(missing, mute);\n            //jt.Util.log(\">>> Missing samples generated: \" + missing);\n        } else {\n            //jt.Util.log(\">>> No missing samples\");\n        }\n\n        retrieveResult.start = nextSampleToRetrieve;\n\n        var retrieved = generated + missing;\n        availSamples += retrieved;\n        nextSampleToRetrieve += retrieved;\n        if (nextSampleToRetrieve >= maxSamples) nextSampleToRetrieve -= maxSamples;     // Circular Buffer\n\n        return retrieveResult;\n    };\n\n\n    function audioClockPulse() {\n        if (frameSamples > 0) {\n            if (availSamples <= 0) {\n                frameSamples = 0;\n                return;\n            }\n            generateNextSample();\n            --frameSamples;\n            --availSamples;\n        }\n    }\n    this.audioClockPulse = audioClockPulse;\n\n    this.getSampleRate = function() {\n        return sampleRate;\n    };\n\n    this.toString = function() {\n        return \"AudioSignal \" + name;\n    };\n\n    this.setAudioMonitorBufferSize = function (size) {\n        monitorBufferSize = size;\n        updateBufferSize();\n    };\n\n    function updateBufferSize() {\n        var size = (monitorBufferSize * Javatari.AUDIO_SIGNAL_BUFFER_RATIO + samplesPerFrame * Javatari.AUDIO_SIGNAL_ADD_FRAMES) | 0;\n        samples.length = size;\n        if (size > maxSamples) jt.Util.arrayFill(samples, 0, maxSamples, size);\n        maxSamples = size;\n        retrieveResult.bufferSize = maxSamples;\n        maxAvailSamples = maxSamples - 2;\n        self.flush();\n\n        //console.log(\">>> Buffer size for: \" + name + \": \" + maxSamples);\n    }\n\n    function generateNextSample() {\n        samples[nextSampleToGenerate] = source.nextSample() * volume;\n        if (++nextSampleToGenerate >= maxSamples) nextSampleToGenerate = 0;          // Circular Buffer\n    }\n\n    function generateNextSampleMute() {\n        samples[nextSampleToGenerate] = 0;\n        if (++nextSampleToGenerate >= maxSamples) nextSampleToGenerate = 0;          // Circular Buffer\n    }\n\n    function generateMissingSamples(quant, mute) {\n        if (mute) for (var j = quant; j > 0; j = j - 1) generateNextSampleMute()\n        else      for (var i = quant; i > 0; i = i - 1) generateNextSample()\n        availSamples -= quant;\n    }\n\n\n    this.name = name;\n\n    var clock72xCountDown = 9;              // 4 clocks out of 9 32x clocks. Count from 9 to 0 and misses every odd and the 8th clock\n\n    var nextSampleToGenerate = 0;\n    var nextSampleToRetrieve = 0;\n\n    var samplesPerFrame;\n    var frameSamples = 0;\n\n    var maxSamples = 0;\n    var availSamples = 0, maxAvailSamples = 0;\n    var samples = jt.Util.arrayFill(new Array(maxSamples), 0);\n\n    var monitorBufferSize = 0;\n\n    var retrieveResult = {\n        buffer: samples,\n        bufferSize: maxSamples,\n        start: 0\n    };\n\n\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/Cartridge.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Cartridge = function() {\n\"use strict\";\n\n    this.powerOn = function() {\n    };\n\n    this.powerOff = function() {\n    };\n\n    this.connectBus = function(bus) {\n    };\n\n    this.connectSaveStateSocket = function(socket) {\n    };\n\n    this.read = function(address) {\n    };\n\n    this.write = function(address, val) {\n        // Writing to ROMs is possible, but nothing is changed\n    };\n\n    this.getDataDesc = function() {\n        return null;\n    };\n\n    this.needsBusMonitoring = function() {\n        return false;\n    };\n\n    this.monitorBusBeforeRead = function(address)  {\n    };\n\n    this.monitorBusBeforeWrite = function(address, val)  {\n    };\n\n    this.needsAudioClock = function() {\n        return false;\n    };\n\n    this.audioClockPulse = function() {\n    };\n\n    this.reinsertROMContent = function() {\n        if (this.rom.content) return;\n        this.rom.content = this.bytes || [];\n    };\n\n\n    this.format = null;\n    this.rom = null;\n    this.bytes = null;\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n    };\n\n    this.loadState = function(state) {\n    };\n\n};\n\njt.Cartridge.base = new jt.Cartridge();\n"
  },
  {
    "path": "src/main/atari/cartridge/CartridgeCreator.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.CartridgeCreatorImpl = function() {\n\"use strict\";\n\n    this.createCartridgeFromRom = function(rom) {\n        // ROM has User Set Format?\n        var userFormatName = userROMFormats.getForROM(rom);\n        if (userFormatName) {\n            var userFormat = jt.CartridgeFormats[userFormatName];\n            if (userFormat.tryFormat(rom)) {\n                jt.Util.log(\"USER Format selected: \" + userFormat.desc);\n                return userFormat.createCartridgeFromRom(rom);\n            }\n        }\n\n        // Try to build the Slot with the best format, if a supported format is found\n        var bestOption = this.getBestFormatOption(rom);\n        if (!bestOption) return;\n\n        jt.Util.log(\"AUTO Format selected: \" + bestOption.name + \": \" + bestOption.desc + \", priority: \" + bestOption.priority + (bestOption.priorityBoosted ? \" (\" + bestOption.priorityBoosted + \")\" : \"\"));\n        return bestOption.createCartridgeFromRom(rom);\n    };\n\n    this.recreateCartridgeFromSaveState = function(saveState, cartridge) {\n        var cartridgeFormat = jt.CartridgeFormats[saveState.f];\n        if (!cartridgeFormat) throw new Error (\"Unsupported ROM Format: \" + saveState.f);\n        if (cartridge && cartridge.format !== cartridgeFormat) cartridge = null;       // Only possible to reuse cartridge if the format is the same!\n        return cartridgeFormat.recreateCartridgeFromSaveState(saveState, cartridge);\n    };\n\n    this.changeCartridgeFormat = function(cart, newFormat) {\n        return newFormat.createCartridgeFromRom(cart.rom);\n    };\n\n    this.getBestFormatOption = function(rom) {\n        var options = getFormatOptions(rom);\n        return options.length === 0 ? undefined : options[0];\n    };\n\n    this.getUserFormatOptionNames = function(rom) {\n        var formatOptions = [];\n        for (var i = 0, len = jt.CartridgeFormatsUserOptions.length; i < len; ++i) {\n            var formatName = jt.CartridgeFormatsUserOptions[i];\n            var format = jt.CartridgeFormats[formatName].tryFormat(rom);\n            if (format) formatOptions.push(formatName);\n        }\n        return formatOptions;\n    };\n\n    this.produceInfo = function(rom, formatHint) {\n        // Preserve original length as MD5 computation may increase it\n        var origLen = rom.content.length;\n        var hash = jt.MD5(rom.content);\n        if (rom.content.length > origLen) rom.content.splice(origLen);\n\n        // Get info from the library\n        var info = jt.CartridgeDatabase[hash];\n        if (info) {\n            jt.Util.log(\"\" + info.n + \" (\" + hash + \")\");\n        } else {\n            info = buildInfo(rom.source);\n            jt.Util.log(\"Unknown ROM: \" + info.n + \" (\" + hash + \")\");\n        }\n\n        finishInfo(info, rom.source, hash, formatHint);\n        return info;\n    };\n\n    this.setUserROMFormats = function(pUserROMFormats) {\n        userROMFormats = pUserROMFormats;\n    };\n\n    var getFormatOptions = function(rom) {\n        var formatOptions = [];\n        var formatOption;\n        var denialEx;\n        for (var format in jt.CartridgeFormats) {\n            try {\n                formatOption = jt.CartridgeFormats[format].tryFormat(rom);\n                if (!formatOption) continue;\t    \t    // rejected by format\n                boostPriority(formatOption, rom.info);\t    // adjust priority based on ROM info\n                formatOptions.push(formatOption);\n            } catch (ex) {\n                if (!ex.formatDenial) throw ex;\n                if (!denialEx) denialEx = ex;               // Keep only the first one\n            }\n        }\n\n        // Sort according to priority\n        formatOptions.sort(function formatOptionComparator(a, b) {\n           return (a.priorityBoosted || a.priority) - (b.priorityBoosted || b.priority);\n        });\n\n        return formatOptions;\n    };\n\n    var buildInfo = function(romSource) {\n        var info = { n: \"Unknown\" };\n        if (!romSource || !romSource.trim()) return info;\n\n        var name = romSource;\n\n        // Get the last part of the URL (file name)\n        var slash = name.lastIndexOf(\"/\");\n        var bslash = name.lastIndexOf(\"\\\\\");\n        var question = name.lastIndexOf(\"?\");\n        var i = Math.max(slash, Math.max(bslash, question));\n        if (i >= 0 && i < name.length - 1) name = name.substring(i + 1);\n        // Get only the file name without the extension\n        var dot = name.lastIndexOf(\".\");\n        if (dot >= 0) name = name.substring(0, dot);\n\n        info.n = name.trim() || \"Unknown\";\n        return info;\n    };\n\n    // Fill absent information based on ROM name\n    var finishInfo = function(info, romSource, hash, formatHint) {\n        // Saves the hash on the info\n        info.h = hash;\n        // Compute label based on name\n        if (!info.l) info.l = produceCartridgeLabel(info.n);\n        var name = info.n.toUpperCase();\n        // Adjust Paddles information if absent\n        Paddles: if (!info.p) {\n            info.p = 0;\n            if (!name.match(HINTS_PREFIX_REGEX + \"JOYSTICK(S)?\" + HINTS_SUFFIX_REGEX)) {\n                if (name.match(HINTS_PREFIX_REGEX + \"PADDLE(S)?\" + HINTS_SUFFIX_REGEX))\n                    info.p = 1;\n                else\n                    for (var i = 0; i < PADDLES_ROM_NAMES.length; i++)\n                        if (name.match(PADDLES_ROM_NAMES[i])) {\n                            info.p = 1;\n                            break Paddles;\n                        }\n            }\n        }\n        // Adjust CRT Mode information if absent\n        CrtMode: if (!info.c) {\n            if (name.match(HINTS_PREFIX_REGEX + \"CRT(_|-)?MODE\" + HINTS_SUFFIX_REGEX))\n                info.c = 1;\n            else\n                for (i = 0; i < CRT_MODE_ROM_NAMES.length; i++)\n                    if (name.match(CRT_MODE_ROM_NAMES[i])) {\n                        info.c = 1;\n                        break CrtMode;\n                    }\n        }\n        // Adjust Format information if hint passed\n        if (formatHint) {\n            formatHint = formatHint.trim().toUpperCase();\n            for (var formatName in jt.CartridgeFormats)\n                if (formatName.toUpperCase() === formatHint) {\n                    info.f = formatName;\n                    break;\n                }\n        }\n        // Adjust Format information if absent\n        Format: if (!info.f) {\n            // First by explicit format hint\n            var romURL = romSource.toUpperCase();\n            for (formatName in jt.CartridgeFormats)\n                if (formatMatchesByHint(formatName, name) || formatMatchesByHint(formatName, romURL)) {\n                    info.f = formatName;\n                    break Format;\n                }\n            // Then by name\n            for (formatName in FORMAT_ROM_NAMES)\n                if (formatMatchesByName(formatName, name)) {\n                    info.f = formatName;\n                    break Format;\n                }\n        }\n    };\n\n    var boostPriority = function(formatOption, info) {\n        if (info.f && formatOption.name === info.f)\n            formatOption.priorityBoosted = formatOption.priority - FORMAT_PRIORITY_BOOST;\n        else\n            formatOption.priorityBoosted = undefined;\n    };\n\n    var produceCartridgeLabel = function(name) {\n        return name.split(/(\\(|\\[)/)[0].trim();   //  .toUpperCase();   // TODO Validate\n    };\n\n    var formatMatchesByHint = function(formatName, hint) {\n        return hint.match(HINTS_PREFIX_REGEX + formatName + HINTS_SUFFIX_REGEX);\n    };\n\n    var formatMatchesByName = function(formatName, name) {\n        var namesForFormat = FORMAT_ROM_NAMES[formatName];\n        if (!namesForFormat) return false;\n        for (var i = 0; i < namesForFormat.length; i++)\n            if (name.match(namesForFormat[i]))\n                return true;\n        return false;\n    };\n\n\n    var FORMAT_ROM_NAMES = {\n        \"E0\": [\n            \"^.*MONTEZUMA.*$\",\t\t\t\t\t\t\"^.*MONTZREV.*$\",\n            \"^.*GYRUS.*$\",\n            \"^.*TOOTH.*PROTECTORS.*$\",\t\t\t\t\"^.*TOOTHPRO.*$\",\n            \"^.*DEATH.*STAR.*BATTLE.*$\",\t\t\t\"^.*DETHSTAR.*$\",\n            \"^.*JAMES.*BOND.*$\",\t\t\t\t\t\"^.*JAMEBOND.*$\",\n            \"^.*SUPER.*COBRA.*$\",\t\t\t\t\t\"^.*SPRCOBRA.*$\",\n            \"^.*TUTANKHAM.*$\",\t\t\t\t\t\t\"^.*TUTANK.*$\",\n            \"^.*POPEYE.*$\",\n            \"^.*(SW|STAR.?WARS).*ARCADE.*GAME.*$\",\t\"^.*SWARCADE.*$\",\n            \"^.*Q.*BERT.*QUBES.*$\",\t\t\t\t\t\"^.*QBRTQUBE.*$\",\n            \"^.*FROGGER.?(2|II).*$\",\n            \"^.*DO.*CASTLE.*$\"\n        ],\n        \"FE\": [\n            \"^.*ROBOT.*TANK.*$\",\t\t\"^.*ROBOTANK.*$\",\n            \"^.*DECATHLON.*$\"\t, \t\t\"^.*DECATHLN.*$\"\t\t// There is also a 16K F6 version\n        ],\n        \"E7\": [\n            \"^.*BUMP.*JUMP.*$\",\t\t\t\"^.*BNJ.*$\",\n            \"^.*BURGER.*TIME.*$\",\t\t\"^.*BURGTIME.*$\",\n            \"^.*POWER.*HE.?MAN.*$\",\t\t\"^.*HE_MAN.*$\"\n        ],\n        \"3F\": [\n            \"^.*POLARIS.*$\",\n            \"^.*RIVER.*PATROL.*$\",\t\t \"^.*RIVERP.*$\",\n            \"^.*SPRINGER.*$\",\n            \"^.*MINER.*2049.*$\",\t\t \"^.*MNR2049R.*$\",\n            \"^.*MINER.*2049.*VOLUME.*$\", \"^.*MINRVOL2.*$\",\n            \"^.*ESPIAL.*$\",\n            \"^.*ANDREW.*DAVIE.*$\",       \"^.*DEMO.*IMAGE.*AD.*$\" \t\t// Various 32K Image demos\n        ],\n        \"3E\": [\n            \"^.*BOULDER.*DASH.*$\", \t\t \"^.*BLDRDASH.*$\"\n        ],\n        \"DPC\": [\n            \"^.*PITFALL.*II.*$\"\n        ]\n    };\n\n    var PADDLES_ROM_NAMES = [\n        \"^.*PADDLES.*$\",\t\t\t\t\t\t\t\t\t\t// Generic hint\n        \"^.*BREAKOUT.*$\",\n        \"^.*SUPER.*BREAKOUT.*$\",\t\t  \"^.*SUPERB.*$\",\n        \"^.*WARLORDS.*$\",\n        \"^.*STEEPLE.*CHASE.*$\",\t\t\t  \"^.*STEPLCHS.*$\",\n        \"^.*VIDEO.*OLYMPICS.*$\",\t\t  \"^.*VID(|_)OLYM(|P).*$\",\n        \"^.*CIRCUS.*ATARI.*$\", \t\t\t  \"^.*CIRCATRI.*$\",\n        \"^.*KABOOM.*$\",\n        \"^.*BUGS((?!BUNNY).)*\",\t\t\t\t\t\t\t\t// Bugs, but not Bugs Bunny!\n        \"^.*BACHELOR.*PARTY.*$\", \t\t  \"^.*BACHELOR.*$\",\n        \"^.*BACHELORETTE.*PARTY.*$\", \t  \"^.*BACHLRTT.*$\",\n        \"^.*BEAT.*EM.*EAT.*EM.*$\", \t\t  \"^.*BEATEM.*$\",\n        \"^.*PHILLY.*FLASHER.*$\",\t \t  \"^.*PHILLY.*$\",\n        \"^.*JEDI.*ARENA.*$\",\t\t\t  \"^.*JEDIAREN.*$\",\n        \"^.*EGGOMANIA.*$\",\t\t\t\t  \"^.*EGGOMANA.*$\",\n        \"^.*PICNIC.*$\",\n        \"^.*PIECE.*O.*CAKE.*$\",\t\t\t  \"^.*PIECECKE.*$\",\n        \"^.*BACKGAMMON.*$\", \t\t\t  \"^.*BACKGAM.*$\",\n        \"^.*BLACKJACK.*$\",\t\t\t\t  \"^.*BLACK(|_)J.*$\",\n        \"^.*CANYON.*BOMBER.*$\", \t\t  \"^.*CANYONB.*$\",\n        \"^.*CASINO.*$\",\n        \"^.*DEMONS.*DIAMONDS.*$\",\t      \"^.*DEMONDIM.*$\",\n        \"^.*DUKES.*HAZZARD.*2.*$\",    \t  \"^.*STUNT.?2.*$\",\n        \"^.*ENCOUNTER.*L.?5.*$\", \t\t  \"^.*ENCONTL5.*$\",\n        \"^.*G.*I.*JOE.*COBRA.*STRIKE.*$\", \"^.*GIJOE.*$\",\n        \"^.*GUARDIAN.*$\",\n        \"^.*MARBLE.*CRAZE.*$\",\t\t\t  \"^.*MARBCRAZ.*$\",\n        \"^.*MEDIEVAL.*MAYHEM.*$\",\n        \"^.*MONDO.*PONG.*$\",\n        \"^.*NIGHT.*DRIVER.*$\",\t\t\t  \"^.*NIGHTDRV.*$\",\n        \"^.*PARTY.*MIX.*$\",\n        \"^.*POKER.*PLUS.*$\",\n        \"^.*PONG.*SPORTS.*$\",\n        \"^.*SCSICIDE.*$\",\n        \"^.*SECRET.*AGENT.*$\",\n        \"^.*SOLAR.*STORM.*$\", \t\t\t  \"^.*SOLRSTRM.*$\",\n        \"^.*SPEEDWAY.*$\",\n        \"^.*STREET.*RACER.*$\", \t\t\t  \"^.*STRTRACE.*$\",\n        \"^.*STUNT.*CYCLE.*$\", \t\t\t  \"^.*STUNT.?1.*$\",\n        \"^.*TAC.?SCAN.*$\",\n        \"^.*MUSIC.*MACHINE.*$\", \t\t  \"^.*MUSCMACH.*$\",\n        \"^.*VONG.*$\",\n        \"^.*WARPLOCK.*$\"\n    ];\n\n    var CRT_MODE_ROM_NAMES = [\n        \"^.*STAR.*CASTLE.*$\",\n        \"^.*SEAWEED.*$\",\n        \"^.*ANDREW.*DAVIE.*$\",          \"^.*DEMO.*IMAGE.*AD.*$\" \t\t// Various 32K Image demos\n    ];\n\n\n    var userROMFormats;\n\n    var HINTS_PREFIX_REGEX = \"^(|.*?(\\\\W|_|%20))\";\n    var HINTS_SUFFIX_REGEX = \"(|(\\\\W|_|%20).*)$\";\n\n    var FORMAT_PRIORITY_BOOST = 50;\n\n};\n\njt.CartridgeCreator = new jt.CartridgeCreatorImpl();\n"
  },
  {
    "path": "src/main/atari/cartridge/CartridgeDatabase.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n// Many thanks to ROM Hunter for sharing the info!\n\n// Version 20170310\n\njt.CartridgeDatabase = {\n\n    uncompress: function () {\n        // Throw away the compressed version, will be garbage collected\n        jt.CartridgeDatabase = JSON.parse(jt.Util.uncompressStringBase64ToString(this.data));\n    },\n\n    data: \"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\"\n\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/CartridgeDatabaseUncompressed.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n// Many thanks to ROM Hunter for sharing the info!\n\njt.CartridgeDatabaseUncompressed = {\n\tversion: 20170310,\n\t\"0685BD0BCB975CEEF7041749A5454A48\":{n:\"11 Sprite Demo (Piero Cavina) (PD)\"},\n\t\"1862FCA4F98E66F363308B859B5863AF\":{n:\"128-in-1 Junior Console (Chip 1 of 4) (1991) (Atari) (PAL)\"},\n\t\"715DD9E0240638D441A3ADD49316C018\":{n:\"128-in-1 Junior Console (Chip 2 of 4) (1991) (Atari) (PAL)\"},\n\t\"0D6B974FE58A1BDD453600401C407856\":{n:\"128-in-1 Junior Console (Chip 3 or 4) (1991) (Atari) (PAL)\"},\n\t\"7F525B07BC98080CC8950F7284E52EDE\":{n:\"128-in-1 Junior Console (Chip 4 of 4) (1991) (Atari) (PAL)\"},\n\t\"7F430C33044E0354815392B53A9A772D\":{n:\"2 Pak Special - Cavern Blaster, City War (1992) (HES) (PAL)\"},\n\t\"7732E4E4CC2644F163D6650DDCC9D9DF\":{n:\"2 Pak Special - Challenge, Spitfallrfing (1990) (HES) (PAL)\"},\n\t\"FD7464EDAA8CC264B97BA0D13E7F0678\":{n:\"2 Pak Special - Challenge, Surfing (1990) (HES) (PAL) [a]\"},\n\t\"8C8A26ED57870DABA8E13162D497BAD1\":{n:\"2 Pak Special - Dolphin, Oink (1990) (HES) (PAL)\"},\n\t\"ED1306436CE237AFC5A7ED3F77134202\":{n:\"2 Pak Special - Dolphin, Pigs 'n' Wolf (1990) (HES) (PAL)\"},\n\t\"F8C1C4A41303BD40B0D6C81BFAF8573B\":{n:\"2 Pak Special - Dungeon Master, Creature Strike (1992) (HES) (PAL)\"},\n\t\"AB434F4C942D6472E75D5490CC4DD128\":{n:\"2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL)\"},\n\t\"5B9C2E0012FBFD29EFD3306359BBFC4A\":{n:\"2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL) [a]\"},\n\t\"2E842C2EE22E9DAD9DF16EED091315C4\":{n:\"2 Pak Special - Motocross, Boom Bang (1990) (HES) (PAL)\"},\n\t\"A94B8CA630F467B574B614808D813919\":{n:\"2 Pak Special - Space Voyage, Fire Alert (1992) (HES) (PAL)\"},\n\t\"02A5FC90A0D183F870E8EEBAC1F16591\":{n:\"2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL)\"},\n\t\"4D2CEF8F19CAFEEC72D142E34A1BBC03\":{n:\"2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL) [a]\"},\n\t\"72FD08DEED1D6195942E0C6F392E9848\":{n:\"2 Pak Special - Wall Defender, Planet Patrol (1990) (HES) (PAL)\"},\n\t\"9C40BF810F761FFC9C1B69C4647A8B84\":{n:\"2 in 1 - Frostbite, River Raid (Unknown)\"},\n\t\"94E3FBC19107A169909E274187247A9D\":{n:\"2-in-1 Freeway and Tennis (Unknown)\"},\n\t\"FA529EC88ECA679F6D5FD0CCB2120E46\":{n:\"20 Sprites at Once Demo 1 (PD)\"},\n\t\"7A93D0C029EAA72236523EEDC3F19645\":{n:\"20 Sprites at Once Demo 2 (PD)\"},\n\t\"6C449DB9BBBD90972AD1932D6AF87330\":{n:\"20 Sprites at Once Demo 3 (PD)\"},\n\t\"BFA58198C6B9CD8062EE76A2B38E9B33\":{n:\"20 Sprites at Once Demo 4 (PD)\"},\n\t\"D2D8C4F1EA7F347C8BCC7D24F45AA338\":{n:\"20 Sprites at Once Demo 5 (PD)\"},\n\t\"AD2E6BFB3B9B9B36BA8BF493CE764C49\":{n:\"2600 Collison Demo 1 (Piero Cavina) (PD)\"},\n\t\"777AECE98D7373998FFB8BC0B5EFF1A2\":{n:\"2600 Collison Demo 2 (Piero Cavina) (PD)\"},\n\t\"EADA0DD61CE13F8317DE774DC1E68604\":{n:\"2600 Digital Clock (Demo 1) (PD)\"},\n\t\"3E5CA1AFAA27C5DA3C54C9942FEC528B\":{n:\"2600 Digital Clock (Demo 2) (PD)\"},\n\t\"F6EFA00AE99AAF33E427B674BCFD834D\":{n:\"2600 Digital Clock (Demo 3) (PD)\"},\n\t\"75E8D8B9E9C5C67C2226DBFD77DCFA7D\":{n:\"2600 Digital Clock (V b1) (PD)\"},\n\t\"5E99AA93D0ACC741DCDA8752C4E813CE\":{n:\"2600 Digital Clock (V b2) (PD)\"},\n\t\"62FFD175CAC3F781EF6E4870136A2520\":{n:\"2600 Digital Clock (V x.xx) (PD)\"},\n\t\"4FAEB04B1B7FB0FA25DB05753182A898\":{n:\"2600 Digital Clock (V x.xx) (PD) [a1]\"},\n\t\"655C84E5B951258C9D20F0BF2B9D496D\":{n:\"2600_2003 Demo (PD)\"},\n\t\"B95A6274CA0E0C773BFDC06B4C3DAA42\":{n:\"3-D Corridor (29-03-2003) (Paul Slocum)\"},\n\t\"6B8FB021BB2E1F1E9BD7EE57F2A8E709\":{n:\"3-D Corridor (29-03-2003) (Paul Slocum) (PD) [a]\"},\n\t\"8D00A38F4C8F8800F1C237215AC243FC\":{n:\"3-D Corridor (Green) (30-03-2003) (AD)\"},\n\t\"7B6F3348DBF71ADA88DB0FDAF7FEEFE0\":{n:\"3-D Corridor (Pink Spiral) (31-03-2003) (AD)\"},\n\t\"B6960BE26BEE87D53BA4E2E71CFE772F\":{n:\"3-D Corridor (Spiral Words) (31-03-2003) (AD)\"},\n\t\"493DAAF9FB1BA450EBA6B8ED53FFB37D\":{n:\"3-D Corridor Demo (27-03-2003) (MP)\"},\n\t\"4947C9DE2E28B2F5F3B0C40CE7E56D93\":{n:\"3-D Corridor Demo 2 (29-03-2003) (MP)\"},\n\t\"0DB4F4150FECF77E4CE72CA4D04C052F\":{n:\"3-D Tic-Tac-Toe (1980) (Atari)\"},\n\t\"F3213A8A702B0646D2EAF9EE0722B51C\":{n:\"3-D Tic-Tac-Toe (1980) (Atari) (4K)\"},\n\t\"E3600BE9EB98146ADAFDC12D91323D0F\":{n:\"3-D Tic-Tac-Toe (1980) (Atari) (PAL)\"},\n\t\"854B68B93E7123A3BE42B5A2A41F75D7\":{n:\"3-D Tic-Tac-Toe (1980) (Atari) (PAL) (4K)\"},\n\t\"7B5207E68EE85B16998BEA861987C690\":{n:\"3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"402B1CA3C230A60FB279D4A2A10FA677\":{n:\"3-D Tic-Tac-Toe (Unknown) (PAL) (4K)\"},\n\t\"291DD47588B9158BEEBE4ACCC3A093A6\":{n:\"32 in 1 Console ROM (02-10-1989) (Atari) (Prototype) (PAL)\"},\n\t\"291BCDB05F2B37CDF9452D2BF08E0321\":{n:\"32 in 1 Game Cartridge (1988) (Atari) (Prototype) (PAL)\"},\n\t\"792B1D93EB1D8045260C840B0688EC8F\":{n:\"3E Bankswitch Test (TIA @ $00)\"},\n\t\"9B150A42FC788960FBB4CBE250259EE2\":{n:\"3E Bankswitch Test (TIA @ $40)\"},\n\t\"703F0F7AF350B0FA29DFE5FBF45D0D75\":{n:\"4 Game in One Dark Green (1983) (BitCorp) (PAL)\"},\n\t\"31BB9B8CEED46CB3E506777A9E65F3CE\":{n:\"4 Game in One Light Green (1983) (BitCorp) (PAL)\"},\n\t\"FE6ABC0F63E31E2646C9C600926B5B7F\":{n:\"4 in 1 (02-19-1987) (Atari) (Prototype)\"},\n\t\"6D218DAFBF5A691045CDC1F67CEB6A8F\":{n:\"6 Digit Score Display (1998) (Robin Harbron) (PD)\"},\n\t\"7465B06B6E25A4A6C6D77D02242AF6D6\":{n:\"8 in 1 (01-16-92) (Atari) (Prototype)\"},\n\t\"2CEFA695DF2ED020899A7DF7BB1E3A95\":{n:\"A-Team (2002) (Manuel Polik) (Hack)\"},\n\t\"DAFC3945677CCC322CE323D1E9930BEB\":{n:\"A-Team (Atari) (Prototype) (PAL)\"},\n\t\"C02E1AFA0671E438FD526055C556D231\":{n:\"A-Team (Atari) (Prototype) (PAL60)\"},\n\t\"C00734A2233EF683D9B6E622AC97A5C8\":{n:\"A-Team, The (03-30-1984) (Atari) (Prototype)\"},\n\t\"CD5AF682685CFECBC25A983E16B9D833\":{n:\"A-Team, The (05-08-1984) (Atari) (Prototype)\"},\n\t\"537ED1E0D80E6C9F752B33EA7ACBE079\":{n:\"A-VCS-tec Challenge (beta 5) (PD)\"},\n\t\"8786C1E56EF221D946C64F6B65B697E9\":{n:\"AKA Space Adventure\"},\n\t\"00F7985C20B8BDF3C557FAC4D3F26775\":{n:\"AStar (NTSC)\"},\n\t\"3FD1F9D66A418C9F787FC5799174DDB7\":{n:\"AStar (PAL)\"},\n\t\"A3FEE8CE15525EA00D45A06F04C215D1\":{n:\"AStar (PAL60)\"},\n\t\"17EE23E5DA931BE82F733917ADCB6386\":{n:\"Acid Drop (1992) (Salu) (PAL)\"},\n\t\"09274C3FC1C43BF1E362FDA436651FD8\":{n:\"Acid Drop (TJ)\"},\n\t\"B9F6FA399B8CD386C235983EC45E4355\":{n:\"Action Force (1983) (Parker Bros) (PAL)\",p:1},\n\t\"D573089534CA596E64EFEF474BE7B6BC\":{n:\"Action Force (1983) (Parker Bros) (PAL) [a]\",p:1},\n\t\"543B4B8FF1D616FA250C648BE428A75C\":{n:\"Adventure (1978) (Warren Robinett) (Hack)\"},\n\t\"157BDDB7192754A45372BE196797F284\":{n:\"Adventure (1980) (Atari)\"},\n\t\"4B27F5397C442D25F0C418CCDACF1926\":{n:\"Adventure (1980) (Atari) (PAL)\"},\n\t\"9BE58A14E055B0E7581FC4D6C2F6B31D\":{n:\"Adventure (Color Scrolling) (Hack)\"},\n\t\"A5B7F420CA6CC1384DA0FED523920D8E\":{n:\"Adventure (New Graphics) (Hack)\"},\n\t\"171CD6B55267573E6A9C2921FB720794\":{n:\"Adventure 34 (Kurt Howe) (Hack)\"},\n\t\"E923001015BEDD7901569F035D9C592C\":{n:\"Adventure II (Hack)\"},\n\t\"E2846AF3E4D172B251AB77CBDD01761E\":{n:\"Adventure Plus (2003) (Steve Engelhardt) (Hack)\"},\n\t\"CA4F8C5B4D6FB9D608BB96BC7EBD26C7\":{n:\"Adventures of TRON (1982) (M Network)\"},\n\t\"06CFD57F0559F38B9293ADAE9128FF88\":{n:\"Adventures on GX-12 (1989) (Telegames) (PAL)\"},\n\t\"35BE55426C1FEC32DFB503B4F0651572\":{n:\"Air Raid (Men-A-Vision) (PAL)\",c:1},\n\t\"A9CB638CD2CB2E8E0643D7A67DB4281C\":{n:\"Air Raiders (1982) (M Network)\"},\n\t\"F066BEA7AB0A37B83C83C924A87C5B67\":{n:\"Air Raiders (1982) (Unknown)\"},\n\t\"DA0FB2A484D0D2D8F79D6E063C94063D\":{n:\"Air Raiders (1982) (Unknown) [a]\"},\n\t\"CF3A9ADA2692BB42F81192897752B912\":{n:\"Air Raiders (Unknown) (PAL)\"},\n\t\"16CB43492987D2F32B423817CDAAF7C4\":{n:\"Air-Sea Battle (1977) (Atari)\"},\n\t\"1D1D2603EC139867C1D1F5DDF83093F1\":{n:\"Air-Sea Battle (1977) (Atari) (4K)\"},\n\t\"0C7926D660F903A2D6910C254660C32C\":{n:\"Air-Sea Battle (1977) (Atari) (PAL)\"},\n\t\"8AAD33DA907BED78B76B87FCEAA838C1\":{n:\"Air-Sea Battle (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"605DCB73D22F4EFDB90EF9DA2F290F7C\":{n:\"Air-Sea Battle (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"98E5E4D5C4DD9A986D30FD62BD2F75AE\":{n:\"Air-Sea Battle (Unknown) (Hack) (4K)\"},\n\t\"E5FCC62E1D73706BE7B895E887E90F84\":{n:\"Air-Sea Battle (Unknown) (PAL) (4K)\"},\n\t\"4D77F291DCA1518D7D8E47838695F54B\":{n:\"Airlock (1982) (Data Age)\"},\n\t\"8C7E5E2329F4F4E06CBCC994A30FD352\":{n:\"Airlock (1982) (Data Age) (Prototype)\"},\n\t\"F1A0A23E6464D954E3A9579C4CCD01C8\":{n:\"Alien (1982) (20th Century Fox)\",c:1},\n\t\"956496F81775DE0B69A116A0D1AD41CC\":{n:\"Alien (CCE)\",c:1},\n\t\"1287535256BF5DFF404839AC9E25C3E7\":{n:\"Alien Pac-Man (PacManPlus) (Hack)\",c:1},\n\t\"E1A51690792838C5C687DA80CD764D78\":{n:\"Alligator People (1983) (20th Century Fox) (Prototype)\"},\n\t\"DF95E4AF466C809619299F49ECE92365\":{n:\"Alpha Beam with Ernie (06-03-1983) (Atari) (Prototype) (PAL)\"},\n\t\"8F5AC5139419C5D49BACC296E342A247\":{n:\"Alpha Beam with Ernie (12-22-1983) (Atari) (Prototype)\"},\n\t\"9E01F7F95CB8596765E03B9A36E8E33C\":{n:\"Alpha Beam with Ernie (1983) (Atari)\"},\n\t\"F2D40C70CF3E1D03BC112796315888D9\":{n:\"Alpha Beam with Ernie (1983) (Atari) (PAL)\"},\n\t\"B0BA51723B9330797985808DB598FC31\":{n:\"Alpha Beam with Ernie (1983) (Atari) (PAL) [a]\"},\n\t\"2A10053FD08664C7CFBBB104386ED77F\":{n:\"Alpha Demo - The Beta Demo (2000) (MP)\"},\n\t\"FDF6680B2B1E8054293A39700A765692\":{n:\"Alpha Demo - The Beta Demo 2 (2000) (MP)\"},\n\t\"26BC2BDF447A17376AEA7EF187FF6E44\":{n:\"Amanda Invaders (PD)\"},\n\t\"51F15B39D9F502C2361B6BA6A73464D4\":{n:\"Amanda Invaders (PD) [a]\"},\n\t\"ACB7750B4D0C4BD34969802A7DEB2990\":{n:\"Amidar (1982) (Parker Bros)\"},\n\t\"056F5D886A4E7E6FDD83650554997D0D\":{n:\"Amidar (1982) (Parker Bros) (PAL)\"},\n\t\"6354F9C7588A27109C66905B0405825B\":{n:\"Amidar DS (2003) (TJ) (Hack)\"},\n\t\"93B9229FC0EA4FB959D604F83F8F603C\":{n:\"Amidar DS (Fast Enemies) (2003) (TJ) (Hack)\"},\n\t\"5BD79139A0C03B63F6F2CF00A7D385D2\":{n:\"An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD)\"},\n\t\"6F74ED915FFE73B524EF0F63819E2A1D\":{n:\"An Exercise In Minimalism (V2) (1999) (Eckhard Stolberg)\"},\n\t\"E39A13B13DC82C5FDBFBBFD55BA1230E\":{n:\"Analog Clock (Additional Frame Info) (V0.0) (20-01-2003) (AD)\"},\n\t\"0AE3497E731CA0BF6A77B23441D9D9F9\":{n:\"Analog Clock (V0.0) (20-01-2003) (AD)\"},\n\t\"335793736CBF6FC99C9359ED2A32A49D\":{n:\"Analog Clock (V0.0) (20-01-2003) (AD) [a]\"},\n\t\"63C5FEF3208BB1424D26CF1AB984B40C\":{n:\"Analog Clock (V0.1) (20-01-2003) (AD)\"},\n\t\"FC9C1652FE3A2CADE6188F4D3692481F\":{n:\"Andrew Davies early notBoulderDash demo (NTSC)\",c:1},\n\t\"4C606235F4EC5D2A4B89139093A69437\":{n:\"Andrew Davies early notBoulderDash demo (PAL)\",c:1},\n\t\"0866E22F6F56F92EA1A14C8D8D01D29C\":{n:\"AndroMan on the Moon (1984) (Western Tech) (Prototype)\"},\n\t\"6672DE8F82C4F7B8F7F1EF8B6B4F614D\":{n:\"Angeln I (Ariola) (PAL)\"},\n\t\"ADF1AFAC3BDD7B36D2EDA5949F1A0FA3\":{n:\"Angriff der Luftflotten (1983) (Quelle) (PAL)\"},\n\t\"AFE4EEFC7D885C277FC0649507FBCD84\":{n:\"Ant Party (32 in 1) (1988) (Atari) (PAL)\",c:1},\n\t\"6B01A519B413F8CFA2F399F4D2841B42\":{n:\"Aphex Invaders (Hack)\"},\n\t\"E73838C43040BCBC83E4204A3E72EEF4\":{n:\"Apples and Dolls (CCE)\",c:1},\n\t\"038E1E79C3D4410DEFDE4BFE0B99CC32\":{n:\"Aquaventure (08-12-1983) (Atari) (Prototype)\"},\n\t\"F69D4FCF76942FCD9BDF3FD8FDE790FB\":{n:\"Aquaventure (CCE)\"},\n\t\"A7B584937911D60C120677FE0D47F36F\":{n:\"Armor Ambush (1982) (M Network)\"},\n\t\"D0AF33865512E9B6900714C26DB5FA23\":{n:\"Armor Ambush (1989) (Telegames) (PAL)\"},\n\t\"C77C35A6FC3C0F12BF9E8BAE48CBA54B\":{n:\"Artillery Duel (1983) (Xonox)\"},\n\t\"589C73BBCD77DB798CB92A992B4C06C3\":{n:\"Artillery Duel (1983) (Xonox) (PAL)\"},\n\t\"D341D39774277CEE6A1D378A013F92AC\":{n:\"Artillery Duel (1983) (Xonox) (PAL) [a]\"},\n\t\"3F039981255691D3859D04EF813A1264\":{n:\"Artillery Duel (1983) (Xonox) [a]\"},\n\t\"3750F2375252B6A20E4628692E94E8B1\":{n:\"Ases do Ar (Dismac)\"},\n\t\"DE78B3A064D374390AC0710F95EDDE92\":{n:\"Assault (1983) (Bomb)\"},\n\t\"327468D6C19697E65AB702F06502C7ED\":{n:\"Aster-Hawk (2002) (Charles Morgan) (Hack)\",c:1},\n\t\"89A68746EFF7F266BBF08DE2483ABE55\":{n:\"Asterix (1983) (Atari)\"},\n\t\"FAEBCB2EF1F3831B2FC1DBD39D36517C\":{n:\"Asterix (1983) (Atari) (PAL)\"},\n\t\"C5C7CC66FEBF2D4E743B4459DE7ED868\":{n:\"Asterix (1983) (Atari) (PAL) [a]\"},\n\t\"47B82D47E491AC7FDB5053A88FCCC832\":{n:\"Asteroid 2 (Atari Freak 1) (Hack)\",c:1},\n\t\"18F299EDB5BA709A64C80C8C9CEC24F2\":{n:\"Asteroid Fire (1983) (Home Vision) (PAL)\"},\n\t\"DD7884B4F93CAB423AC471AA1935E3DF\":{n:\"Asteroids (1981) (Atari)\",c:1},\n\t\"8CF0D333BBE85B9549B1E6B1E2390B8D\":{n:\"Asteroids (1981) (Atari) (PAL)\",c:1},\n\t\"A957DBE7D85EA89133346AD56FBDA03F\":{n:\"Asteroids (1981) (Atari) (PAL) [a1]\",c:1},\n\t\"19ABAF2144B6A7B281C4112CFF154904\":{n:\"Asteroids (1981) (Atari) (PAL) [a2]\",c:1},\n\t\"BB5049E4558DAADE0F87FED69A244C59\":{n:\"Asteroids (1981) (Atari) (PAL) [no copyright]\",c:1},\n\t\"B227175699E372B8FE10CE243AD6DDA5\":{n:\"Asteroids (1981) (Atari) [a1]\",c:1},\n\t\"D563BA38151B8204C9F5C9F58E781455\":{n:\"Asteroids (1981) (Atari) [a2]\",c:1},\n\t\"CCBD36746ED4525821A8083B0D6D2C2C\":{n:\"Asteroids (1981) (Atari) [no copyright]\",c:1},\n\t\"3E4B1137433CC1E617B5508619E13063\":{n:\"Asteroids (Genesis)\",c:1},\n\t\"DF40AF244A8D68B492BFBA9E97DEA4D6\":{n:\"Asteroids 2 (Franlin Cruz) (Hack)\",c:1},\n\t\"2DBDCA3058035D2B40C734DCF06A86D9\":{n:\"Asteroids DC+ (Thomas Jentzsch) (Hack)\",c:1},\n\t\"8DF4BE9DDC54AC363B13DC57CEAF161A\":{n:\"Asteroids SS (Scott Stilphen) (Hack)\",c:1},\n\t\"75169C08B56E4E6C36681E599C4D8CC5\":{n:\"Astroblast (1982) (M Network)\",p:1},\n\t\"170E7589A48739CFB9CC782CBB0FE25A\":{n:\"Astroblast (1982) (M Network) [fixed]\",p:1},\n\t\"46E9428848C9EA71A4D8F91FF81AC9CC\":{n:\"Astroblast (1989) (Telegames) (PAL)\",p:1},\n\t\"8F53A3B925F0FD961D9B8C4D46EE6755\":{n:\"Astrowar (Unknown)\"},\n\t\"E643AAEC9A9E1C8AB7FE1EAE90BC77D7\":{n:\"Asymmetric Playfield (Roger Williams)\"},\n\t\"4B753A97AEE91E4B3E4E02F5E9758C72\":{n:\"Asymmetric Reflected Playfield (Glenn Saunders)\"},\n\t\"A4AA7630E4C0AD7EBB9837D2D81DE801\":{n:\"Atari 2600 Invaders (Hack)\"},\n\t\"D0A379946ED77B1B126230CA68461333\":{n:\"Atari Invaders (Ataripoll) (Hack)\"},\n\t\"D61629BBBE035F45552E31CEF7D591B2\":{n:\"Atari Logo Demo (PD) (PAL)\"},\n\t\"E932F44FAD2A66B6D5FAEC9ADDEC208E\":{n:\"Atari Logo Demo 1 (PD)\"},\n\t\"13D8326BF5648DB4DAFCE45D25E62DDD\":{n:\"Atari Logo Demo 2 (PD)\"},\n\t\"3E49DA621193D2611A4EA152D5D5CA3A\":{n:\"Atari Logo Demo 3 (PD)\"},\n\t\"42E0EC5AB8F5DEBA53E4169FF2A5EFBE\":{n:\"Atari Logo Demo 5 (PD)\"},\n\t\"9526E3DB3BDFBC27989A9CBFD0EE34BF\":{n:\"Atari Logo Demo 6 (PD)\"},\n\t\"5DF32450B9FBCAF43F9D83BD66BD5A81\":{n:\"Atari Logo Playfield Demo (2001) (Eric Ball) (PD)\"},\n\t\"4EDB251F5F287C22EFC64B3A2D095504\":{n:\"Atari VCS Point-of-Purchase ROM (1982) (Atari)\"},\n\t\"3F540A30FDEE0B20AED7288E4A5EA528\":{n:\"Atari Video Cube (1982) (Atari)\"},\n\t\"2CA6445204FFB7686DDEE3E33BA64D5B\":{n:\"AtariVox Test ROM\"},\n\t\"9AD36E699EF6F45D9EB6C4CF90475C9F\":{n:\"Atlantis (1982) (Imagic)\"},\n\t\"ACB962473185D7A652F90ED6591AE13B\":{n:\"Atlantis (1982) (Imagic) (16K)\"},\n\t\"5324CF5B6DC17AF4C64BF8696C39C2C1\":{n:\"Atlantis (1982) (Imagic) (8K)\"},\n\t\"3D2367B2B09C28F1659C082BB46A7334\":{n:\"Atlantis (1982) (Imagic) (PAL)\"},\n\t\"41818738AB1745E879024A17784D71F5\":{n:\"Atlantis (1983) (CCE)\"},\n\t\"0B33252B680B65001E91A411E56E72E9\":{n:\"Atlantis (1983) (CCE) [a]\"},\n\t\"71B193F46C88FB234329855452DFAC5B\":{n:\"Atlantis (1983) (Digitel)\"},\n\t\"3AAD0EF62885736A5B8C6CCAC0DBE00C\":{n:\"Atlantis (1983) (Dynacom)\"},\n\t\"6CEA35DED079863A846159C3A1101CC7\":{n:\"Atlantis (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"A1403FEF01641DCD3980CAC9F24D63F9\":{n:\"Atlantis (Dactari - Milmar)\"},\n\t\"72BDA70C75DFA2365B3F8894BACE9E6A\":{n:\"Atlantis (TJ) (Hack)\"},\n\t\"C4BBBB0C8FE203CBD3BE2E318E55BCC0\":{n:\"Atlantis (Unknown) (PAL) (Hack)\"},\n\t\"AC0DDBCFF34D064009591607746E33B8\":{n:\"Atlantis FH (2003) (TJ) (Hack)\"},\n\t\"826481F6FC53EA47C9F272F7050EEDF7\":{n:\"Atlantis II (1982) (Imagic)\"},\n\t\"A7CF2B9AFDBB3A161BF418DBCF0321DC\":{n:\"Attack Of The Mutant Space Urchins (2002) (Barry Laws Jr.) (Hack)\",c:1},\n\t\"B5110F55ED99D5279F18266D001A8CD5\":{n:\"Auto-mobile Demo (2001) (Eckhard Stolberg)\"},\n\t\"B4F87CE75F7329C18301A2505FE59CD3\":{n:\"Autorennen (Ariola) (PAL)\"},\n\t\"7C757BB151269B2A626C907A22F5DAE7\":{n:\"BMX Air Master (1989) (TNT Games) (PAL)\"},\n\t\"968EFC79D500DCE52A906870A97358AB\":{n:\"BMX Air Master (1990) (Atari)\"},\n\t\"4F89B897444E7C3B36AED469B8836839\":{n:\"BMX Air Master (1990) (Atari) (PAL)\"},\n\t\"4E2C884D04B57B43F23A5A2F4E9D9750\":{n:\"Baby Center Animation (PD)\",c:1},\n\t\"5B124850DE9EEA66781A50B2E9837000\":{n:\"Bachelor Party (1982) (PlayAround)\",p:1,c:1},\n\t\"274D17CCD825EF9C728D68394B4569D2\":{n:\"Bachelorette Party (1982) (Playaround)\",p:1,c:1},\n\t\"8556B42AA05F94BC29FF39C39B11BFF4\":{n:\"Backgammon (1979) (Atari)\",p:1},\n\t\"85B1BCA93E69F13905107CC802A02470\":{n:\"Backgammon (1979) (Atari) (PAL)\",p:1},\n\t\"4E4895C3381AA4220F8C2795D6338237\":{n:\"Backwards Cannonball v1 (Hack)\"},\n\t\"2A33E21447BF9E13DCFED85077FF6B40\":{n:\"Backwards Cannonball v2 (Hack)\"},\n\t\"FCEA12625C071DDC49F4E409F4038C60\":{n:\"Balls! (16-09-2002) (Fabrizio Zavagli)\",c:1},\n\t\"805F9A32EF97AC25F999A25014DC5C23\":{n:\"Balthazar (SnailSoft)\",c:1},\n\t\"00CE0BDD43AED84A983BEF38FE7F5EE3\":{n:\"Bank Heist (1983) (20th Century Fox)\"},\n\t\"83B8C01C72306D60DD9B753332EBD276\":{n:\"Bank Heist (208 in 1) (Unknown) (PAL)\"},\n\t\"E9C71F8CDBA6037521C9A3C70819D171\":{n:\"Bank Heist (PAL)\"},\n\t\"C2A37F1C7603C5FD97DF47D6C562ABFA\":{n:\"Bar-Score Demo (2001) (Roger Williams)\"},\n\t\"73A710E621D44E97039D640071908AEF\":{n:\"Barber Pole Demo (PD)\"},\n\t\"F8240E62D8C0A64A61E19388414E3104\":{n:\"Barnstorming (1982) (Activision)\"},\n\t\"A29FC854838E08C247553A7D883DD65B\":{n:\"Barnstorming (1982) (Activision) (16K)\"},\n\t\"9AEB5206C5BF974892A9CC59F1478DB3\":{n:\"Barnstorming (1982) (Activision) (8K)\"},\n\t\"E7DD8C2E6C100044002C1086D02B366E\":{n:\"Barnstorming (1982) (Activision) (PAL)\"},\n\t\"5AE73916FA1DA8D38CEFF674FA25A78A\":{n:\"Barnstorming (CCE)\"},\n\t\"9AD362179C2EEA4EA115C7640B4B003E\":{n:\"Barnstorming (Unknown) (PAL)\"},\n\t\"DCEC46A98F45B193F07239611EB878C2\":{n:\"Bars and Text Demo (PD)\"},\n\t\"D7891B0FAA4C7F764482762D0ED427A5\":{n:\"Bars and Text Demo 2 (PD)\"},\n\t\"600D48EEF5C0EC27DB554B7328B3251C\":{n:\"Bars and Text Demo 3 (PD)\"},\n\t\"C469151655E333793472777052013F4F\":{n:\"Base Attack (Unknown) (Hack)\"},\n\t\"034C1434280B0F2C9F229777D790D1E1\":{n:\"Baseball (1989) (Telegames) (PAL)\"},\n\t\"9848B5EF7A0C02FE808B920A2AC566D2\":{n:\"Baseball (2002) (Skyworks)\"},\n\t\"A41450333F8DD0E96E5E9F0AF3770AE9\":{n:\"Basic Math (208 in 1) (Unknown) (PAL)\"},\n\t\"7EAB0284A0CD1043461D446A08D08CEC\":{n:\"Basic Math (Jone Yuan) (4K)\"},\n\t\"9F48EEB47836CF145A15771775F0767A\":{n:\"Basic Programming (1979) (Atari)\",c:1},\n\t\"B061E98A4C854A672AADEFA233236E51\":{n:\"Basic Programming (1979) (Atari) (PAL)\",c:1},\n\t\"AB4AC994865FB16EBB85738316309457\":{n:\"Basketball (1978) (Atari)\"},\n\t\"E13C7627B2E136B9C449D9E8925B4547\":{n:\"Basketball (1978) (Atari) (4K)\"},\n\t\"218C0FE53DFAAA37F3C823F66EAFD3FC\":{n:\"Basketball (1978) (Atari) (PAL)\"},\n\t\"F4AB6BD5F80D8988141EDDE4C84B23B5\":{n:\"Basketball (1978) (Atari) (PAL) (4K)\"},\n\t\"77BE57D872E3F5B7ECF8D19D97F73281\":{n:\"Basketball (208 in 1) (Unknown) (PAL)\"},\n\t\"5D132D121AABC5235DD039DFC46AA024\":{n:\"Basketball (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"1228C01CD3C4B9C477540C5ADB306D2A\":{n:\"Basketball (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"32D1260EA682E1BB10850FA94C04EC5F\":{n:\"Basketball (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"5C0227AD63300670A647FCEBF595EA37\":{n:\"Battle for Naboo (Josh) (Hack)\"},\n\t\"E434C0E161DD3C3FB435EB6BAD2E182C\":{n:\"Battlezone (05-02-1983) (Atari) (Prototype)\"},\n\t\"5B85E987E2B1618769D97BA9182333D0\":{n:\"Battlezone (05-12-1983) (Atari) (Prototype)\"},\n\t\"41F252A66C6301F1E8AB3612C19BC5D4\":{n:\"Battlezone (1983) (Atari)\"},\n\t\"FBE554AA8F759226D251BA6B64A9CCE4\":{n:\"Battlezone (1983) (Atari) (PAL)\"},\n\t\"E38DC1F81A02E325562CD285123F579B\":{n:\"Battlezone (1983) (Atari) (PAL) [a1]\"},\n\t\"2319922DF4D0C820B3E5F15FAA870CC3\":{n:\"Battlezone (1983) (Atari) (PAL) [a]\"},\n\t\"6015A9CEF783E97E98A2AA2CF070AE06\":{n:\"Battlezone TC (Thomas Jentzsch) (Hack)\"},\n\t\"38C362DCD5CAD5A62E73AE52631BD9D8\":{n:\"Baubles (14-11-2001) (Jake Patterson) (PD)\"},\n\t\"3EB1E34A4F0EEC36F12E7336BADCECF2\":{n:\"Baubles (V0.001) (2001) (Jake Patterson) (PD)\"},\n\t\"599CBF919D47A05AF975AD447DF29497\":{n:\"Baubles (V0.002) (2001) (Jake Patterson) (PD)\"},\n\t\"FBFEBEE9C14694719E3EDA4854DC42EE\":{n:\"Baubles 3 (Jake Patterson) (PD)\"},\n\t\"79AB4123A83DC11D468FB2108EA09E2E\":{n:\"Beamrider (1984) (Activision)\"},\n\t\"FEC0C2E2AB0588ED20C750B58CF3BAA3\":{n:\"Beamrider (1984) (Activision) (PAL)\"},\n\t\"F4204FC92D17ED4CB567C40361AD58F1\":{n:\"Beanie Baby Bash (Inky) (Hack)\"},\n\t\"D0B9DF57BFEA66378C0418EC68CFE37F\":{n:\"Beany Bopper (1982) (20th Century Fox)\"},\n\t\"6A9E0C72FAB92DF70084ECCD9061FDBD\":{n:\"Beany Bopper (1983) (CCE)\"},\n\t\"235436AB0832370E73677C9C6F0C8B06\":{n:\"Beast Invaders (Double Shot) (Hack)\"},\n\t\"4D0A28443F7DF5F883CF669894164CFA\":{n:\"Beast Invaders (Hack)\"},\n\t\"B4F31EA8A6CC9F1FD4D5585A87C3B487\":{n:\"Beat 'Em & Eat 'Em (1982) (Mystique) (PAL)\",p:1},\n\t\"59E96DE9628E8373D1C685F5E57DCF10\":{n:\"Beat 'Em & Eat 'Em (1982) (PlayAround)\",p:1},\n\t\"6C25F58FD184632CA76020F589BB3767\":{n:\"Beat 'Em & Eat 'Em (1983) (Dynacom)\",p:1},\n\t\"EE6665683EBDB539E89BA620981CB0F6\":{n:\"Berenstain Bears (1983) (Coleco)\"},\n\t\"073D7AFF37B7601431E4F742C36C0DC1\":{n:\"Bermuda (Unknown) (PAL)\"},\n\t\"B8ED78AFDB1E6CFE44EF6E3428789D5F\":{n:\"Bermuda Triangle (1982) (Data Age)\"},\n\t\"36C993DC328933E4DD6374A8FFE224F4\":{n:\"Bermuda Triangle (1983) (Gameworld) (PAL)\"},\n\t\"BCEF7880828A391CF6B50D5A6DCEF719\":{n:\"Bermuda, The (Rainbow Vision) (PAL)\"},\n\t\"CF3C2725F736D4BCB84AD6F42DE62A41\":{n:\"Bermuda, The (Rainbow Vision) (PAL) [a]\"},\n\t\"136F75C4DD02C29283752B7E5799F978\":{n:\"Berzerk (1982) (Atari)\"},\n\t\"0805366F1B165A64B6D4DF20D2C39D25\":{n:\"Berzerk (1982) (Atari) (PAL)\"},\n\t\"FAC28963307B6E85082CCD77C88325E7\":{n:\"Berzerk (CCE)\"},\n\t\"4B205EF73A5779ACC5759BDE3F6D33ED\":{n:\"Berzerk (Unknown) (PAL)\"},\n\t\"490E3CC59D82F85FAE817CDF767EA7A0\":{n:\"Berzerk (Unknown) (PAL) [a]\"},\n\t\"BE41463CD918DAEF107D249F8CDE3409\":{n:\"Berzerk (Voice Enhanced) (Hack)\"},\n\t\"5C618A50DFA23DAAC97BA459B9FF5206\":{n:\"Berzerk Renegade (2002) (Steve Engelhardt) (Hack)\",c:1},\n\t\"4C4CE802CBFD160F7B3EC0F13F2A29DF\":{n:\"Beta Demo (V1.1) (26-09-2002) (MP)\"},\n\t\"63A7445B1D3046D3CDCDBD488DCA38D9\":{n:\"Better Space Invaders (1999) (Rob Kudla) (Hack)\"},\n\t\"012020625A3227815E47B37FD025E480\":{n:\"Better Space Invaders (1999) (Rob Kudla) (Hack) [a]\"},\n\t\"4D5F6DB55F7F44FD0253258E810BDE21\":{n:\"Betterblast (Fabrizio Zavagli) (Hack)\"},\n\t\"7CD900E9ECCBB240FE9C37FA28F917B5\":{n:\"Bi! Bi! (Jone Yuan) (PAL)\"},\n\t\"F714A223954C28ECCF459295517DCAE6\":{n:\"Big - Move This Demo (PD)\"},\n\t\"16CC6D1B4DDCE51C767A1BA8E5FF196C\":{n:\"Big - Move This Demo 2 (PD)\",c:1},\n\t\"151FA3218D8D7600114EB5BCD79C85CB\":{n:\"Big Bird's Egg Catch (05-02-1983) (Atari) (Prototype)\"},\n\t\"0B17ED42984000DA8B727CA46143F87A\":{n:\"Big Bird's Egg Catch (05-17-1983) (Atari) (Prototype)\"},\n\t\"AFD2CF258D51AE4965EE21ABBA3627AB\":{n:\"Big Bird's Egg Catch (12-08-1982) (Atari) (Prototype)\"},\n\t\"1802CC46B879B229272501998C5DE04F\":{n:\"Big Bird's Egg Catch (1983) (Atari)\"},\n\t\"F283CC294ECE520C2BADF9DA20CFC025\":{n:\"Big Bird's Egg Catch (1983) (Atari) (PAL)\"},\n\t\"2CB42CF62B2F25F59F909B5447821B14\":{n:\"Big Bird's Egg Catch (1983) (Atari) (PAL) [a]\"},\n\t\"F8FF34B53D86F55BD52D7A520AF6D1DC\":{n:\"Big Dig (04-04-2003) (CT)\"},\n\t\"7CCF350354EE15CD9B85564A2014B08C\":{n:\"Big Dig (13-04-2003) (CT)\"},\n\t\"23E4CA038ABA11982E1694559F3BE10F\":{n:\"Big Dig (V3) (20-10-2002) (CT)\"},\n\t\"93C9F9239A4E5C956663DD7AFFA70DA2\":{n:\"Billard (1983) (Quelle) (PAL)\",c:1},\n\t\"BD1BD6F6B928DF17A702DEF0302F46F4\":{n:\"Binary To Decimal Routine (2001) (AD)\"},\n\t\"84535AFB9A69712EC0AF4947329E08B8\":{n:\"Bingo (1983) (CCE) (PAL)\"},\n\t\"10F0ECAF962AEF1FC28ABED870B01B65\":{n:\"Bionic Breakthrough (06-22-1984) (Atari) (Prototype)\"},\n\t\"F0541D2F7CDA5EC7BAB6D62B6128B823\":{n:\"Bionic Breakthrough (1984) (Atari) (Prototype)\"},\n\t\"AA8E4B2CB8A78FFE6B20580033F4DEC9\":{n:\"Bitmap Demo (13-01-2003) (AD)\"},\n\t\"282A77841CB3D33AF5B56151ACBA770E\":{n:\"Black Hole (1983) (Quelle) (PAL)\"},\n\t\"CBEAFD37F15E0DDDB0540DBE15C545A4\":{n:\"Black and White Fast Scolling Demo (PD)\"},\n\t\"0A981C03204AC2B278BA392674682560\":{n:\"Blackjack (1977) (Atari)\",p:1},\n\t\"B2761EFB8A11FC59B00A3B9D78022AD6\":{n:\"Blackjack (1977) (Atari) (4K)\",p:1},\n\t\"FF3BD0C684F7144AEAA18758D8281A78\":{n:\"Blackjack (1977) (Atari) (PAL)\",p:1},\n\t\"FF7627207E8AA03730C35C735A82C26C\":{n:\"Blackjack (32 in 1) (1988) (Atari) (PAL)\",p:1},\n\t\"D726621C676552AFA503B7942AF5AFA2\":{n:\"Blackjack (32 in 1) (1988) (Atari) (PAL) (4K)\",p:1},\n\t\"575C0FB61E66A31D982C95C9DEA6865C\":{n:\"Blackjack (Unknown) (PAL)\",p:1},\n\t\"19A9D3F9FA1B1358FB53009444247AAF\":{n:\"Blackjack (Unknown) (PAL) (4K)\",p:1},\n\t\"93420CC4CB1AF1F2175C63E52EC18332\":{n:\"Blair Witch Project (Tim Snider) (Hack)\"},\n\t\"07C76F2D88552D20AD2C0ED7AEF406C6\":{n:\"Blob (Cody Pittman) (Hack)\"},\n\t\"1086FF69F82B68D6776634F336FB4857\":{n:\"Bloody Human Freeway (Activision) (Prototype)\"},\n\t\"FCF8E306F6615F74FEBA5CB25550038C\":{n:\"Blue Dot Demo (PD)\"},\n\t\"2942680C47BEB9BF713A910706FFABFE\":{n:\"Blue Line Demo (PD)\"},\n\t\"B7F184013991823FC02A6557341D2A7A\":{n:\"Blue Rod Demo (PD)\"},\n\t\"DAD2AB5F66F98674F12C92ABCFBF3A20\":{n:\"Blue and White Sprite Demo (PD)\"},\n\t\"33D68C3CD74E5BC4CF0DF3716C5848BC\":{n:\"Blueprint (1983) (CBS Electronics)\",c:1},\n\t\"2432F33FD278DEA5FE6AE94073627FCC\":{n:\"Blueprint (1983) (CBS Electronics) (PAL)\",c:1},\n\t\"345488D3B014B684A181108F0EF823CB\":{n:\"Blueprint (1983) (CBS Electronics) (Prototype)\"},\n\t\"6FBD05B0AD65B2A261FA154B34328A7F\":{n:\"Boardgame Demo (20-12-2002) (CT)\"},\n\t\"EBCB084A91D41865B2C1915779001CA7\":{n:\"Bob Is Going Home (JVP)\"},\n\t\"521F4DD1EB84A09B2B19959A41839AAD\":{n:\"Bobby Is Going Home (1983) (BitCorp)\"},\n\t\"2823364702595FEEA24A3FBEE138A243\":{n:\"Bobby Is Going Home (1983) (BitCorp) (PAL)\"},\n\t\"CCB56107FF0492232065B85493DAA635\":{n:\"Bobby Is Going Home (1983) (BitCorp) (PAL) [demo cart]\"},\n\t\"075069AD80CDE15ECA69E3C98BD66714\":{n:\"Bobby Is Going Home (1983) (CCE)\"},\n\t\"3CBDF71BB9FD261FBC433717F547D738\":{n:\"Bobby Is Going Home (1983) (CCE) (PAL)\"},\n\t\"F2F59629D7341C97644405DAEAC08845\":{n:\"Bobby Is Going Home (Jone Yuan)\"},\n\t\"2F2F9061398A74C80420B99DDECF6448\":{n:\"Bobby Is Going Home (Rentacom)\"},\n\t\"48E5C4AE4F2D3B62B35A87BCA18DC9F5\":{n:\"Bobby geht nach Hause (1983) (Quelle) (PAL)\"},\n\t\"AFE776DB50E3378CD6F29C7CDD79104A\":{n:\"Bobby is Going Home (TJ)\"},\n\t\"C59633DBEBD926C150FB6D30B0576405\":{n:\"Bogey Blaster (1989) (Telegames)\"},\n\t\"B438A6AA9D4B9B8F0B2DDB51323B21E4\":{n:\"Bogey Blaster (1989) (Telegames) (PAL)\"},\n\t\"A5855D73D304D83EF07DDE03E379619F\":{n:\"Boggle (08-07-1978) (Atari) (Prototype)\",c:1},\n\t\"14C2548712099C220964D7F044C59FD9\":{n:\"Boing! (1983) (First Star Software)\",c:1},\n\t\"C471B97446A85304BBAC021C57C2CB49\":{n:\"Boing! (1983) (First Star Software) (PAL)\",c:1},\n\t\"0E08CD2C5BCF11C6A7E5A009A7715B6A\":{n:\"Boing! (PD) [a1]\"},\n\t\"5D8FB14860C2F198472B233874F6B0C9\":{n:\"Boing! (PD) [a2]\"},\n\t\"956B99511C0F47B3A11D18E8B7AC8D47\":{n:\"Bones (Arcade Golf Hack)\"},\n\t\"E5359CBBBFF9C6D7FE8AEFF5FB471B46\":{n:\"Boom Bang (1983) (CCE)\"},\n\t\"7F54FA6AA824001AF415503C313262F2\":{n:\"Boom Bang (HES) (PAL)\"},\n\t\"A2AAE759E4E76F85C8AFEC3B86529317\":{n:\"Boom Bang (Unknown)\"},\n\t\"2825F4D068FEBA6973E61C84649489FE\":{n:\"Boom Bang (Unknown) (PAL)\"},\n\t\"02E3F4BA156FB578BEF7D7A0BF3400C1\":{n:\"Booster (Junkosoft) (PD)\"},\n\t\"5BC9998B7E9A970E31D2CB60E8696CC4\":{n:\"Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)\",c:1},\n\t\"05F11FB2E45C4E47424D3CB25414D278\":{n:\"Boring (NTSC) (AD)\"},\n\t\"9B246683F44C963A50E41D6B485BEE77\":{n:\"Boring (PAL) (AD)\"},\n\t\"F0CACAE1D1B79EE92F0DC035F42E0560\":{n:\"Boring Donkey Kong (Hack)\"},\n\t\"CE17325834BF8B0A0D0D8DE08478D436\":{n:\"Boring Freeway (Hack)\"},\n\t\"1733772165D7B886A94E2B4ED0F74CCD\":{n:\"Boring Journey Escape (Hack)\"},\n\t\"613ABF596C304EF6DBD8F3351920C37A\":{n:\"Boring Pac-Man (Hack)\"},\n\t\"96670D0BF3610DA2AFCABD8E21D8EABF\":{n:\"Boring Pitfall (Hack)\"},\n\t\"E8E7B9BDF4BF04930C2BCAA0278EE637\":{n:\"Boring Taz (Hack)\"},\n\t\"8A49CF1785E3DEA2012D331A3AD476E1\":{n:\"Boulderdash (10 Blocks Wide) (02-04-2003) (AD)\"},\n\t\"E0DE3773F5B867795DB557BE7B8A703E\":{n:\"Boulderdash (13 Blocks Wide) (02-04-2003) (AD)\"},\n\t\"29DFA26B7988AF9984D617708E4FC6E2\":{n:\"Boulderdash Demo (05-04-2003) (AD)\"},\n\t\"68CD2ADC6B1FC9A1F263AB4561112F30\":{n:\"Boulderdash Demo (09-12-2002) (TJ)\",c:1},\n\t\"D90205E29BB73A4CDF28EA7662BA0C3C\":{n:\"Boulderdash Demo (Brighter Version) (09-12-2002) (TJ)\",c:1},\n\t\"B2D1E63F7F22864096B7B6C154151D55\":{n:\"Bounce! (17-03-2003) (Fabrizio Zavagli)\",c:1},\n\t\"7EAF009A892F03D90682DC1E67E85F07\":{n:\"Bounce! (18-03-2003) (Fabrizio Zavagli)\",c:1},\n\t\"C9B7AFAD3BFD922E006A6BFC1D4F3FE7\":{n:\"Bowling (1979) (Atari)\"},\n\t\"A28D872FC50FA6B64EB35981D0F4BB8D\":{n:\"Bowling (1979) (Atari) (4K)\"},\n\t\"2AA5E56D36C2E58B6F2856109F2099A9\":{n:\"Bowling (1979) (Atari) (4K) [a]\"},\n\t\"969B968383D9F0E9D8FFD1056BCAEF49\":{n:\"Bowling (1979) (Atari) (PAL)\"},\n\t\"82C25D1C35E6AC6F893D1D7C2FC2F9C8\":{n:\"Bowling (1979) (Atari) (PAL) (4K)\"},\n\t\"11E7E0D9437EC98FA085284CF16D0EB4\":{n:\"Bowling (208 in 1) (Unknown) (PAL)\"},\n\t\"F69BB58B815A6BDCA548FA4D5E0D5A75\":{n:\"Bowling (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"4B71197153D651480830638CB6A03249\":{n:\"Bowling (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"32ECB5A652EB73D287E883EEA751D99C\":{n:\"Bowling (Dactar - Milmar)\"},\n\t\"58746219D8094EDFF869F0F5C2AEAAD5\":{n:\"Bowling (Jone Yuan) (4K)\"},\n\t\"7F07CD2E89DDA5A3A90D3AB064BFD1F6\":{n:\"Boxen (Ariola) (PAL)\"},\n\t\"C3EF5C4653212088EDA54DC91D787870\":{n:\"Boxing (1980) (Activision)\"},\n\t\"88F74EC75EF696E7294B7B6AC5CA465F\":{n:\"Boxing (1980) (Activision) (16K)\"},\n\t\"277CCA62014FCEEBB46C549BAC25A2E3\":{n:\"Boxing (1980) (Activision) (4K)\"},\n\t\"5A80B857EB8B908AB477EC4EF902EDC8\":{n:\"Boxing (1980) (Activision) (8K)\"},\n\t\"25F2E760CD7F56B88AAC88D63757D41B\":{n:\"Boxing (1980) (Activision) (PAL)\"},\n\t\"C2BCD8F2378C3779067F3A551F662BB7\":{n:\"Boxing (1980) (Activision) (PAL) (4K)\"},\n\t\"A8B3EA6836B99BEA77C8F603CF1EA187\":{n:\"Boxing (1983) (CCE)\"},\n\t\"2C45C3EB819A797237820A1816C532EB\":{n:\"Boxing (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"B77468D586957D1B7FB4CCCDA2684F47\":{n:\"Boxing (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"CFB3260C603B0341D49DDFC94051EC10\":{n:\"Boxing (Dactari - Milmar)\"},\n\t\"34FD4FCB40FF5BABCE67F8B806D5969C\":{n:\"Boxing (Dactari) (4K)\"},\n\t\"AFC194534C1B346609EF05EFF6D3CEF6\":{n:\"Boxing (Jone Yuan)\"},\n\t\"FD6E507B5DF68BEEEDDEAF696B6828FA\":{n:\"Boxing (Unknown) (PAL)\"},\n\t\"1CCA2197D95C5A41F2ADD49A13738055\":{n:\"Brain Games (1978) (Atari)\"},\n\t\"CB9626517B440F099C0B6B27CA65142C\":{n:\"Brain Games (1978) (Atari) (4K)\"},\n\t\"F280976D69D6E27A48506BD6BAD11DCD\":{n:\"Brain Games (1978) (Atari) (PAL)\"},\n\t\"2162266B906C939B35C84FF9A0F50AD1\":{n:\"Brain Games (1978) (Atari) (PAL) (4K)\"},\n\t\"4DBF47C7F5AC767A3B07843A530D29A5\":{n:\"Breaking News (2002) (Ric Pryor) (Hack)\"},\n\t\"F34F08E5EB96E500E851A80BE3277A56\":{n:\"Breakout (1978) (Atari)\",p:1},\n\t\"C738FC3F5AAE1E8F86F7249F6C82AC81\":{n:\"Breakout (1978) (Atari) (16K)\",p:1},\n\t\"9A25B3CFE2BBB847B66A97282200CCA2\":{n:\"Breakout (1978) (Atari) (4K)\",p:1},\n\t\"6C76FE09AA8B39EE52035E0DA6D0808B\":{n:\"Breakout (1978) (Atari) (PAL)\",p:1},\n\t\"C5FE45F2734AFD47E27CA3B04A90213C\":{n:\"Breakout (1978) (Atari) (PAL) (4K)\",p:1},\n\t\"4DF6124093CCB4F0B6C26A719F4B7706\":{n:\"Breakout (1978) (Atari) [a]\",p:1},\n\t\"CFD6A8B23D12B0462BAF6A05EF347CD8\":{n:\"Bridge (1980) (Activision)\"},\n\t\"413C925C5FDCEA62842A63A4C671A5F2\":{n:\"Bridge (1980) (Activision) [fixed]\"},\n\t\"18A970BEA7AC4D29707C8D5CD559D03A\":{n:\"Bridge (208 in 1) (Unknown) (PAL)\"},\n\t\"428B2D36F5D716765460701F7016AC91\":{n:\"Brooni (2001) (Andrew Wallace) (PD)\"},\n\t\"A537879D8E82E1061D3AD800479D3B84\":{n:\"Brooni (2001) (Andrew Wallace) (PD) (PAL)\"},\n\t\"1CF59FC7B11CDBCEFE931E41641772F6\":{n:\"Buck Rogers - Planet of Zoom (1983) (Sega)\",c:1},\n\t\"CD88EF1736497288C4533BCCA339F881\":{n:\"Buck Rogers - Planet of Zoom (1983) (Sega) (PAL)\",c:1},\n\t\"68597264C8E57ADA93BE3A5BE4565096\":{n:\"Bugs (1982) (Data Age)\",p:1},\n\t\"E61210293B14C9C4ECC91705072C6A7E\":{n:\"Bugs (1983) (Gameworld) (PAL)\",p:1},\n\t\"A3486C0B8110D9D4B1DB5D8A280723C6\":{n:\"Bugs Bunny (08-04-1983) (Atari) (Prototype)\"},\n\t\"FA4404FABC094E3A31FCD7B559CDD029\":{n:\"Bugs Bunny (1983) (Atari) (Prototype)\"},\n\t\"9E792A59F8795664CBAAFF1BA152D731\":{n:\"Bullet Demo (20-12-2002) (CT)\"},\n\t\"76F53ABBBF39A0063F24036D6EE0968A\":{n:\"Bump 'n' Jump (1983) (M Network)\"},\n\t\"9295570A141CDEC18074C55DC7229D08\":{n:\"Bump 'n' Jump (1989) (Telegames) (PAL)\"},\n\t\"AA1C41F86EC44C0A44EB64C332CE08AF\":{n:\"Bumper Bash (1983) (Spectravideo)\"},\n\t\"1BF503C724001B09BE79C515ECFCBD03\":{n:\"Bumper Bash (1983) (Spectravideo) (PAL)\"},\n\t\"0443CFA9872CDB49069186413275FA21\":{n:\"BurgerTime (1983) (M Network)\"},\n\t\"B42DF8D92E3118DC594CECD575F515D7\":{n:\"Burning Desire (1982) (Mystique) (PAL)\",c:1},\n\t\"19D6956FF17A959C48FCD8F4706A848D\":{n:\"Burning Desire (1982) (PlayAround)\",c:1},\n\t\"572D0A4633D6A9407D3BA83083536E0F\":{n:\"Busy Police (Funvision)\"},\n\t\"8905D54F48B8024FC718ED643E9033F7\":{n:\"Cabbage Patch Kids (05-24-1984) (Coleco) (Prototype)\"},\n\t\"E1486C7822C07117B4F94A32E5ED68C1\":{n:\"Cabbage Patch Kids (06-14-1984) (Coleco) (Prototype)\"},\n\t\"80E5400470AC788143E6DB9BC8DD88CF\":{n:\"Cabbage Patch Kids (06-XX-1984) (Coleco) (Prototype)\"},\n\t\"4605A00F5B44A9CBD5803A7A55DE150E\":{n:\"Cabbage Patch Kids (07-03-1984) (Coleco) (Prototype)\"},\n\t\"7D726FA494F706784BAFEB1B50D87F23\":{n:\"Cabbage Patch Kids (07-27-1984) (Coleco) (Prototype)\"},\n\t\"F4DABD5BCC603E8464A478208037D423\":{n:\"Cabbage Patch Kids (08-21-1984) (Coleco) (Prototype)\"},\n\t\"1FA7A42C2C7D6B7A0C6A05D38C7508F4\":{n:\"Cabbage Patch Kids (09-04-1984) (Coleco) (Prototype)\"},\n\t\"5D0E8A25CBD23E76F843C75A86B7E15B\":{n:\"Cabbage Patch Kids (09-07-1984) (Coleco) (Prototype)\"},\n\t\"66FCF7643D554F5E15D4D06BAB59FE70\":{n:\"Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype)\"},\n\t\"F6B5EBB65CBB2981AF4D546C470629D7\":{n:\"Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype) [a]\"},\n\t\"7F6533386644C7D6358F871666C86E79\":{n:\"Cakewalk (1983) (CommaVid)\"},\n\t\"0060A89B4C956B9C703A59B181CB3018\":{n:\"Cakewalk (1983) (CommaVid) (PAL)\"},\n\t\"0EEBFB60D437796D536039701EC43845\":{n:\"Cakewalk (Fabrizio Zavagli)\"},\n\t\"9AB72D3FD2CC1A0C9ADB504502579037\":{n:\"California Games (1988) (Epyx)\"},\n\t\"8068E07B484DFD661158B3771D6621CA\":{n:\"California Games (1988) (Epyx) (PAL)\"},\n\t\"85478BB289DFA5C63726B9153992A920\":{n:\"Candi (Hack)\"},\n\t\"0E0808227EF41F6825C06F25082C2E56\":{n:\"Candi (Hack) [a]\"},\n\t\"FEEDCC20BC3CA34851CD5D9E38AA2CA6\":{n:\"Canyon Bomber (1979) (Atari)\",p:1},\n\t\"3051B6071CB26377CD428AF155E1BFC4\":{n:\"Canyon Bomber (1979) (Atari) (4K)\",p:1},\n\t\"457F4AD2CDA5F4803F122508BFBDE3F5\":{n:\"Canyon Bomber (208 in 1) (Unknown) (PAL)\"},\n\t\"151C33A71B99E6BCFFB34B43C6F0EC23\":{n:\"Care Bears (1983) (Parker Bros) (Prototype)\"},\n\t\"DE29E46DBEA003C3C09C892D668B9413\":{n:\"Carnival (1982) (CBS Electronics) (PAL)\"},\n\t\"028024FB8E5E5F18EA586652F9799C96\":{n:\"Carnival (1982) (Coleco)\"},\n\t\"8ED5A746C59571FEB255EAA7D6D0CF98\":{n:\"Carnival (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"5409D20C1AEA0B89C56993AEC5DC5740\":{n:\"Carnival Shooter (PD)\"},\n\t\"B816296311019AB69A21CB9E9E235D12\":{n:\"Casino (1979) (Atari)\",p:1},\n\t\"2BC26619E31710A9884C110D8430C1DA\":{n:\"Casino (1979) (Atari) (PAL)\",p:1},\n\t\"681206A6BDE73E71C19743607E96C4BB\":{n:\"Casino (Unknown) (PAL)\",p:1},\n\t\"76F66CE3B83D7A104A899B4B3354A2F2\":{n:\"Cat Trax (1983) (UA Limited) (Prototype)\",c:1},\n\t\"D071D2EC86B9D52B585CC0382480B351\":{n:\"Cat Trax (1983) (UA Limited) (Prototype) [a]\",c:1},\n\t\"B7903268E235310DC346A164AF4C7022\":{n:\"Cat Trax (Thomas Jentzsch) (PAL60)\",c:1},\n\t\"A2DE0FC85548871279ED2A3C1325C13E\":{n:\"Cat and Mouse (George Veeder) (Hack)\"},\n\t\"E2904748DA63DFEFC8816652B924B642\":{n:\"Catch Time (Jone Yuan)\"},\n\t\"9E192601829F5F5C2D3B51F8AE25DBE5\":{n:\"Cathouse Blues (1982) (PlayAround)\",c:1},\n\t\"8726C17EE7B559CB7BF2330D20972AD0\":{n:\"Cave Demo (21-04-2003) (CT)\"},\n\t\"91C2098E88A6B13F977AF8C003E0BCA5\":{n:\"Centipede (1982) (Atari)\"},\n\t\"17D000A2882F9FDAA8B4A391AD367F00\":{n:\"Centipede (1982) (Atari) (PAL)\"},\n\t\"2F11BA54609777E2C6A5DA9B302C98E8\":{n:\"Centipede (1982) (Atari) (Prototype) (PAL)\"},\n\t\"10958CD0A1A81D599005F1797AB0E51D\":{n:\"Centipede 2k (2000) (PD) (Hack)\"},\n\t\"713FDE2AF865B6EC464DFD72E2EBB83E\":{n:\"Challenge (208 in 1) (Unknown) (PAL)\",c:1},\n\t\"9905F9F4706223DADEE84F6867EDE8E3\":{n:\"Challenge (HES) (PAL)\"},\n\t\"4311A4115FB7BC68477C96CF44CEBACF\":{n:\"Challenge (Unknown)\"},\n\t\"73158EA51D77BF521E1369311D26C27B\":{n:\"Challenge (Zellers)\"},\n\t\"5D799BFA9E1E7B6224877162ACCADA0D\":{n:\"Challenge of.... Nexar, The (1982) (Spectravision)\"},\n\t\"1DA2DA7974D2CA73A823523F82F517B3\":{n:\"Challenge of.... Nexar, The (1982) (Spectravision) (PAL)\"},\n\t\"45C4413DD703B9CFEA49A13709D560EB\":{n:\"Challenge of.... Nexar, The (Jone Yuan) (Hack)\"},\n\t\"3D9C2FCCF8B11630762FF00811C19277\":{n:\"Challenge of.... Nexar, The (Unknown) (PAL)\"},\n\t\"3E33AC10DCF2DFF014BC1DECF8A9AEA4\":{n:\"Chase the Chuckwagon (1983) (Spectravideo)\",c:1},\n\t\"3F5A43602F960EDE330CD2F43A25139E\":{n:\"Checkers (1980) (Activision)\"},\n\t\"7EDC8FCB319B3FB61CAC87614AFD4FFA\":{n:\"Checkers (1980) (Activision) (4K)\"},\n\t\"191AC4EEC767358EE3EC3756C120423A\":{n:\"Checkers (208 in 1) (Unknown) (PAL)\"},\n\t\"BCE93984B920E9B56CF24064F740FE78\":{n:\"Checkers (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"499B612F6544AE71D4915AA63E403E10\":{n:\"Checkers (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"3D7749FB9C2F91A276DFE494495234C5\":{n:\"Checkers (Jone Yuan)\"},\n\t\"04E737C9D53CD84BFD5EE679954E4706\":{n:\"Checkers (Jone Yuan) (4K)\"},\n\t\"E5ECD78EDD24326A968809DECBC7B916\":{n:\"Cheese (Dragonfire Beta) (05-21-1982) (Imagic) (Prototype)\"},\n\t\"749FEC9918160921576F850B2375B516\":{n:\"China Syndrome (1982) (Spectravision)\",c:1},\n\t\"E150F0D14F013A104B032305C0CE23EF\":{n:\"China Syndrome (1982) (Spectravision) (PAL)\",c:1},\n\t\"36F9A953EBDD9A8BE97CCF27A2041903\":{n:\"Chinese Character Demo (PD)\"},\n\t\"C1CB228470A87BEB5F36E90AC745DA26\":{n:\"Chopper Command (1982) (Activision)\"},\n\t\"25D4BE3309B89583C6B39D9F93BF654F\":{n:\"Chopper Command (1982) (Activision) (16K)\"},\n\t\"51F211C8FC879391FEE26EDFA7D3F11C\":{n:\"Chopper Command (1982) (Activision) (8K)\"},\n\t\"114C599454D32F74C728A6E1F71012BA\":{n:\"Chopper Command (1982) (Activision) (PAL)\"},\n\t\"85A4133F6DCF4180E36E70AD0FCA0921\":{n:\"Chopper Command (1983) (CCE)\"},\n\t\"FFDC0EB3543404EB4C353FBDDDFA33B6\":{n:\"Chopper Command (1983) (CCE) [a]\"},\n\t\"DA66D75E4B47FAB99733529743F86F4F\":{n:\"Chopper Command (1983) (Digitel)\"},\n\t\"C2C7A11717E255593E54D0ACAF653EE5\":{n:\"Chopper Command (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"1CAD3B56CC0E6E858554E46D08952861\":{n:\"Chopper Command (Jone Yuan)\"},\n\t\"F8811D45A9935CCA90C62F924712F8E6\":{n:\"Chopper Command (Jone Yuan) (Hack)\"},\n\t\"B9F9C0FED0DB08C34346317F3957A945\":{n:\"Chopper Command (SuperVision) (PAL)\"},\n\t\"ACB6787B938079F4E74313A905EC3CEB\":{n:\"Chronocolor Donkey Kong (PD)\"},\n\t\"EE456542B93FA8D7E6A8C689B5A0413C\":{n:\"Chronocolor Donkey Kong Clean (PD)\"},\n\t\"1D5EAC85E67B8CFF1377C8DBA1136929\":{n:\"Chronocolor Donkey Kong Sideways (PD)\"},\n\t\"D605ED12F4EAAAEC3DCD5AA909A4BAD7\":{n:\"Chronocolor Frame Demo (10-01-2003) (AD)\"},\n\t\"DB339AEA2B65B84C7CFE0EEAB11E110A\":{n:\"Chronocolor Frame Demo 2 (10-01-2003) (AD)\"},\n\t\"A30ECE6DC4787E474FBC4090512838DC\":{n:\"Circus (Zellers)\"},\n\t\"A7B96A8150600B3E800A4689C3EC60A2\":{n:\"Circus Atari (1980) (Atari)\",p:1},\n\t\"A29DF35557F31DFEA2E2AE4609C6EBB7\":{n:\"Circus Atari (1980) (Atari) (Joystick)\"},\n\t\"30E0AB8BE713208AE9A978B34E9E8E8C\":{n:\"Circus Atari (1980) (Atari) (PAL)\",p:1},\n\t\"EFFFAFC17B7CB01B9CA35324AA767364\":{n:\"Circus Atari (Unknown)\"},\n\t\"324CB4A749BCAC4F3DB9DA842B85D2F7\":{n:\"Climber 5 (01-05-2003) (Dennis Debro)\"},\n\t\"9D4BC7C6FE9A7C8C4AA24A237C340ADB\":{n:\"Climber 5 (16-04-2003) (Dennis Debro)\"},\n\t\"87B460DF21B7BBCFC57B1C082C6794B0\":{n:\"Climber 5 (20-03-2003) (Dennis Debro)\"},\n\t\"D82C8A58098A6B46C5B81C16180354D1\":{n:\"Climber 5 (30-10-2002) (Dennis Debro) (Prototype)\"},\n\t\"1E587CA91518A47753A28217CD4FD586\":{n:\"Coco Nuts (1982) (Telesys)\"},\n\t\"5846B1D34C296BF7AFC2FA05BBC16E98\":{n:\"Codebreaker (1978) (Atari)\"},\n\t\"83F50FA0FBAE545E4B88BB53B788C341\":{n:\"Codebreaker (1978) (Atari) (4K)\"},\n\t\"A47E26096DE6F6487BF5DD2D1CCED294\":{n:\"Codebreaker (1978) (Atari) (PAL)\"},\n\t\"71D005B60CF6E608D04EFB99A37362C3\":{n:\"Codebreaker (1978) (Atari) (PAL) (4K) [a]\"},\n\t\"551A64A945D7D6ECE81E9C1047ACEDBC\":{n:\"Coffee Cup Soccer (Matthias Jaap) (Hack)\"},\n\t\"76A9BF05A6DE8418A3EBC7FC254B71B4\":{n:\"Color Bar Generator (1984) (VideoSoft)\"},\n\t\"E5A6E0BB7D56E2F08B237E15076E5699\":{n:\"Color Table Display Helper (PD)\"},\n\t\"C221607529CABC93450EF25DBAC6E8D2\":{n:\"Color Test (26-09-2002) (Eckhard Stolberg)\"},\n\t\"58C396323EA3E85671E34C98EB54E2A4\":{n:\"Color Tweaker (B. Watson)\"},\n\t\"F6DAEBC0424FA0F8D9AAF26C86DF50F4\":{n:\"Color Tweaker (V1.0) (2001) (B. Watson)\"},\n\t\"35AE903DFF7389755AD4A07F2FB7400C\":{n:\"Colored Wall Demo (PD)\"},\n\t\"97A9BB5C3679D67F5C2CD17F30B85D95\":{n:\"Colors (1980) (Atari) (Prototype) (PAL)\"},\n\t\"3F9431CC8C5E2F220B2AC14BBC8231F4\":{n:\"Colors Demo (PD)\"},\n\t\"CC74DDB45D7BC4D04C2E6F1907416699\":{n:\"Colour Display Programme (1997) (Chris Cracknell)\"},\n\t\"9989F974C3CF9C641DB6C8A70A2A2267\":{n:\"Colours Selector (Eckhard Stolberg)\"},\n\t\"3C72DDAF41158FDD66E4F1CB90D4FD29\":{n:\"Comando Suicida (Dismac)\"},\n\t\"4C8832ED387BBAFC055320C05205BC08\":{n:\"Combat (1977) (Atari)\"},\n\t\"AC05C0E53A5E7009DDD75ED4B99949FC\":{n:\"Combat (1977) (Atari) (4K)\"},\n\t\"BE35D8B37BBC03848A5F020662A99909\":{n:\"Combat (1977) (Atari) (4K) [a]\"},\n\t\"E8AA36E3D49E9BFA654C25DCC19C74E6\":{n:\"Combat (1977) (Atari) (PAL)\"},\n\t\"0EF64CDBECCCB7049752A3DE0B7ADE14\":{n:\"Combat (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"E2ECCBBE963F80F291CB1F18803BF557\":{n:\"Combat (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"E94632B0D863DD76459D689A9865BB33\":{n:\"Combat (Jone Yuan) (4K)\"},\n\t\"331938989F0F33CA39C10AF4C09FF640\":{n:\"Combat - Tank AI (19-04-2003) (Zach Matley)\"},\n\t\"176D3FBA7D687F2B23158098E103C34A\":{n:\"Combat AI (16-02-2003) (Zach Matley)\"},\n\t\"5385CF2A04DE1D36AB55C73174B84DB0\":{n:\"Combat Rock (PD) (Hack)\"},\n\t\"E63EFDFDA9A4003DCD77A854A781A06A\":{n:\"Combat Rock (PD) (Hack) [a]\"},\n\t\"461029AB23800833E9645BE3E472D470\":{n:\"Combat TC (v0.1)\"},\n\t\"B0C9CF89A6D4E612524F4FD48B5BB562\":{n:\"Combat Two (1982) (Atari) (Prototype)\"},\n\t\"E25E173740F7ECC0E23025445C4591F3\":{n:\"Comitoid (Greg Zumwalt)\"},\n\t\"99F7C6C26046BBE95F1C604B25DA8360\":{n:\"Comitoid beta 2 (SnailSoft)\"},\n\t\"755FED16B48E81DE05130708A905D00D\":{n:\"Comitoid beta 3 (SnailSoft)\"},\n\t\"E4E9125A8741977583776729359614E1\":{n:\"Comitoid beta 4 (SnailSoft)\"},\n\t\"5D2CC33CA798783DEE435EB29DEBF6D6\":{n:\"Commando (1988) (Activision)\"},\n\t\"DE1E9FB700BAF8D2E5AE242BFFE2DBDA\":{n:\"Commando (1988) (Activision) (PAL)\"},\n\t\"61631C2F96221527E7DA9802B4704F93\":{n:\"Commando (1988) (Activision) [different logo]\"},\n\t\"F457674CEF449CFD85F21DB2B4F631A7\":{n:\"Commando Raid (1982) (U.S. Games)\"},\n\t\"5864CAB0BC21A60BE3853B6BCD50C59F\":{n:\"Commando Raid (208 in 1) (Unknown) (PAL)\"},\n\t\"5F316973FFD107F7AB9117E93F50E4BD\":{n:\"Commando Raid (Unknown) (PAL)\"},\n\t\"2C8835AED7F52A0DA9ADE5226EE5AA75\":{n:\"Communist Mutants from Space (1982) (Arcadia)\"},\n\t\"E2C89F270F72CD256ED667507FA038A2\":{n:\"Communist Mutants from Space (1982) (Arcadia) (PAL)\"},\n\t\"C4B73C35BC2F54B66CD786F55B668A82\":{n:\"Communist Mutants from Space (1982) (Arcadia) [a]\"},\n\t\"D541B20EAE221A8EE321375E5971E766\":{n:\"Communist Mutants from Space (Preview) (1982) (Arcadia)\"},\n\t\"7BA07D4EA18BF3B3245C374D8720AD30\":{n:\"Communist Mutants from Space (Preview) (1982) (Arcadia) (PAL)\"},\n\t\"B98CC2C6F7A0F05176F74F0F62C45488\":{n:\"CompuMate (1983) (Spectravideo)\",c:1},\n\t\"E7F005DDB6902C648DE098511F6AE2E5\":{n:\"CompuMate (1983) (Spectravideo) (PAL)\",c:1},\n\t\"6A2C68F7A77736BA02C0F21A6BA0985B\":{n:\"Computer Chess (07-07-1978) (Atari) (Prototype)\"},\n\t\"B49331B237C8F11D5F36FE2054A7B92B\":{n:\"Condor Attack (Unknown) (PAL)\"},\n\t\"F965CC981CBB0822F955641F8D84E774\":{n:\"Confrontation (1983) (Answer) (Prototype)\",c:1},\n\t\"00B7B4CBEC81570642283E7FC1EF17AF\":{n:\"Congo Bongo (1983) (Sega)\"},\n\t\"335A7C5CFA6FEE0F35F5824D1FA09AED\":{n:\"Congo Bongo (1983) (Sega) (PAL)\"},\n\t\"D078D25873C5B99F78FA267245A2AF02\":{n:\"Congo Bongo (1983) (Sega) [a]\"},\n\t\"C2FBEF02B6EEA37D8DF3E91107F89950\":{n:\"Conquest Of Mars (NTSC)\"},\n\t\"85BBEFB90E16BF386B304C1E9A1F6084\":{n:\"Conquest Of Mars (PAL60)\"},\n\t\"A81B29177F258494B499FBAC69789CEF\":{n:\"Console Wars (Greg Thompson) (Hack)\"},\n\t\"57C5B351D4DE021785CF8ED8191A195C\":{n:\"Cookie Monster Munch (1983) (Atari)\"},\n\t\"A0297C4788F9E91D43E522F4C561B4AD\":{n:\"Cookie Monster Munch (1983) (Atari) (PAL)\"},\n\t\"798B8921276EEC9E332DFCB47A2DBB17\":{n:\"Cookie Monster Munch (1983) (Atari) (PAL) [a]\"},\n\t\"01E5C81258860DD82F77339D58BC5F5C\":{n:\"Corrida da Matematica (CCE)\"},\n\t\"6A3B0C33CF74B1E213A629E3C142B73C\":{n:\"Cory The Interviewer (Cody Pittman) (Hack)\"},\n\t\"EEB92F3F46DF841487D1504F2896D61A\":{n:\"Corys Adventure (Cody Pittman) (Hack)\"},\n\t\"AB5BF1EF5E463AD1CBB11B6A33797228\":{n:\"Cosmic Ark (1982) (Imagic)\"},\n\t\"C5124E7D7A8C768E5A18BDE8B54AEB1D\":{n:\"Cosmic Ark (1982) (Imagic) (PAL)\"},\n\t\"0FD72A13B3B6103FC825A692C71963B4\":{n:\"Cosmic Ark (1982) (Imagic) (PAL) [selectable starfield]\"},\n\t\"98EF1593624B409B9FB83A1C272A0AA7\":{n:\"Cosmic Ark (1983) (CCE)\"},\n\t\"69DF0411D4D176E558017F961F5C5849\":{n:\"Cosmic Ark (1983) (CCE) [a]\"},\n\t\"7D903411807704E725CF3FAFBEB97255\":{n:\"Cosmic Ark (Reaction) (1982) (Imagic) [selectable starfield]\"},\n\t\"72D0ACB5DE0DB662DE0360A6FC59334D\":{n:\"Cosmic Ark (Unknown) (PAL)\"},\n\t\"05D61B925D3D2474BAB83F0A79BB5DF1\":{n:\"Cosmic Ark Stars (1997) (Eckhard Stolberg)\"},\n\t\"00CE76AD69CDC2FA36ADA01AE092D5A6\":{n:\"Cosmic Avenger (4 Game in One) (1983) (BitCorp) (PAL)\"},\n\t\"133B56DE011D562CBAB665968BDE352B\":{n:\"Cosmic Commuter (1984) (Activision)\"},\n\t\"BA657D940A11E807FF314BBA2C8B389B\":{n:\"Cosmic Commuter (1984) (Activision) (16K)\"},\n\t\"59734E1CC41822373845A09C51E6BA21\":{n:\"Cosmic Commuter (1984) (Activision) (8K)\"},\n\t\"5F1B7D5FA73AA071BA0A3C2819511505\":{n:\"Cosmic Commuter (CCE)\"},\n\t\"8E879AA58DB41EDB67CBF318B77766C4\":{n:\"Cosmic Commuter (Thomas Jentzsch) (PAL60)\"},\n\t\"F367E58667A30E7482175809E3CEC4D4\":{n:\"Cosmic Corridor (1983) (ZiMAG)\"},\n\t\"3C853D864A1D5534ED0D4B325347F131\":{n:\"Cosmic Creeps (1982) (Telesys)\",c:1},\n\t\"E2CA84A2BB63D1A210EBB659929747A9\":{n:\"Cosmic Creeps (1982) (Telesys) (PAL)\",c:1},\n\t\"5835A78A88F97ACEA38C964980B7DBC6\":{n:\"Cosmic Creeps (Unknown) (PAL)\",c:1},\n\t\"E5F17B3E62A21D0DF1CA9AEE1AA8C7C5\":{n:\"Cosmic Swarm (1982) (CommaVid)\",c:1},\n\t\"9DEC0BE14D899E1AAC4337ACEF5AB94A\":{n:\"Cosmic Swarm (1982) (CommaVid) (4K)\",c:1},\n\t\"2A2F46B3F4000495239CBDAD70F17C59\":{n:\"Cosmic Swarm (1982) (CommaVid) (PAL)\",c:1},\n\t\"3E22C7EAF6459B67388602E4BEBBB3A8\":{n:\"Cosmic Swarm (1982) (CommaVid) (PAL) (4K)\"},\n\t\"8AF58A9B90B25907DA0251EC0FACF3B8\":{n:\"Cosmic Swarm (Jone Yuan)\"},\n\t\"1B0F3D7AF668EEEA38DDD6182D8F48FB\":{n:\"Cosmic Swarm (Jone Yuan) (4K)\",c:1},\n\t\"36547BC6FAA5132B87504E18D088E1D7\":{n:\"Cosmic Swarm (Unknown) (PAL) (4K)\",c:1},\n\t\"6C91AC51421CB9FC72C9833C4F440D65\":{n:\"Cosmic Town (1983) (ITT Family Games) (PAL)\"},\n\t\"4981CEFE5493EA512284E7F9F27D1E54\":{n:\"Cosmic War (1983) (Home Vision) (PAL)\"},\n\t\"BE561B286B6432CAC71BCCBAE68002F7\":{n:\"Counter Demo (PD)\"},\n\t\"FE67087F9C22655CE519616FC6C6EF4D\":{n:\"Crack'ed (11-28-1988) (Atari) (Prototype)\"},\n\t\"A184846D8904396830951217B47D13D9\":{n:\"Crackpots (1983) (Activision)\"},\n\t\"88ED87C011F699DD27321DBE404DB6C8\":{n:\"Crackpots (1983) (Activision) (16K)\"},\n\t\"5A17E30E6E911E74CCD7B716D02B16C6\":{n:\"Crackpots (1983) (Activision) (8K)\"},\n\t\"3F3AD2765C874CA13C015CA6A44A40A1\":{n:\"Crackpots (1983) (CCE)\"},\n\t\"3091AF0EF1A61E801F4867783C21D45C\":{n:\"Crackpots (1983) (CCE) [a]\"},\n\t\"13448EB5BA575E8D7B8D5B280EA6788F\":{n:\"Crackpots (Digivision)\"},\n\t\"606C2C1753051E03C1F1AC096C9D2832\":{n:\"Crackpots (Jone Yuan)\"},\n\t\"F3C431930E035A457FE370ED4D230659\":{n:\"Crackpots (Unknown) (PAL)\"},\n\t\"FB88C400D602FE759AE74EF1716EE84E\":{n:\"Crash Dive (1983) (20th Century Fox)\"},\n\t\"0CEBB0BB45A856B23F56D21CE7D1BC34\":{n:\"Crash Dive (1983) (20th Century Fox) (PAL)\"},\n\t\"9072C142728A3A3D994956D03BFACBA2\":{n:\"Crash Dive (Fabrizio Zavagli) (PAL60)\"},\n\t\"55EF7B65066428367844342ED59F956C\":{n:\"Crazy Climber (1982) (Atari)\"},\n\t\"4A7EEE19C2DFB6AEB4D9D0A01D37E127\":{n:\"Crazy Valet (Hozer Video Games)\"},\n\t\"C17BDC7D14A36E10837D039F43EE5FA3\":{n:\"Cross Force (1982) (Spectravision)\"},\n\t\"8F88309AFAD108936CA70F8B2B084718\":{n:\"Cross Force (1982) (Spectravision) (PAL)\"},\n\t\"8372EEC01A08C60DBED063C5524CDFB1\":{n:\"Cross Force (Unknown) (PAL)\"},\n\t\"8CD26DCF249456FE4AEB8DB42D49DF74\":{n:\"Crossbow (1987) (Atari)\"},\n\t\"7E4783A59972AE2CD8384F231757EA0B\":{n:\"Crossbow (1987) (Atari) (PAL)\"},\n\t\"384F5FBF57B5E92ED708935EBF8A8610\":{n:\"Crypts of Chaos (1982) (20th Century Fox)\"},\n\t\"F12AFBFFA080DD3B2801DD14D4837CF6\":{n:\"Crystal Castles (01-04-1984) (Atari) (Prototype)\",c:1},\n\t\"1C6EB740D3C485766CADE566ABAB8208\":{n:\"Crystal Castles (1984) (Atari)\"},\n\t\"CA7ABC774A2FA95014688BC0849EEE47\":{n:\"Crystal Castles (1984) (Atari) (PAL)\"},\n\t\"C68A6BAFB667BAD2F6D020F879BE1D11\":{n:\"Crystal Castles (1984) (Atari) (Prototype)\"},\n\t\"A6127F470306EED359D85EB4A9CF3C96\":{n:\"Crystal Castles (1984) (Atari) [a]\"},\n\t\"0ABF64CA504A116ADCA80F77F85E00FB\":{n:\"Cube Conquest (Billy Eno) (PD)\"},\n\t\"58E313E2B5613B2439B5F12BB41E3EEF\":{n:\"Cube Conquest (Demo Interlace) (Billy Eno) (PD)\",c:1},\n\t\"F1929BB9B5DB22D98DD992AA3FE72920\":{n:\"Cube Conquest (Improved Interlace) (Billy Eno) (PD)\",c:1},\n\t\"36A701C60A9F9768D057BC2A83526A80\":{n:\"Cube Conquest (Interlaced) (Billy Eno) (PD)\",c:1},\n\t\"292F2446A0325B7B423E88A2EBFEB5A0\":{n:\"Cube Conquest (Non Interlaced) (Billy Eno) (PD)\",c:1},\n\t\"6FA0AC6943E33637D8E77DF14962FBFC\":{n:\"Cubicolor (1982) (Imagic) (Prototype)\"},\n\t\"F74AD642552385C3DAA203A2A6FC2291\":{n:\"Cubis (1997) (Eckhard Stolberg)\"},\n\t\"D2C957DD7746521B51BB09FDE25C5774\":{n:\"Cubis (6K) (1997) (Eckhard Stolberg)\"},\n\t\"281FF9BD0470643853DE5CBD6D9E17F5\":{n:\"Cubis (EM) (1997) (Eckhard Stolberg)\"},\n\t\"64CA518905311D2D9AEB56273F6CAA04\":{n:\"Cubo Magico (CCE)\"},\n\t\"58513BAE774360B96866A07CA0E8FD8E\":{n:\"Custer's Revenge (1982) (Mystique)\"},\n\t\"50200F697AEEF38A3CE31C4F49739551\":{n:\"Custer's Revenge (1982) (Mystique) (PAL60)\"},\n\t\"D57EB282D7540051BC9B5427CF966F03\":{n:\"Custer's Viagra (Atari Troll) (Hack)\"},\n\t\"93EB1795C8B1065B1B3D62BB9EC0CCDC\":{n:\"Custer's Viagra (JSK) (Hack)\"},\n\t\"211F76DFF0B7DAD3F6FCAC9D938EE61A\":{n:\"Custer's Viagra (JSK) (Hack) [a]\"},\n\t\"5355F80CACF0E63A49CBF4ADE4E27034\":{n:\"Cute Dead Things House (Christian Samuel) (Hack)\"},\n\t\"60358EDF0C2CC76B1E549E031E50E130\":{n:\"Cyber Goth Galaxian (Manuel Polik) (Hack)\"},\n\t\"52615AE358A68DE6E76467E95EB404C7\":{n:\"DJdsl-wopd (PD)\",c:1},\n\t\"2B42DA79A682ED6E2D735FACBF70107E\":{n:\"DKjr Improved (Hack)\"},\n\t\"B719ADA17771A8D206C7976553825139\":{n:\"DUP Space Invaders (Ron Corcoran) (Hack)\"},\n\t\"929E8A84ED50601D9AF8C49B0425C7EA\":{n:\"Dancing Plate (1982) (BitCorp) (PAL)\",c:1},\n\t\"ECE463ABDE92E8B89BCD867EC71751B8\":{n:\"Dancing Plate (1982) (Puzzy) (PAL)\",c:1},\n\t\"F48735115EC302BA8BB2D2F3A442E814\":{n:\"Dancing Plate (Unknown) (PAL)\",c:1},\n\t\"2D1CF85FBC732856BF76470CD4060F4A\":{n:\"Daredevil (V1) (Stunt_Cycle_Rules!) (PD)\"},\n\t\"CD8FA2E9F6255EF3D3B9B5A4F24A54F7\":{n:\"Daredevil (V2) (Stunt_Cycle_Rules!) (PD)\"},\n\t\"585F73010E205AE5B04EE5C1A67E632D\":{n:\"Daredevil (V3) (Stunt_Cycle_Rules!) (PD)\"},\n\t\"A422194290C64EF9D444DA9D6A207807\":{n:\"Dark Cavern (1982) (M Network)\"},\n\t\"106855474C69D08C8FFA308D47337269\":{n:\"Dark Chambers (1988) (Atari)\",c:1},\n\t\"0D5AF65AD3F19558E6F8E29BF2A9D0F8\":{n:\"Dark Chambers (1988) (Atari) (PAL)\",c:1},\n\t\"951E8CEC7A1A1D6C01FD649E7FF7743A\":{n:\"Dark Chambers (1988) (Atari) (Prototype) (PAL)\"},\n\t\"DBA270850AE997969A18EE0001675821\":{n:\"Dark Mage (Greg Troutman) (PD) (4K)\",c:1},\n\t\"6333EF5B5CBB77ACD47F558C8B7A95D3\":{n:\"Dark Mage (Greg Troutman) (PD) (8K)\",c:1},\n\t\"6CD506509E8FD5627F55603780E862A8\":{n:\"Dark Mage (SuperCharger) (Greg Troutman) (PD)\",c:1},\n\t\"2B71A59A53BE5883399917BF582B7772\":{n:\"Dark Mage (final beta) (Greg Troutman) (PD)\",c:1},\n\t\"1345E972DBE08EA3E70850902E20E1A5\":{n:\"Dark Mage (rough beta) (Greg Troutman) (PD)\",c:1},\n\t\"C1F209D80F0624DADA5866CE05DD3399\":{n:\"Deadly Discs (1989) (Telegames) (PAL)\"},\n\t\"E4C00BEB17FDC5881757855F2838C816\":{n:\"Deadly Duck (1982) (20th Century Fox)\"},\n\t\"80CD42881E670E4B74A9CCD10D0D7B2E\":{n:\"Deadly Duck (1982) (20th Century Fox) [a]\"},\n\t\"4E15DDFD48BCA4F0BF999240C47B49F5\":{n:\"Death Trap (1983) (Avalon Hill)\",c:1},\n\t\"AC7C2260378975614192CA2BC3D20E0B\":{n:\"Decathlon (1983) (Activision)\"},\n\t\"883258DCD68CEFC6CD4D40B1185116DC\":{n:\"Decathlon (1983) (Activision) (PAL)\"},\n\t\"525F2DFC8B21B0186CFF2568E0509BFC\":{n:\"Decathlon (1983) (Activision) [fixed]\"},\n\t\"BF52327C2197D9D2C4544BE053CADED1\":{n:\"Decathlon (HES) (PAL) (16K)\"},\n\t\"E1029676EDB3D35B76CA943DA7434DA8\":{n:\"Defender (10-30-1981) (Atari) (Prototype)\"},\n\t\"0F643C34E40E3F1DAAFD9C524D3FFE64\":{n:\"Defender (1982) (Atari)\"},\n\t\"E4BFF1D5DF70163C0428A1EAD309C22D\":{n:\"Defender (1982) (Atari) (PAL)\"},\n\t\"808C3B1E60EE0E7C65205FA4BD772221\":{n:\"Defender (CCE)\"},\n\t\"6596B3737AE4B976E4AADB68D836C5C7\":{n:\"Defender (Digivision)\"},\n\t\"35B10A248A7E67493EC43AEB9743538C\":{n:\"Defender (Dor-x) (Hack)\"},\n\t\"3C4223316C835CEAAD619651E25DF0F9\":{n:\"Defender (Genesis)\"},\n\t\"047AC3B9FAEA64522B7A23C4465A7AA8\":{n:\"Defender (Unknown) (PAL)\"},\n\t\"CE82A675C773FF21E0FFC0A4D1C90A71\":{n:\"Defender 2 (Genesis)\"},\n\t\"6F3E3306DA2AA6E74A5E046FF43BF028\":{n:\"Defender Arcade (Genesis)\"},\n\t\"3A771876E4B61D42E3A3892AD885D889\":{n:\"Defender II (1988) (Atari)\"},\n\t\"5F786B67E05FB9985B77D4BEB35E06EE\":{n:\"Defender II (1988) (Atari) (PAL)\"},\n\t\"278531CC31915747018D22145823D2C9\":{n:\"Defender MegaDrive (PAL) (Genesis)\"},\n\t\"039CF18B459D33B8A8FCA31D06C4C244\":{n:\"Demo Image Series #0 (12-02-2003) (AD)\"},\n\t\"A4AB331E8768EAFDC20CE8B0411FF77A\":{n:\"Demo Image Series #1 - Sam (19-02-2003) (AD)\"},\n\t\"EA86176B27AB0DA8CCE8F0179884BFAA\":{n:\"Demo Image Series #10 - It's Art (28-02-2003) (AD)\"},\n\t\"678C1D71A1616D9D022F03D8545B64BB\":{n:\"Demo Image Series #11 - Donald And Mario (28-02-2003) (AD)\"},\n\t\"CB8399DC0D409FF1F531EF86B3B34953\":{n:\"Demo Image Series #12 - Luigi And Mario (01-03-2003) (AD)\"},\n\t\"83F05ECECAE8BE59BA1E51135F4BDCBF\":{n:\"Demo Image Series #13 - Mario (4K Interleaved Chronocolour) (05-03-2003) (AD)\"},\n\t\"3025BDC30B5AEC9FB40668787F67D24C\":{n:\"Demo Image Series #14 - Two Marios (4K Interleaved Chronocolour Vertical Movement) (05-03-2003) (AD)\"},\n\t\"25710BDE8FA181B0C5CF0846B983BEC1\":{n:\"Demo Image Series #15 - Three Marios (NTSC) (06-03-2003) (AD)\"},\n\t\"FB0C32EF7AF5B45486DB663510094BE8\":{n:\"Demo Image Series #15 - Three Marios (NTSC) (Non-Interleave) (06-03-2003) (AD)\"},\n\t\"8D8B7D7B983F75DEBBDAAC651E814768\":{n:\"Demo Image Series #15 - Three Marios (PAL) (06-03-2003) (AD)\"},\n\t\"14DBB3686DD31964332DC2EF0C55CAD0\":{n:\"Demo Image Series #15 - Three Marios (PAL) (Non-Interleave) (06-03-2003) (AD)\"},\n\t\"EDE7E8BF865B0AFB4744F86D13624F9A\":{n:\"Demo Image Series #2 - Clown (19-02-2003) (AD)\"},\n\t\"02066B17F29082412C6754C1A2D6302E\":{n:\"Demo Image Series #3 - Baboon (19-02-2003) (AD)\"},\n\t\"C1B1049B88BCD98437D8872D1D62BA31\":{n:\"Demo Image Series #4 - Donald (19-02-2003) (AD)\"},\n\t\"BB6A5A2F7B67BEE5D1F237F62F1E643F\":{n:\"Demo Image Series #5 - Animegirl (19-02-2003) (AD)\"},\n\t\"A47878A760F5FA3AA99F95C3FDC70A0B\":{n:\"Demo Image Series #5 - Baboon (19-02-2003) (AD)\"},\n\t\"373B8A081ACD98A895DB0CB02DF35673\":{n:\"Demo Image Series #5 - Boofly (19-02-2003) (AD)\"},\n\t\"7CD379DA92C93679F3B6D2548617746A\":{n:\"Demo Image Series #5 - Clown (19-02-2003) (AD)\"},\n\t\"CD38AD19F51B1048D8E5E99C86A2A655\":{n:\"Demo Image Series #5 - Flag (19-02-2003) (AD)\"},\n\t\"A0D502DC8B90B1D7DAA5F6EFFB10D349\":{n:\"Demo Image Series #5 - Sam (19-02-2003) (AD)\"},\n\t\"A310494AD5BA2B5B221A30D7180A0336\":{n:\"Demo Image Series #6 - Mario (19-02-2003) (AD)\"},\n\t\"B451307B8B5E29F1C5F2CF064F6C7227\":{n:\"Demo Image Series #6 - Mario (Fixed) (26-02-2003) (AD)\"},\n\t\"D1B4075925E8D3031A7616D2F02FDD1F\":{n:\"Demo Image Series #7 - Two Marios (27-02-2003) (AD)\"},\n\t\"5C1B1AA78B7609D43C5144C3B3B60ADF\":{n:\"Demo Image Series #8 - Two Marios (Different Interlacing) (27-02-2003) (AD)\"},\n\t\"C8C7DA12F087E8D16D3E6A21B371A5D3\":{n:\"Demo Image Series #9 - Genius (28-02-2003) (AD)\"},\n\t\"D09935802D6760AE58253685FF649268\":{n:\"Demolition Herby (1983) (Telesys)\",c:1},\n\t\"7DFD100BDA9ABB0F3744361BC7112681\":{n:\"Demolition Herby (1983) (Telesys) (PAL)\",c:1},\n\t\"4A6BE79310F86F0BEBC7DFCBA4D74161\":{n:\"Demolition Herby (Unknown) (PAL)\",c:1},\n\t\"F0E0ADDC07971561AB80D9ABE1B8D333\":{n:\"Demon Attack (1982) (Imagic)\"},\n\t\"4901C05068512828367FDE3FB22199FE\":{n:\"Demon Attack (1982) (Imagic) (PAL)\"},\n\t\"B12A7F63787A6BB08E683837A8ED3F18\":{n:\"Demon Attack (1982) (Imagic) [fixed]\"},\n\t\"B24F6A5820A4B7763A3D547E3E07441D\":{n:\"Demon Attack (1983) (CCE)\"},\n\t\"9718B85AC5A55CBC7348963C63FFA35A\":{n:\"Demon Attack (Robby)\"},\n\t\"BAC28D06DFC03D3D2F4A7C13383E84EE\":{n:\"Demon Attack (Supergame)\"},\n\t\"110AC8ECAF1B69F41BC94C59DFCB8B2D\":{n:\"Demon Attack (Unknown)\"},\n\t\"442602713CB45B9321EE93C6EA28A5D0\":{n:\"Demon Attack (Unknown) (PAL)\"},\n\t\"F91FB8DA3223B79F1C9A07B77EBFA0B2\":{n:\"Demons to Diamonds (1982) (Atari)\",p:1},\n\t\"D62283AED0F4199ADB2333DE4C263E9C\":{n:\"Demons to Diamonds (1982) (Atari) (PAL)\",p:1},\n\t\"BF84F528DE44225DD733C0E6A8E400A0\":{n:\"Demons to Diamonds (CCE)\",p:1},\n\t\"698F569EAB5A9906EEC3BC7C6B3E0980\":{n:\"Demons! (2003) (SpkLeader) (Hack)\"},\n\t\"2D16A8B59A225EA551667BE45F554652\":{n:\"Der Geheimkurier (1983) (Quelle) (PAL)\"},\n\t\"A1CA372388B6465A693E4626CC98B865\":{n:\"Der Vielfrass (1983) (Quelle) (PAL)\"},\n\t\"25A21C47AFE925A3CA0806876A2B4F3F\":{n:\"Der kleine Baer (1983) (Quelle) (PAL)\"},\n\t\"A1F9159121142D42E63E6FB807D337AA\":{n:\"Der moderne Ritter (1983) (Quelle) (PAL)\"},\n\t\"E9E6AD30549A6E2CD89FE93B7691D447\":{n:\"Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)\"},\n\t\"FD4F5536FD80F35C64D365DF85873418\":{n:\"Desert Falcon (1987) (Atari)\"},\n\t\"D4806775693FCAAA24CF00FC00EDCDF3\":{n:\"Desert Falcon (1987) (Atari) (PAL)\"},\n\t\"626D67918F4B5E3F961E4B2AF2F41F1D\":{n:\"Diagnostic Test Cartridge 2.0 (1980) (Atari) (Prototype)\"},\n\t\"38BD172DA8B2A3A176E517C213FCD5A6\":{n:\"Diagnostic Test Cartridge 2.6 (1982) (Atari)\"},\n\t\"02AB2C47BC21E7FEAFA015F90D7DF776\":{n:\"Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype)\"},\n\t\"09F89BBFA2AB00F1964D200E12D7CED0\":{n:\"Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype) (4K)\"},\n\t\"740F39E71104E90416C29A73560B9C6B\":{n:\"Diagnostic Test Cartridge 2.6P (1982) (Atari) (PAL) (4K)\"},\n\t\"9222B25A0875022B412E8DA37E7F6887\":{n:\"Dice Puzzle (1983) (Panda)\",c:1},\n\t\"E02156294393818FF872D4314FC2F38E\":{n:\"Dice Puzzle (1983) (Sancho) (PAL)\",c:1},\n\t\"72876FD7C7435F41D571F1101FC456EA\":{n:\"Die Ente und der Wolf (1983) (Quelle) (PAL)\"},\n\t\"31DF1C50C4351E144C9A378ADB8C10BA\":{n:\"Die Ratte und die Karotten (1983) (Quelle) (PAL)\"},\n\t\"834A2273E97AEC3181EE127917B4B269\":{n:\"Die hungrigen Froesche (1983) (Quelle) (PAL)\"},\n\t\"6DDA84FB8E442ECF34241AC0D1D91D69\":{n:\"Dig Dug (1983) (Atari)\"},\n\t\"977294AE6526C31C7F9A166EE00964AD\":{n:\"Dig Dug (1983) (Atari) (PAL)\"},\n\t\"21D2C435BCCCDE7792D82844B3CF60F4\":{n:\"Dig Dug (1983) (Atari) (PAL) [a]\"},\n\t\"BAE1A23F9B6ACDADF465CFB330BA0ACB\":{n:\"Dig Dug (1983) (Atari) [a]\"},\n\t\"EF66AF190840871409FE1702D2483554\":{n:\"DiscoTech (12-02-2003) (Andrew Davie)\"},\n\t\"939CE554F5C0E74CC6E4E62810EC2111\":{n:\"Dishaster (1983) (ZiMAG)\",c:1},\n\t\"740B47DF422372FBEF700B42CEA4E0BF\":{n:\"Dizzy Wiz (2001) (B. Watson)\"},\n\t\"A5E9ED3033FB2836E80AA7A420376788\":{n:\"Dodge 'Em (1980) (Atari) (PAL)\"},\n\t\"10F62443F1AE087DC588A77F9E8F43E9\":{n:\"Dodge 'Em (1980) (Atari) (PAL) [fixed]\"},\n\t\"C3472FA98C3B452FA2FD37D1C219FB6F\":{n:\"Dodge 'Em (1980) (Atari) [a]\"},\n\t\"83BDC819980DB99BF89A7F2ED6A2DE59\":{n:\"Dodge 'Em (1980) (Atari) [fixed]\"},\n\t\"D28AFE0517A046265C418181FA9DD9A1\":{n:\"Dodge 'Em (Unknown) (PAL)\"},\n\t\"BC526185AD324241782DC68BA5D0540B\":{n:\"Dodge Demo 1 (PD)\"},\n\t\"5ACF9865A72C0CE944979F76FF9610F0\":{n:\"Dodge Demo 2 (PD)\"},\n\t\"0C0392DB94A20E4D006D885ABBE60D8E\":{n:\"Dodge Demo 3 (PD)\"},\n\t\"E2B682F6E6D76B35C180C7D847E93B4F\":{n:\"Dodge Demo 4 (PD)\"},\n\t\"CA09FA7406B7D2AEA10D969B6FC90195\":{n:\"Dolphin (1983) (Activision)\"},\n\t\"D09A7504EE8C8717AC3E24D263E7814D\":{n:\"Dolphin (1983) (Activision) (16K)\"},\n\t\"E237EE91514D5ED535C95A14FC608C11\":{n:\"Dolphin (1983) (Activision) (8K)\"},\n\t\"3889351C6C2100B9F3AEF817A7E17A7A\":{n:\"Dolphin (CCE)\"},\n\t\"7FFC2D80FD49A124808315306D19868E\":{n:\"Domino (Ishido) (PD)\"},\n\t\"937736D899337036DE818391A87271E0\":{n:\"Donald Duck's Speedboat (04-12-1983) (Atari) (Prototype)\"},\n\t\"FA7CE62E7FD77E02B3E2198D70742F80\":{n:\"Donald Duck's Speedboat (04-18-1983) (Atari) (Prototype) (PAL)\"},\n\t\"F473F99E47D4026A7A571184922EBF04\":{n:\"Donkey Claus (Philip R. Frey) (Hack)\"},\n\t\"8B5B1E3A434EBBDC2C2A49DC68F46360\":{n:\"Donkey Kong (1982) (CBS Electronics) (PAL)\"},\n\t\"3A526E6A1F9FE918AF0F2CE997DFEA73\":{n:\"Donkey Kong (1982) (CBS Electronics) (PAL) [a1]\"},\n\t\"0894AA7BE77521F9DF562BE8D9555FE6\":{n:\"Donkey Kong (1982) (CBS Electronics) (PAL) [a2]\"},\n\t\"B59417D083B0BE2D49A7D93769880A4B\":{n:\"Donkey Kong (1983) (Pet Boat) (PAL)\"},\n\t\"36B20C427975760CB9CF4A47E41369E4\":{n:\"Donkey Kong (1987) (Atari)\"},\n\t\"7511C34518A9A124EA773F5B0B5C9A48\":{n:\"Donkey Kong (208 in 1) (Unknown) (PAL)\"},\n\t\"DE5AAB22E5ABA5EDCB29A3E7491FF319\":{n:\"Donkey Kong (Star Game)\"},\n\t\"E7864CAAF9EC49ED67B1904CE8602690\":{n:\"Donkey Kong 2K3 Pic (PD)\"},\n\t\"5B98E0536C3F60547DD708AE22ADB04B\":{n:\"Donkey Kong Gingerbread Man (Ben Hudman) (Prototype)\"},\n\t\"5A6FEBB9554483D8C71C86A84A0AA74E\":{n:\"Donkey Kong Jr (1983) (CCE)\"},\n\t\"2880C6B59BD54B153174676E465167C7\":{n:\"Donkey Kong Jr. (Tron)\"},\n\t\"2091AF29B4E7B86914D79D9AAA4CBD20\":{n:\"Donkey Kong Junior (1983) (CBS Electronics) (PAL)\"},\n\t\"C8FA5D69D9E555EB16068EF87B1C9C45\":{n:\"Donkey Kong Junior (1987) (Atari)\"},\n\t\"278155FC9956E9B6EF2359EB238F7C7F\":{n:\"Donkey Kong Junior (Unknown) (Hack)\"},\n\t\"200A9D2A7CB4441CE4F002DF6AA47E38\":{n:\"Doomzerk (PD) (Hack)\"},\n\t\"7E2FE40A788E56765FE56A3576019968\":{n:\"Double Dragon (1989) (Activision)\"},\n\t\"3624E5568368929FABB55D7F9DF1022E\":{n:\"Double Dragon (1989) (Activision) (PAL)\"},\n\t\"47464694E9CCE07FDBFD096605BF39D4\":{n:\"Double Dragon (1989) (Activision) (PAL) [a]\"},\n\t\"4999B45BE0AB5A85BAC1B7C0E551542B\":{n:\"Double Dragon (CCE) (PAL)\"},\n\t\"740A7FA80F52CC7287BA37677AFB6B21\":{n:\"Double Dragon (PAL) (Genesis)\"},\n\t\"368D88A6C071CABA60B4F778615AAE94\":{n:\"Double Dunk (1989) (Atari)\"},\n\t\"CFC226D04D7490B69E155ABD7741E98C\":{n:\"Double Dunk (1989) (Atari) (PAL)\"},\n\t\"3B966BF3C2CA34AC6CA1DE4CF6383582\":{n:\"Double-Height 6-Digit Score Display (2001) (AD)\"},\n\t\"707ECD80030E85751EF311CED66220BC\":{n:\"Double-Height 6-Digit Score Display (Background Color Change) (2001) (AD)\"},\n\t\"88DCE4037471424BB38AB6841AAA8CAB\":{n:\"Double-Height 6-Digit Score Display (Two Background Color Change) (2001) (AD)\"},\n\t\"6A882FB1413912D2CE5CF5FA62CF3875\":{n:\"Dragon Defender (Ariola) (PAL)\",c:1},\n\t\"24D9A55D8F0633E886A1B33EE1E0E797\":{n:\"Dragon Defender (Thomas Jentzsch)\",c:1},\n\t\"41810DD94BD0DE1110BEDC5092BEF5B0\":{n:\"Dragon Treasure (Funvision)\"},\n\t\"6FC394DBF21CF541A60E3B3631B817F1\":{n:\"Dragonfire (1982) (Imagic) (PAL)\"},\n\t\"1267E3C6CA951FF1DF6F222C8F813D97\":{n:\"Dragonfire (Unknown) (PAL)\"},\n\t\"78B84CFB1C57B0488D674D2374E656E6\":{n:\"Dragonstomper (1 of 3) (1982) (Arcadia)\"},\n\t\"2D9E65959808A6098C16C82A59C9D9DC\":{n:\"Dragonstomper (1 of 3) (1982) (Arcadia) (PAL)\"},\n\t\"90CCF4F30A5AD8C801090B388DDD5613\":{n:\"Dragonstomper (1982) (Arcadia)\"},\n\t\"8B04E9D132B8E30D447ACAA6BD049C32\":{n:\"Dragonstomper (1982) (Arcadia) (PAL)\"},\n\t\"5B7EA6AA6B35DC947C65CE665FDE624B\":{n:\"Dragonstomper (2 of 3) (1982) (Arcadia)\"},\n\t\"66C4E0298D4120DF333BC2F3E163657E\":{n:\"Dragonstomper (2 of 3) (1982) (Arcadia) (PAL)\"},\n\t\"DD8A2124D4EDA200DF715C698A6EA887\":{n:\"Dragonstomper (3 of 3) (1982) (Arcadia)\"},\n\t\"AFF8CBA0F2D2EB239953DD7116894A08\":{n:\"Dragonstomper (3 of 3) (1982) (Arcadia) (PAL)\"},\n\t\"A302B922A8DBEC47743F28B7F91D4CD8\":{n:\"Dragonstomper (Preview) (1982) (Arcadia)\"},\n\t\"FBAC6476E7B2B20D246202AF81662C88\":{n:\"Dragonstomper (Preview) (1982) (Arcadia) (PAL)\"},\n\t\"A867B76098786C4091DBA2FCEE5084C3\":{n:\"Dragrace (Hack)\"},\n\t\"77057D9D14B99E465EA9E29783AF0AE3\":{n:\"Dragster (1980) (Activision)\"},\n\t\"D763E3A9CDCDD56C715EC826106FAB6A\":{n:\"Dragster (1980) (Activision) (16K)\"},\n\t\"63A6EDA1DA30446569AC76211D0F861C\":{n:\"Dragster (1980) (Activision) (4K)\"},\n\t\"9D1556AE5890398BE7E3D57449774B40\":{n:\"Dragster (1980) (Activision) (8K)\"},\n\t\"0C54811CF3B1F1573C9164D5F19ECA65\":{n:\"Dragster (1980) (Activision) (PAL)\"},\n\t\"BB18189021D58362D9E4D317CD2E28B7\":{n:\"Dragster (1980) (Activision) (PAL) (4K)\"},\n\t\"C216B91F5DB21A093DED6A5AAEC85709\":{n:\"Dragster (Jone Yuan)\"},\n\t\"3BB9793C60C92911895CF44530846136\":{n:\"Dragster (Jone Yuan) (4K)\"},\n\t\"B1339C56A9EA63122232FE4328373AC5\":{n:\"Dream Flight (1983) (Goliath) (PAL)\"},\n\t\"2BC6C53B19E0097A242F22375A6A60FF\":{n:\"Droid Demo 2 (David Conrad Schweinsberg) (PD)\"},\n\t\"37F42AB50018497114F6B0F4F01AA9A1\":{n:\"Droid Demo 2-M (David Conrad Schweinsberg) (PD)\"},\n\t\"BFF8F8F53A8AEB1EE804004CCBB08313\":{n:\"Droid Demo 22 (David Conrad Schweinsberg) (PD)\"},\n\t\"C1B7AEABC3EC41556D924C8372A9BA5B\":{n:\"Dukes of Hazard (1980) (Atari) (Prototype)\"},\n\t\"34CA2FCBC8BA4A0B544ACD94991CFB50\":{n:\"Dukes of Hazzard (1980) (Atari) (Prototype) (4K)\"},\n\t\"51DE328E79D919D7234CF19C1CD77FBC\":{n:\"Dukes of Hazzard (1983) (Atari)\"},\n\t\"2BA02F509A4991AA176BA8D9E540DF3D\":{n:\"Dukes of Hazzard (1983) (Atari) [a]\"},\n\t\"3897744DD3C756EA4B1542E5E181E02A\":{n:\"Dumbo's Flying Circus (05-05-1983) (Atari) (Prototype)\"},\n\t\"1F773A94D919B2A3C647172BBB97F6B4\":{n:\"Dumbo's Flying Circus (07-11-1983) (Atari) (Prototype) (PAL)\"},\n\t\"31FCBCE1CFA6EC9F5B6DE318E1F57647\":{n:\"Dumbo's Flying Circus (1983) (Atari) (Prototype) (PAL)\"},\n\t\"469473FF6FED8CC8D65F3C334F963AAB\":{n:\"Dune (07-10-1984) (Atari) (Prototype)\",c:1},\n\t\"AFB3BC45C6A82739CC82582127CD96E6\":{n:\"Dungeon (11-22-1985) (Atari) (Prototype)\"},\n\t\"615A3BF251A38EB6638CDC7FFBDE5480\":{n:\"E.T. - The Extra-Terrestrial (1982) (Atari)\"},\n\t\"8FEBDD9142960D084AB6EEB1D3E88969\":{n:\"E.T. - The Extra-Terrestrial (1982) (Atari) (PAL)\"},\n\t\"A511F7EE13E4B35512F9217A677B4028\":{n:\"E.T. - The Extra-Terrestrial (1982) (Atari) (PAL) [a]\"},\n\t\"C82EC00335CBB4B74494AECF31608FA1\":{n:\"E.T. - The Extra-Terrestrial (CCE)\"},\n\t\"F71694BD8E89D5A28DAA73BF856635DF\":{n:\"E.T. Book Cart (NTSC)\",c:1},\n\t\"91191666186117F5BF78B40623D79039\":{n:\"E.T. Book Cart (PAL)\",c:1},\n\t\"84DF0704E6C777E1F9A16EC92AD80DF0\":{n:\"E.T. Book Cart (PAL60)\",c:1},\n\t\"EFA1098C7D091B940C2543ABE372F036\":{n:\"E.T. The Extra-Terrestrial (Scott Stilphen) (Hack)\"},\n\t\"13ABC32F803165C458BB086FA57195FB\":{n:\"E.T. The Extra-Testical (Christian Samuel) (Hack)\"},\n\t\"6982854657A2CC87D712F718E402BF85\":{n:\"Earth Attack (Zellers)\"},\n\t\"033E21521E0BF4E54E8816873943406D\":{n:\"Earth Dies Screaming, The (1983) (20th Century Fox)\"},\n\t\"2C0DC885D5EDE94AA664BF3081ADD34E\":{n:\"Earth Dies Screaming, The (Unknown) (PAL)\"},\n\t\"2BF34B6AD7D2317A2D0808B3FB93571B\":{n:\"Easy Playfield Graphics (1997) (Chris Cracknell)\"},\n\t\"9CBB07F1993A027BC2F87D5205457EC9\":{n:\"Eckhard Stolberg's Scrolling Text Demo 1 (PD)\"},\n\t\"F8BFD99163D2C4EC688357786E6FBA28\":{n:\"Eckhard Stolberg's Scrolling Text Demo 2 (PD)\"},\n\t\"32E65D1E4DFCBCD9B57FEE72CAFE074C\":{n:\"Eckhard Stolberg's Scrolling Text Demo 3 (PD)\"},\n\t\"3B5751A8D20F7DE41EB069F76FECD5D7\":{n:\"Eckhard Stolberg's Scrolling Text Demo 4 (PD)\"},\n\t\"3E6DAB92009D6034618CB6B7844C5216\":{n:\"Ed Invaders (Hack)\"},\n\t\"07973BE3ECFD55235BF59AA56BDEF28C\":{n:\"Eddy Langfinger, der Museumsdieb (1983) (Quelle) (PAL)\",c:1},\n\t\"C6D48C6AE6461E0E82753540A985AC9E\":{n:\"Edtris (1994) (Ed Federmeyer)\"},\n\t\"683DC64EF7316C13BA04EE4398E2B93A\":{n:\"Edtris (1995) (Ed Federmeyer)\"},\n\t\"A00EE0AED5C8979ADD4C170F5322C706\":{n:\"Egghead (Barry Laws Jr.) (Hack)\"},\n\t\"42B2C3B4545F1499A083CFBC4A3B7640\":{n:\"Eggomania (1982) (U.S. Games)\",p:1},\n\t\"2B1589C7E1F394AE6A1C046944F06688\":{n:\"Eggomania (1983) (Carrere Video) (PAL)\",p:1},\n\t\"A3F2A0FCF74BBC5FA763B0EE979B05B1\":{n:\"Eishockey-Fieber (1983) (Quelle) (PAL)\"},\n\t\"71F8BACFBDCA019113F3F0801849057E\":{n:\"Elevator Action (1983) (Atari) (Prototype)\"},\n\t\"B6812EAF87127F043E78F91F2028F9F4\":{n:\"Eli's Ladder (1982) (Simage)\"},\n\t\"7EAFC9827E8D5B1336905939E097AAE7\":{n:\"Elk Attack (1987) (Atari) (Prototype)\"},\n\t\"DBC8829EF6F12DB8F463E30F60AF209F\":{n:\"Encounter at L-5 (1982) (Data Age)\",p:1},\n\t\"5188FEE071D3C5EF0D66FB45C123E4A5\":{n:\"Encounter at L-5 (1983) (Gameworld) (PAL)\",p:1},\n\t\"94B92A882F6DBAA6993A46E2DCC58402\":{n:\"Enduro (1983) (Activision)\",l:\"ENDURO\"},\n\t\"CFE62ED7125FF9FAE99B4C8A367C0399\":{n:\"Enduro (1983) (Activision) (16K)\",l:\"ENDURO\"},\n\t\"265C74A956500BD31EFD24ADC6D5CCF6\":{n:\"Enduro (1983) (Activision) (8K)\",l:\"ENDURO\"},\n\t\"6A82B8ECC663F371B19076D99F46C598\":{n:\"Enduro (1983) (Activision) (PAL)\",l:\"ENDURO\"},\n\t\"DE62F8A30298E2325249FE112ECB5C10\":{n:\"Enduro (1983) (CCE)\",l:\"ENDURO\"},\n\t\"360C0DCB11506E73BD0B77207C81BC62\":{n:\"Enduro (1983) (Digitel)\",l:\"ENDURO\"},\n\t\"E1EFE2EF7664BB6758B1A22FF8EA16A1\":{n:\"Enduro (1983) (Dynacom)\",l:\"ENDURO\"},\n\t\"07F84DB31E97EF8D08DC9FA8A5250755\":{n:\"Enduro (1984) (Supergame)\",l:\"ENDURO\"},\n\t\"5DF559A36347D8572F9A6E8075A31322\":{n:\"Enduro (Digivision)\",l:\"ENDURO\"},\n\t\"D2F713C78A9EBBA9DA6D10AEEFC6F20F\":{n:\"Enduro (Digivision) [a]\",l:\"ENDURO\"},\n\t\"A8E49D7E24CE293629CA29614862821B\":{n:\"Enduro (Genesis)\"},\n\t\"2BB0A1F1DEE5226DE648EB5F1C97F067\":{n:\"Enduro (Robby)\",l:\"ENDURO\"},\n\t\"E9E646F730B8400CD5DA08C849EF3E3B\":{n:\"Enduro (Tron)\",l:\"ENDURO\"},\n\t\"4279485E922B34F127A88904B31CE9FA\":{n:\"Enduro (Unknown)\",l:\"ENDURO\"},\n\t\"61719A8BDAFBD8DAB3CA9CE7B171B9E2\":{n:\"Enduro (Unknown) (PAL)\",l:\"ENDURO\"},\n\t\"9F5096A6F1A5049DF87798EB59707583\":{n:\"Entity, The (1983) (20th Century Fox) (Prototype)\"},\n\t\"6B683BE69F92958ABE0E2A9945157AD5\":{n:\"Entombed (1982) (U.S. Games)\",c:1},\n\t\"D7F5BF138CFC7FEAB7B8EF1534C8B477\":{n:\"Eric Bergstrom's KC-135 (Radar Map) (Aaron Bergstrom)\"},\n\t\"8538C5E3EE83267774480649F83FA8D6\":{n:\"Escape Demo (PD)\"},\n\t\"D1A1841B7F2007A24439AC248374630A\":{n:\"Escape from the Mindmaster (1 of 4) (1982) (Arcadia)\"},\n\t\"3576037C9281656655FA114A835BE553\":{n:\"Escape from the Mindmaster (1 of 4) (1982) (Arcadia) (PAL)\"},\n\t\"81F4F0285F651399A12FF2E2F35BAB77\":{n:\"Escape from the Mindmaster (1982) (Arcadia)\"},\n\t\"C9E721EB29C940C2E743485B044C0A3F\":{n:\"Escape from the Mindmaster (1982) (Arcadia) (PAL)\"},\n\t\"64198BB6470C78AC24FCF13FE76AB28C\":{n:\"Escape from the Mindmaster (1982) (Arcadia) [a]\"},\n\t\"FDF0DE38517E0CF7F0885F98CCC95836\":{n:\"Escape from the Mindmaster (2 of 4) (1982) (Arcadia)\"},\n\t\"A075AD332942740C386F4C3814925ECE\":{n:\"Escape from the Mindmaster (2 of 4) (1982) (Arcadia) (PAL)\"},\n\t\"7A63D7EA3F2851BCF04F0BB4BA1A3929\":{n:\"Escape from the Mindmaster (3 of 4) (1982) (Arcadia)\"},\n\t\"CC1939E4769D0C157ACE326EFCFDCF80\":{n:\"Escape from the Mindmaster (3 of 4) (1982) (Arcadia) (PAL)\"},\n\t\"F0536303F49006806BAC3AEC15738336\":{n:\"Escape from the Mindmaster (4 of 4) (1982) (Arcadia)\"},\n\t\"1EE2CFC7D0333B96BD11F7F3EC8CE8BC\":{n:\"Escape from the Mindmaster (4 of 4) (1982) (Arcadia) (PAL)\"},\n\t\"F1127ADE54037236E75A133B1DFC389D\":{n:\"Escape from the Mindmaster (Preview) (1982) (Arcadia)\"},\n\t\"271BFD5DC2673D382019F1FB6CAB9332\":{n:\"Escape from the Mindmaster (Preview) (1982) (Arcadia) (PAL)\"},\n\t\"F344AC1279152157D63E64AA39479599\":{n:\"Espial (1984) (Tigervision)\"},\n\t\"F7A138EED69665B5CD1BFA796A550B01\":{n:\"Espial (1984) (Tigervision) (PAL)\"},\n\t\"66362890EB78D6EA65301592CCE65F5B\":{n:\"Euchre (13-07-2001) (Eric Eid) (PD)\"},\n\t\"72097E9DC366900BA2DA73A47E3E80F5\":{n:\"Euchre (15-06-2001) (Eric Eid) (PD)\"},\n\t\"524693B337F7ECC9E8B9126E04A232AF\":{n:\"Euchre (19-08-2001) (Eric Eid) (PD)\"},\n\t\"8EE3F64DC0F349ADC893FE93DF5245D8\":{n:\"Euchre (20-07-2001) (Eric Eid) (PD)\"},\n\t\"EB71743C6C7CCCE5B108FAD70A326AD9\":{n:\"Euchre (25-11-2001) (Erik Eid) (PD)\"},\n\t\"65562F686B267B21B81C4DDDC129D724\":{n:\"Euchre (28-07-2001) (Eric Eid) (PD)\"},\n\t\"29949F893EF6CB9E8ECB368B9E99EEE4\":{n:\"Euchre (Alpha) (NTSC) (31-08-2002) (Erik Eid)\"},\n\t\"407A0C6CC0FF777F67B669440D68A242\":{n:\"Euchre (Alpha) (PAL) (31-08-2002) (Erik Eid)\"},\n\t\"FFB1CD548563158CE33F9D10268187E7\":{n:\"Euchre (Beta) (NTSC) (12-09-2002) (Erik Eid)\"},\n\t\"877A5397F3F205BF6750398C98F33DE1\":{n:\"Euchre (Beta) (PAL) (12-09-2002) (Erik Eid)\"},\n\t\"873FB75A7788BA0F4AE715229A05545E\":{n:\"Euchre (Improved Colors) (PAL) (26-09-2002) (Erik Eid)\"},\n\t\"15BF2EF7583BFCBBBA630847A1DC5539\":{n:\"Euchre (Jul 15) (2002) (Eric Eid) (PD)\"},\n\t\"80E52315919BD8A8B82A407CCD9BB13F\":{n:\"Euchre (Jul 28) (2002) (Eric Eid) (PD)\"},\n\t\"40AA851E8D0F1C555176A5E209A5FABB\":{n:\"Euchre (More for less) (NTSC) (22-08-2002) (Erik Eid)\"},\n\t\"C9D02D3CFEEF8B48FB71CB4520A4AA84\":{n:\"Euchre (More for less) (PAL) (22-08-2002) (Erik Eid)\"},\n\t\"B1B20536AEF4EED9C79DC5804F077862\":{n:\"Euchre (NTSC) (09-11-2001) (Erik Eid)\"},\n\t\"D4AA89E96D2902692F5C45F36903D336\":{n:\"Euchre (NTSC) (Erik Eid) (PD)\"},\n\t\"E5D5085123A98C1E61818CAA2971E999\":{n:\"Euchre (PAL) (Erik Eid) (PD)\"},\n\t\"6205855CC848D1F6C4551391B9BFA279\":{n:\"Euchre (Release Candidate 2) (NTSC) (01-10-2002) (Erik Eid)\"},\n\t\"199985CAE1C0123AB1AEF921DAACE8BE\":{n:\"Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)\"},\n\t\"4690FDB70C86604BB35DA26696818667\":{n:\"Euchre (Release Candidate) (NTSC) (28-09-2002) (Erik Eid)\"},\n\t\"BFFE34516AAA3CBF5D307EAB382A7E95\":{n:\"Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)\"},\n\t\"77CD9A9DD810CE8042BDB9D40E256DFE\":{n:\"Evil Dead (2003) (Kyle Pittman) (Hack)\"},\n\t\"B5657D4C1C732FBB6AF150668464247F\":{n:\"Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype)\"},\n\t\"1B4B06C2A14ED3EE73B7D0FD61B6AAF5\":{n:\"Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype) [a]\"},\n\t\"3AD58B53A1E972396890BD86C735E78D\":{n:\"Excalibur Version 36 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)\"},\n\t\"2EAF8FA9E9FDF1FCFC896926A4BDBF85\":{n:\"Excalibur Version 39 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)\"},\n\t\"6362396C8344EEC3E86731A700B13ABF\":{n:\"Exocet (1983) (Panda)\"},\n\t\"295F3679BDF91CA5E37DA3F787B29997\":{n:\"Exorcise (Hack)\"},\n\t\"EBD2488DCACE40474C1A78FA53EBFADF\":{n:\"Extra Terrestrials (1983) (SSG)\"},\n\t\"7926083AD423ED685DE3B3A04A914315\":{n:\"Face Invaders 2 (Barry Laws Jr.) (Hack)\"},\n\t\"0AF51CEB4AECC7A8FC89781AC44A1973\":{n:\"Face Invaders Deluxe (Barry Laws Jr.) (Hack)\"},\n\t\"B80D50ECEE73919A507498D0A4D922AE\":{n:\"Fantastic Voyage (1982) (20th Century Fox)\"},\n\t\"0F24CA5668B4AB5DFAF217933C505926\":{n:\"Fantastic Voyage (208 in 1) (Unknown) (PAL)\"},\n\t\"F7E07080ED8396B68F2E5788A5C245E2\":{n:\"Farmyard Fun (Ariola)\"},\n\t\"9DE0D45731F90A0A922AB09228510393\":{n:\"Fast Eddie (1982) (20th Century Fox)\"},\n\t\"A97733B0852EE3096300102CB0689175\":{n:\"Fast Eddie (1983) (CCE)\"},\n\t\"665B8F8EAD0EEF220ED53886FBD61EC9\":{n:\"Fast Food (1982) (Telesys)\"},\n\t\"48411C9EF7E2CEF1D6B2BEE0E6055C27\":{n:\"Fast Food (1982) (Telesys) (PAL)\"},\n\t\"313243FC41E49EF6BD3AA9EBC0D372DD\":{n:\"Fast Food (Unknown) (PAL)\"},\n\t\"6B7E1C11448C4D3F28160D2DE884EBC8\":{n:\"Fast Food (Zirok)\"},\n\t\"63E783994DF824CAF289B69A084CBF3E\":{n:\"Fat Albert (David Marli) (Hack)\"},\n\t\"8A159EE58B2F0A54805162984B0F07E5\":{n:\"Fatal Run (1989) (Atari) (PAL) [a]\"},\n\t\"85470DCB7989E5E856F36B962D815537\":{n:\"Fatal Run (1989) (Atari) (Prototype)\"},\n\t\"EF263D40A23483AB339CAC44D9515A56\":{n:\"Fatal Run (TJ)\"},\n\t\"074EC425EC20579E64A7DED592155D48\":{n:\"Fatal Run (Ultimate Driving) (1989) (Atari) (PAL)\"},\n\t\"0B55399CF640A2A00BA72DD155A0C140\":{n:\"Fathom (1983) (Imagic)\",c:1},\n\t\"47CD61F83457A0890DE381E478F5CF5F\":{n:\"Fathom (1983) (Imagic) (PAL)\",c:1},\n\t\"962FFD3EAF865230A7A312B80E6C5CFD\":{n:\"Fathom (1983) (Imagic) (PAL) [a]\",c:1},\n\t\"540075F657D4B244A1F74DA1B9E4BF92\":{n:\"Festival (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\"},\n\t\"8E737A88A566CC94BD50174C2D019593\":{n:\"Feuerwehr im Einsatz (1983) (Quelle) (PAL)\"},\n\t\"2AC3A08CFBF1942BA169C3E9E6C47E09\":{n:\"Fighter Pilot (1988) (Activision) (PAL)\"},\n\t\"211FBBDBBCA1102DC5B43DC8157C09B3\":{n:\"Final Approach (1982) (Apollo)\"},\n\t\"51E390424F20E468D2B480030CE95D7B\":{n:\"Fire Bird (Video Game Program) (PAL)\"},\n\t\"01E60A109A6A67C70D3C0528381D0187\":{n:\"Fire Birds (1983) (ITT Family Games) (PAL)\"},\n\t\"D09F1830FB316515B90694C45728D702\":{n:\"Fire Fighter (1982) (Imagic)\"},\n\t\"90D77E966793754AB4312C47B42900B1\":{n:\"Fire Fighter (1982) (Imagic) (PAL)\"},\n\t\"20DCA534B997BF607D658E77FBB3C0EE\":{n:\"Fire Fly (1983) (Mythicon)\"},\n\t\"386FF28AC5E254BA1B1BAC6916BCC93A\":{n:\"Fireball (1982) (Arcadia)\",p:1},\n\t\"CDB81BF33D830EE4EE0606EE99E84DBA\":{n:\"Fireball (1982) (Arcadia) (PAL)\",p:1},\n\t\"5438E84B90E50A5362F01CC843B358D4\":{n:\"Fireball (1982) (Arcadia) (Prototype)\",p:1},\n\t\"683BB0D0F0C5DF58557FBA9DFFC32C40\":{n:\"Fireball (1982) (Arcadia) [a]\",p:1},\n\t\"66BC1BEF269EA59033928BAC2D1D81E6\":{n:\"Fireball (Preview) (1982) (Arcadia)\",p:1},\n\t\"A3D7C299FBCD7B637898EE0FDCFC47FC\":{n:\"Fireball (Preview) (1982) (Arcadia) (PAL)\",p:1},\n\t\"6C85098518D3F94F7622C42FD1D819AC\":{n:\"Firebug (Suntek) (PAL)\"},\n\t\"D2901C34BB6496BB96C7BC78A9E6142A\":{n:\"Fish Revenge (2003) (Greg Zumwalt) (Hack)\"},\n\t\"3FE43915E5655CF69485364E9F464097\":{n:\"Fisher Price (1983) (CCE)\"},\n\t\"2517827950FEE41A3B9DE60275C8AA6A\":{n:\"Fishing (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"F9967369943209B4788D4E92CEFC0795\":{n:\"Fishing (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"B8865F05676E64F3BEC72B9DEFDACFA7\":{n:\"Fishing Derby (1980) (Activision)\"},\n\t\"3C82E808FE0E6A006DC0C4E714D36209\":{n:\"Fishing Derby (1980) (Activision) (16K)\"},\n\t\"85227160F37AAA29F5E3A6C7A3219F54\":{n:\"Fishing Derby (1980) (Activision) (4K)\"},\n\t\"5131AB3797FE8C127E3E135B18B4D2C8\":{n:\"Fishing Derby (1980) (Activision) (8K)\"},\n\t\"571C6D9BC71CB97617422851F787F8FE\":{n:\"Fishing Derby (1980) (Activision) (PAL)\"},\n\t\"ECFA04523DDE82FE42CDC7315A8F61B6\":{n:\"Fishing Derby (1980) (Activision) (PAL) (4K)\"},\n\t\"7628D3CADEEE0FD2E41E68B3B8FBE229\":{n:\"Fishing Derby (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"D782543818B6320E4F60D77DA2B596DE\":{n:\"Fishing Derby (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"DEA0ADE296F7093E71185E802B500DB8\":{n:\"Fishing Derby (CCE)\"},\n\t\"804ED85EADF1CE3E93721547CBEA7592\":{n:\"Fishing Derby (CCE) (4K)\"},\n\t\"0651216C4A4A9C9AC5ADA3013A317C72\":{n:\"Fishing Derby (Jone Yuan) (4K) (Hack)\"},\n\t\"74023E0F2E739FC5A9BA7CAAEEEE8B6B\":{n:\"Fishing Derby (Jone Yuan) (Hack)\"},\n\t\"1D2A28EB8C95DA0D6D6B18294211839F\":{n:\"Fishing Derby (Unknown) (PAL) (4K)\"},\n\t\"6B72B691EA86F61438ED0D84C4D711DE\":{n:\"Fishing Derby (Unknown) (PAL) (4K) (Hack)\"},\n\t\"458883F1D952CD772CF0057ABCA57497\":{n:\"Fishing Derby (Unknown) (PAL) (Hack)\"},\n\t\"30512E0E83903FC05541D2F6A6A62654\":{n:\"Flag Capture (1978) (Atari)\"},\n\t\"4B143D7DCF6C96796C37090CBA045F4F\":{n:\"Flag Capture (1978) (Atari) (4K)\"},\n\t\"DA7A17DCDAA62D6971393C0A6FAF202A\":{n:\"Flag Capture (208 in 1) (Unknown) (PAL)\"},\n\t\"F5445B52999E229E3789C39E7EE99947\":{n:\"Flag Capture (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"B897F9E3F939B9F21566D56DB812A84E\":{n:\"Flag Capture (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"19162393786098D50587827588198A86\":{n:\"Flag Capture (Jone Yuan) (4K)\"},\n\t\"4AE8C76CD6F24A2E181AE874D4D2AA3D\":{n:\"Flash Gordon (Unknown) (PAL)\"},\n\t\"7A2AF383014F5D810AD26D322823549D\":{n:\"FlickerSort Demo (20-04-2002) (MP)\"},\n\t\"02811151906E477D47C135DB5B1699C6\":{n:\"FlickerSort Demo (Updated) (20-04-2002) (MP)\"},\n\t\"5A2F2DCD775207536D9299E768BCD2DF\":{n:\"Flippern (Double-Game Package) (1983) (Quelle) (PAL)\"},\n\t\"E549F1178E038FA88DC6D657DC441146\":{n:\"Football (1979) (Atari)\"},\n\t\"D86DEB100C6ABED1588AA84B2F7B3A98\":{n:\"Football (1979) (Atari) (4K)\"},\n\t\"5F9B62350B31BE8BD270D9A241CBD50E\":{n:\"Football (1989) (Telegames) (PAL)\"},\n\t\"CFE2185F84CE8501933BEB5C5E1FD053\":{n:\"Football (208 in 1) (Unknown) (PAL)\"},\n\t\"E6D5948F451A24994DFAACA51DFDB4E1\":{n:\"Football (Jone Yuan) (4K)\"},\n\t\"213E5E82ECB42AF237CFED8612C128AC\":{n:\"Forest (1983) (Sancho) (PAL)\",c:1},\n\t\"7AB210F448DE518FA61A5924120BA872\":{n:\"Fortress (20-04-2003) (CT)\"},\n\t\"2008C76DEBA5953201EF75A09B2FF7DC\":{n:\"Fortress (21-04-2003) (CT)\"},\n\t\"19D9B5F8428947EAE6F8E97C7F33BF44\":{n:\"Fortress (Dual Version) (20-04-2003) (CT)\"},\n\t\"6D74EBABA914A5CFC868DE9DD1A5C434\":{n:\"Fortress (Smooth Version) (20-04-2003) (CT)\"},\n\t\"76EE917D817EF9A654BC4783E0273AC4\":{n:\"Fox & Goat (Double-Game Package) (1983) (Quelle) (PAL)\"},\n\t\"0856F202B18CD46E44FD1DC3B42E9BFB\":{n:\"Frame Counter 1 (2001) (Jake Patterson) (PD)\"},\n\t\"DB1753CC702C18D3917EC7F3B0E8659F\":{n:\"Frame Counter 2 (2001) (Jake Patterson) (PD)\"},\n\t\"8290DAEA8391F96D7C8E1482E184D19C\":{n:\"Frame Timed Sound Effects (Eckhard Stolberg)\"},\n\t\"442B7863683E5F084716FDA050474FEB\":{n:\"Frame Timed Sound Effects-EM (Eckhard Stolberg)\"},\n\t\"15DD21C2608E0D7D9F54C0D3F08CCA1F\":{n:\"Frankenstein's Monster (1983) (Data Age)\"},\n\t\"7D0B49EA4FE3A5F1E119A6D14843DB17\":{n:\"Frankenstein's Monster (1983) (Gameworld) (PAL)\"},\n\t\"8E0AB801B1705A740B476B7F588C6D16\":{n:\"Freeway (1981) (Activision)\"},\n\t\"69974DD5D6420B90898CDE50AEC5EF39\":{n:\"Freeway (1981) (Activision) (16K)\"},\n\t\"851CC1F3C64EAEDD10361EA26345ACEA\":{n:\"Freeway (1981) (Activision) (4K)\"},\n\t\"0F95264089C99FC2A839A19872552004\":{n:\"Freeway (1981) (Activision) (8K)\"},\n\t\"2EC6B045CFD7BC52D9CDFD1B1447D1E5\":{n:\"Freeway (1981) (Activision) (PAL)\"},\n\t\"E4AFE157C09962CF39CDB25845D83D47\":{n:\"Freeway (1981) (Activision) (PAL) (4K)\"},\n\t\"EDDEF10FDC0029301064115AE0CD41D4\":{n:\"Freeway (CCE)\"},\n\t\"28148A52B1955CE12C7A74D3A3E620A4\":{n:\"Freeway (CCE) (4K)\"},\n\t\"7D5C3B7B908752B98E30690E2A3322C2\":{n:\"Freeway (Dactari - Milmar)\"},\n\t\"B822FBA8B7C8A97EA4E92AEB2C455EF9\":{n:\"Freeway (Dactari) (4K)\"},\n\t\"7B7B4AC05232490C28F9B680C72998F9\":{n:\"Freeway (Zellers)\"},\n\t\"914A8FEAF6D0A1BBED9EB61D33817679\":{n:\"Freeway Chicken (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"B7B1D3CE07E75976C43A2DCA3866237E\":{n:\"Freeway Chicken (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"481D20EC22E7A63E818D5EF9679D548B\":{n:\"Freeway Rabbit (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"060C865C782DEBB047E6FD101C8923FC\":{n:\"Freeway Rabbit (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"E80A4026D29777C3C7993FBFAEE8920F\":{n:\"Frisco (Unknown)\"},\n\t\"056FF67DD9715FAFA91FB8B0DDCC4A46\":{n:\"Frisco (Unknown) (PAL) (Hack)\"},\n\t\"45A4F55BB9A5083D470AD479AFD8BCA2\":{n:\"Frog Demo (1983) (CommaVid)\"},\n\t\"F67181B3A01B9C9159840B15449B87B0\":{n:\"Frog Pond (08-27-1982) (Atari) (Prototype)\"},\n\t\"5F73E7175474C1C22FB8030C3158E9B3\":{n:\"Frog Pond (1982) (Atari) (Prototype)\"},\n\t\"081E2C114C9C20B61ACF25FC95C71BF4\":{n:\"Frogger (1982) (Parker Bros)\"},\n\t\"02CED7EA2B7CB509748DB6BFA227EBEC\":{n:\"Frogger (1982) (Parker Bros) (PAL)\"},\n\t\"27C6A2CA16AD7D814626CEEA62FA8FB4\":{n:\"Frogger II (1984) (Parker Bros)\",c:1},\n\t\"FB91DFC36CDDAA54B09924AE8FD96199\":{n:\"Frogger II (1984) (Parker Bros) (PAL)\",c:1},\n\t\"DCC2956C7A39FDBF1E861FC5C595DA0D\":{n:\"Frogs and Flies (1982) (M Network)\"},\n\t\"1B8C3C0BFB815B2A1010BBA95998B66E\":{n:\"Frogs and Flies (1989) (Telegames) (PAL)\"},\n\t\"4A196713A21EF07A3F74CF51784C6B12\":{n:\"Frogs and Flies (Jone Yuan) (Hack)\"},\n\t\"E556E07CC06C803F2955986F53EF63ED\":{n:\"Front Line (1984) (Coleco)\"},\n\t\"4CA73EB959299471788F0B685C3BA0B5\":{n:\"Frostbite (1983) (Activision)\"},\n\t\"5A93265095146458DF2BAF2162014889\":{n:\"Frostbite (1983) (Activision) (PAL)\"},\n\t\"70CE036E59BE92821C4C7FD735EC6F68\":{n:\"Frostbite (1983) (Activision) (PAL) (16K)\"},\n\t\"9831EFC7F4CB8FFB4DF0082BAB2F07A3\":{n:\"Frostbite (1983) (Activision) (PAL) (8K)\"},\n\t\"F4469178CD8998CB437FA110A228EACA\":{n:\"Frostbite (1983) (Digitel)\"},\n\t\"C225379E7C4FB6F886EF9C8C522275B4\":{n:\"Frostbite (1983) (Video Mania)\"},\n\t\"C6AE21CACEAAD734987CB24243793BD5\":{n:\"Frostbite (CCE)\"},\n\t\"ADB79F9AC1A633CDD44954E2EAC14774\":{n:\"Frostbite (Digivision)\"},\n\t\"6B71F20C857574B732E7A8E840BD3CB2\":{n:\"Frostbite (Unknown) (PAL)\"},\n\t\"6A9B30CA46B0DBA9E719F4CBD340E01C\":{n:\"Frostbite (Unknown) (PAL) (Hack)\"},\n\t\"415C11FCAC66BBD2ACE2096687774B5A\":{n:\"Fu Kung! (V0.00) (07-01-2003) (AD)\"},\n\t\"EB3D680699F8762F71F38E28E321234D\":{n:\"Fu Kung! (V0.01) (08-01-2003) (AD)\"},\n\t\"9F2D58DCE1B81C6BA201ED103507C025\":{n:\"Fu Kung! (V0.02) (2003) (AD)\"},\n\t\"DFF33523CCD2FDC8912E84CAB8E0D982\":{n:\"Fu Kung! (V0.03) (10-01-2003) (AD)\"},\n\t\"AB2EA35DCC1098C87455BB8210B018CF\":{n:\"Fu Kung! (V0.04 Single Line Resolution) (10-01-2003) (AD)\"},\n\t\"81341F00B61AB37D19D1529F483D496D\":{n:\"Fu Kung! (V0.04) (10-01-2003) (AD)\"},\n\t\"7ED7130A6E4020161836414332B11983\":{n:\"Fu Kung! (V0.05 Cuttle Card Compatible) (13-01-2003) (AD)\"},\n\t\"61621A556AD3228F0234F5FEB3AB135C\":{n:\"Fu Kung! (V0.05 Cuttle Card Compattle Revision) (14-01-2003) (AD)\"},\n\t\"D026716B3C5BE2C951CC4C064317C524\":{n:\"Fu Kung! (V0.06) (14-01-2003) (AD)\"},\n\t\"CBAD928E10AEEE848786CC55394FB692\":{n:\"Fu Kung! (V0.06a Cuttle Cart Compatible) (15-01-2003) (AD)\"},\n\t\"78C2DE58E42CD1FAAC2EA7DF783EAEB3\":{n:\"Fu Kung! (V0.07) (25-01-2003) (AD)\"},\n\t\"9ECA521DB1959156A115DEE85A405194\":{n:\"Fu Kung! (V0.08) (2003) (AD)\"},\n\t\"58D331C23297ED98663D11B869636F16\":{n:\"Fu Kung! (V0.09) (26-01-2003) (AD)\"},\n\t\"2228C67D25E507603D4873D3934F0757\":{n:\"Fu Kung! (V0.10) (28-01-2003) (AD)\"},\n\t\"52E9DB3FE8B5D336843ACAC234AAEA79\":{n:\"Fu Kung! (V0.11) (28-01-2003) (AD)\"},\n\t\"D632B74FEA533D593AF82CF16E7C5E4A\":{n:\"Fu Kung! (V0.13) (01-02-2003) (AD)\"},\n\t\"6076B187A5D8EA7A2A05111C19B5D5CD\":{n:\"Fu Kung! (V0.14) (01-02-2003) (AD)\"},\n\t\"F80CF77164079D774B9B0FAE33DFFCA9\":{n:\"Fu Kung! (V0.15) (Negative Version) (05-02-2003) (AD)\"},\n\t\"F1BECA5A198CF08190487E5C27B8E540\":{n:\"Fu Kung! (V0.16) (2003) (AD)\"},\n\t\"2240655247D6DE1C585564004A853AB7\":{n:\"Fu Kung! (V0.17) (07-02-2003) (AD)\"},\n\t\"0DE53160A8B54C3AA5AED8D68C970B62\":{n:\"Fuchs & Schweinchen Schlau (1983) (Quelle) (PAL)\"},\n\t\"456453A54CA65191781AEF316343AE00\":{n:\"Full Screen Bitmap (3-D Green) (PD)\"},\n\t\"C3F53993ADE534B0982CA3A286C85BB5\":{n:\"Full Screen Bitmap Drawing System (12-02-2003) (AD)\"},\n\t\"819AEEB9A2E11DEB54E6DE334F843894\":{n:\"Fun with Numbers (1980) (Atari)\"},\n\t\"DFC03EF371CF5163F54C50D8EE73C8CF\":{n:\"Fun with Numbers (1980) (Atari) (4K)\"},\n\t\"5F46D1FF6D7CDEB4B09C39D04DFD50A1\":{n:\"Fun with Numbers (1980) (Atari) (PAL)\"},\n\t\"D0CB28E1B7BD6C7F683A0917B59F707E\":{n:\"Fun with Numbers (1980) (Atari) (PAL) (4K)\"},\n\t\"D816FEA559B47F9A672604DF06F9D2E3\":{n:\"Fun with Numbers (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"08989FA4FF537F5DBD611AFF4019521A\":{n:\"Fun with Numbers (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"D3BB42228A6CD452C111C1932503CC03\":{n:\"Funky Fish (1983) (UA Limited) (Prototype)\",c:1},\n\t\"CD568D6ACB2F14477EBF7E59FB382292\":{n:\"Fussball (Ariola) (PAL)\"},\n\t\"C1FDD44EFDA916414BE3527A47752C75\":{n:\"G.I. Joe - Cobra Strike (1983) (Parker Bros)\",p:1},\n\t\"840A5A2EAEA24D95D289F514FD12F9BB\":{n:\"GBImprov (Hack)\"},\n\t\"A3B9D2BE822EAB07E7F4B10593FB5EAA\":{n:\"GREGXM Demo (PD)\"},\n\t\"13A991BC9C2FF03753AEB322D3E3E2E5\":{n:\"Galactic (Funvision) (PAL)\"},\n\t\"C745487828A1A6A743488ECEBC55AD44\":{n:\"Galactic (Rainbow Vision) (PAL)\"},\n\t\"EA7E25ADE3FE68F5B786EE0AA82B1FE5\":{n:\"Galatic (208 in 1) (Unknown) (PAL)\"},\n\t\"590AC71FA5F71D3EB29C41023B09ADE9\":{n:\"Galaxian (01-05-1983) (Atari) (Prototype)\"},\n\t\"803393ED29A9E9346569DD1BF209907B\":{n:\"Galaxian (02-04-1983) (Atari) (Prototype)\"},\n\t\"211774F4C5739042618BE8FF67351177\":{n:\"Galaxian (1983) (Atari)\"},\n\t\"13A37CF8170A3A34CE311B89BDE82032\":{n:\"Galaxian (1983) (Atari) (PAL)\"},\n\t\"18DC28BC22402F21E1C9B81344B3B8C5\":{n:\"Galaxian (1983) (Atari) (PAL) [a1]\"},\n\t\"218B76F5A4142DC2EA9051A768583D70\":{n:\"Galaxian (1983) (Atari) (PAL) [a2]\"},\n\t\"D65028524761EF52FBBDEBAB46F79D0F\":{n:\"Galaxian (CCE)\"},\n\t\"93C8D9D24F9C5F1F570694848D087DF7\":{n:\"Galaxian (Digivision)\"},\n\t\"579BAA6A4AA44F035D245908EA7A044D\":{n:\"Galaxian Enhanced Graphics (Jess Ragan) (Hack)\"},\n\t\"D6B8BEEB05E5B730084D4B8F381BBF8D\":{n:\"Game Select (208 in 1) (Unknown) (PAL)\"},\n\t\"31F4692EE2CA07A7CE1F7A6A1DAB4AC9\":{n:\"Game of Concentration (1980) (Atari) (4K)\"},\n\t\"F539E32BF6CE39C8CA47CB0CDD2C5CB8\":{n:\"GameLine Master Module ROM (1983) (Control Video)\"},\n\t\"DB971B6AFC9D243F614EBF380AF0AC60\":{n:\"Gamma-Attack (1983) (Gammation)\"},\n\t\"A7523DB9A33E9417637BE0E71FA4377C\":{n:\"Gangster (Ariola) (PAL)\"},\n\t\"20EDCC3AA6C189259FA7E2F044A99C49\":{n:\"Gangster Alley (1982) (Spectravision)\"},\n\t\"BAE66907C3200BC63592EFE5A9A69DBB\":{n:\"Gangster Alley (1982) (Spectravision) (PAL)\"},\n\t\"DC13DF8420EC69841A7C51E41B9FBBA5\":{n:\"Garfield (06-21-1984) (Atari) (Prototype)\"},\n\t\"E0EFF071F578ECF19EDC2AB276644E46\":{n:\"Gas Gauge Demo (2001) (Joe Grand) (PD)\"},\n\t\"61EF8C2FC43BE9A04FE13FDB79FF2BD9\":{n:\"Gas Gauge Demo - Revisited (2001) (Joe Grand) (PD)\"},\n\t\"728152F5AE6FDD0D3A9B88709BEE6C7A\":{n:\"Gas Hog (1983) (Spectravideo)\"},\n\t\"5CBD7C31443FB9C308E9F0B54D94A395\":{n:\"Gas Hog (1983) (Spectravideo) [fixed]\"},\n\t\"E64A8008812327853877A37BEFEB6465\":{n:\"Gauntlet (1983) (Answer Software)\"},\n\t\"E784A9D26707CFCD170A4C1C60422A72\":{n:\"Gefecht im All (1983) (Quelle) (PAL)\"},\n\t\"7E464186BA384069582D9F0C141F7491\":{n:\"General Re-Treat (1982) (PlayAround) (PAL)\"},\n\t\"2BEE7F226D506C217163BAD4AB1768C0\":{n:\"Ghost Manor (1983) (Xonox)\"},\n\t\"0EECB5F58F55DE9DB4EEDB3A0F6B74A8\":{n:\"Ghost Manor (1983) (Xonox) (4K)\"},\n\t\"40D8ED6A5106245AA79F05642A961485\":{n:\"Ghost Manor (1983) (Xonox) (PAL)\"},\n\t\"3B10106836565E5DB28C7823C0898FBB\":{n:\"Ghost Manor (1983) (Xonox) (PAL) [a]\"},\n\t\"7B33407B2B198AF74906B936CE1EECBB\":{n:\"Ghostbuster 2 (King Atari)\",c:1},\n\t\"D36308387241E98F813646F346E7F9F7\":{n:\"Ghostbuster 2 (King Atari) (PAL)\",c:1},\n\t\"E314B42761CD13C03DEF744B4AFC7B1B\":{n:\"Ghostbusters (1985) (Activision)\"},\n\t\"F7D6592DCB773C81C278140ED4D01669\":{n:\"Ghostbusters (1985) (Activision) (PAL)\"},\n\t\"721A5567F76856F6B50A6707AA8F8316\":{n:\"Ghostbusters (1985) (Activision) (PAL) [a]\"},\n\t\"C2B5C50CCB59816867036D7CF730BF75\":{n:\"Ghostbusters II (1992) (Salu) (PAL)\",c:1},\n\t\"643E6451EB6B8AB793EB60BA9C02E000\":{n:\"Ghostbusters II (1992) (Salu) (PAL) [different tune]\",c:1},\n\t\"718EE85EA7EC27D5BEA60D11F6D40030\":{n:\"Ghostbusters II (1992) (Thomas Jentzsch)\",c:1},\n\t\"1C8C42D1AEE5010B30E7F1992D69216E\":{n:\"Gigolo (1982) (PlayAround)\",c:1},\n\t\"F303630A2D7316787AECD67FFF6B2E33\":{n:\"Gingerbread Man (Fred Quimby)\"},\n\t\"37E828675D556775AE8285C0CAF7D11C\":{n:\"Gingerbread Man (Fred Quimby) (Genesis)\"},\n\t\"5E0C37F534AB5CCC4661768E2DDF0162\":{n:\"Glacier Patrol (1989) (Telegames)\"},\n\t\"2D9E5D8D083B6367EDA880E80DFDFAEB\":{n:\"Glib (1983) (Selchow & Righter)\"},\n\t\"A591B5E8587AAE0D984A0F6FE2CC7D1C\":{n:\"Globe Trotter Demo (24-03-2003) (Weston)\"},\n\t\"0F6676B05621F80C670966E2995B227A\":{n:\"Globe Trotter Demo 1 (24-03-2003) (Weston)\"},\n\t\"103F1756D9DC0DD2B16B53AD0F0F1859\":{n:\"Go Go Home Monster (1983) (Quelle) (PAL)\"},\n\t\"4093382187F8387E6D011883E8EA519B\":{n:\"Go Go Home Monster (Unknown)\"},\n\t\"CFB83A3B0513ACAF8BE4CAE1512281DC\":{n:\"Going-Up (1983) (Starpath) (Prototype)\"},\n\t\"2E663EAA0D6B723B645E643750B942FD\":{n:\"Golf (1980) (Atari)\"},\n\t\"F542B5D0193A3959B54F3C4C803BA242\":{n:\"Golf (1980) (Atari) (4K)\"},\n\t\"9D522A3759AA855668E75962C84546F7\":{n:\"Golf (1980) (Atari) (PAL)\"},\n\t\"BB756AA98B847DDDC8FC170BC79F92B2\":{n:\"Golf (208 in 1) (Unknown) (PAL)\"},\n\t\"95351B46FA9C45471D852D28B9B4E00B\":{n:\"Golf (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"DB5073BD75EB05F7D62A7268396D1E77\":{n:\"Golf (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"C16C79AAD6272BAFFB8AAE9A7FFF0864\":{n:\"Gopher (1982) (U.S. Games)\"},\n\t\"A56B642A3D3AB9BBEEE63CD44EB73216\":{n:\"Gopher (1983) (Carrere Video) (PAL)\"},\n\t\"8F90590DBA143D783DF5A6CFF2000E4D\":{n:\"Gopher (208 in 1) (Unknown) (PAL)\"},\n\t\"06DB908011065E5EBB37F4E253C2A0B0\":{n:\"Gopher (Unknown) (PAL)\"},\n\t\"81B3BF17CF01039D311B4CD738AE608E\":{n:\"Gorf (1982) (CBS Electronics)\",c:1},\n\t\"3E03086DA53ECC29D855D8EDF10962CB\":{n:\"Gorf (1982) (CBS Electronics) (PAL)\",c:1},\n\t\"98BA601A60172CB46C5BF9A962FD5B1F\":{n:\"Gorilla Kong (Hack)\"},\n\t\"2903896D88A341511586D69FCFC20F7D\":{n:\"Grand Prix (1982) (Activision)\"},\n\t\"DE4436EAA41E5D7B7609512632B90078\":{n:\"Grand Prix (1982) (Activision) (16K)\"},\n\t\"5E1B7A6078AF428EF056FE85A37A95CA\":{n:\"Grand Prix (1982) (Activision) (8K)\"},\n\t\"757F529026696E13838364DEA382A4ED\":{n:\"Grand Prix (1982) (Activision) (PAL)\"},\n\t\"41C4E3D45A06DF9D21B7AAE6AE7E9912\":{n:\"Grand Prix (1983) (CCE)\"},\n\t\"E5F84930AA468DB33C0D0F7B26DD8293\":{n:\"Grand Prix (1983) (CCE) [a]\"},\n\t\"D5D2D44FB73785996CCC24AE3A0F5CEF\":{n:\"Grand Prix (Robby)\"},\n\t\"0F738DC44437557624EB277ED7AD91C9\":{n:\"Grand Prix (Unknown) (PAL)\"},\n\t\"9E437229136F1C5E6EF4C5F36178ED18\":{n:\"Grand Prize (Funvision)\"},\n\t\"5A9685C4D51A6C1D6A9544946D9E8DC3\":{n:\"Grandma's Revenge (AtariAge)\"},\n\t\"4767356FA0ED3EBE21437B4473D4EE28\":{n:\"Gravitar (04-12-1983) (Atari) (Prototype)\"},\n\t\"8AC18076D01A6B63ACF6E2CAB4968940\":{n:\"Gravitar (1983) (Atari)\"},\n\t\"A81697B0C8BBC338AE4D0046EDE0646B\":{n:\"Gravitar (CCE)\"},\n\t\"9245A84E9851565D565CB6C9FAC5802B\":{n:\"Great Escape (1983) (Bomb)\"},\n\t\"ED014BEEEB77DBB2BBCF9B5F6850B2F4\":{n:\"Green Bar Text Demo (PD)\"},\n\t\"ABC64037CA5D5B04AE8A7EEDBCA3ED74\":{n:\"Green and Yellow Number 1 Demo (PD)\",c:1},\n\t\"B41FDD4A522E1D5A2721840028684AC2\":{n:\"Green and Yellow Number 1 Demo 2 (PD)\",c:1},\n\t\"42B5E3A35B032F033809AFB0EA28802D\":{n:\"Gremlins (03-12-1984) (Atari) (Prototype)\"},\n\t\"01CB3E8DFAB7203A9C62BA3B94B4E59F\":{n:\"Gremlins (1984) (Atari)\"},\n\t\"9962034EA7B3D4A905D0991804670087\":{n:\"Grid Demo (PD)\"},\n\t\"95A69CF8C08EF1522B050529464F0BCA\":{n:\"Grid Pattern Demo 1 (20-12-2002) (CT)\"},\n\t\"8D9A06101EBB0F147936356E645309B8\":{n:\"Grid Pattern Demo 2 (20-12-2002) (CT)\"},\n\t\"D65900FEFA7DC18AC3AD99C213E2FA4E\":{n:\"Grid and Purple Dot Demo (PD)\"},\n\t\"EB46E99EC15858F8CD8C91CEF384CE09\":{n:\"Ground Zero (1983) (Goliath) (PAL)\"},\n\t\"66B89BA44E7AE0B51F9EF000EBBA1EB7\":{n:\"Grover's Music Maker (01-18-1983) (Atari) (Prototype)\"},\n\t\"4AC9F40DDFCF194BD8732A75B3F2F214\":{n:\"Grover's Music Maker (12-29-1982) (Atari) (Prototype)\"},\n\t\"7AB2F190D4E59E8742E76A6E870B567E\":{n:\"Guardian (1982) (Apollo)\",p:1},\n\t\"6A07836C382195DD5305CE61D992AAA6\":{n:\"Guardian (1982) (Apollo) (Prototype)\",p:1},\n\t\"F750B5D613796963ACECAB1690F554AE\":{n:\"Gunfight 2600 (MP)\"},\n\t\"18B28B386ABDADB3A700AC8FB68E639A\":{n:\"Gunfight 2600 (MP) (PAL)\"},\n\t\"6CBE945E16D9F827D0D295546AC11B22\":{n:\"Gunfight 2600 - AI (MP)\"},\n\t\"2ABC3D46B3F2140160759E2E10BC86D9\":{n:\"Gunfight 2600 - Beta Release! (2001) (MP)\"},\n\t\"9853089672116117258097DBBDB939B7\":{n:\"Gunfight 2600 - Cowboy Hair (2001) (MP)\"},\n\t\"A025A8F83A42A4D6D46C4887E799BFAC\":{n:\"Gunfight 2600 - Descissions had to be made (2001) (MP)\"},\n\t\"25472DFDEEF6A42581A231D631D6B04D\":{n:\"Gunfight 2600 - Design thoughts (MP)\"},\n\t\"14A56B493A8D9D10E94A3E100362E3A2\":{n:\"Gunfight 2600 - Early Play-kernel (2001) (MP)\"},\n\t\"0FBA7D8C3520BDB681F75494E498EC36\":{n:\"Gunfight 2600 - Final Run (MP)\"},\n\t\"91A3749FF7B7E72B7FA09E05396A0E7B\":{n:\"Gunfight 2600 - Final Run Part 2 (2002) (MP)\"},\n\t\"29396DB58406084E416032C372734A3E\":{n:\"Gunfight 2600 - Fixed Beta Release! (2001) (MP)\"},\n\t\"862CF669CBCED78F9ED31A5D375B2EBE\":{n:\"Gunfight 2600 - Flicker acceptance (2001) (MP)\"},\n\t\"910DD9BF98CC5BC080943E5128B15BF5\":{n:\"Gunfight 2600 - Improved AI (MP)\"},\n\t\"C21450C21EFB7715746E9FA87AD6F145\":{n:\"Gunfight 2600 - It could've been soooo cool, but... (2001) (MP)\"},\n\t\"D17A671029B1532B197DEFCA5F3649A7\":{n:\"Gunfight 2600 - Limit broken again! (2001) (MP)\"},\n\t\"E6F49A1053C79211F82BE4D90DC9FE3D\":{n:\"Gunfight 2600 - Little progress... (2001) (MP)\"},\n\t\"C67FF409F28F44883BD5251CEA79727D\":{n:\"Gunfight 2600 - Music & Bugfixes 1 (2001) (MP)\"},\n\t\"7D93071B3E3616093A6B5A98B0315751\":{n:\"Gunfight 2600 - Music & Bugfixes 2 (2001) (MP)\"},\n\t\"BC703EA6AFB20BC089F04D8C9D79A2BD\":{n:\"Gunfight 2600 - Not mergeable with Colbert wizardry... (2001) (MP)\"},\n\t\"111029770226B319524134193886A10E\":{n:\"Gunfight 2600 - One Limit Reached! (2001) (MP)\"},\n\t\"68C80E7E1D30DF98A0CF67ECBF39CC67\":{n:\"Gunfight 2600 - One Step Forward & Two Steps Back (2001) (MP)\"},\n\t\"E4A0B28BEFAAA2915DF1FA01238B1E29\":{n:\"Gunfight 2600 - Red River (MP)\"},\n\t\"CFDB4D0427A1EA8085C6BC6EB90259D8\":{n:\"Gunfight 2600 - Release Candidate (2001) (MP)\"},\n\t\"83D15FB9843D9F84AA3710538403F434\":{n:\"Gunfight 2600 - Release Candidate (2001) (MP) (PAL)\"},\n\t\"DFCDD6F593BB7B05DBC2E8E1FC6EE0DE\":{n:\"Gunfight 2600 - Scenarios complete (MP)\"},\n\t\"D245E2F27C84016041E9496B66B722FE\":{n:\"Gunfight 2600 - The Final Kernel (MP)\"},\n\t\"991D57BBCD529AD62925098E0AEC1241\":{n:\"Gunfight 2600 - The Final Kernel (MP) [a1]\"},\n\t\"A4F1CEA2C8479284E2A2292F8D51B5FA\":{n:\"Gunfight 2600 - The Final Kernel Part 2 (MP)\"},\n\t\"D81BB6965E6C99B3BE99FFD8978740E4\":{n:\"Gunfight 2600 - The Final Kernel Part 3 (MP)\"},\n\t\"A15B5831A1FAB52E4C416068C85EC011\":{n:\"Gunfight 2600 - The Good, The Bad, The Ugly (2001) (MP)\"},\n\t\"24AD538291EB5F5CAC4B9998F3B851C3\":{n:\"Gunfight 2600 - This time it's your decission! (2001) (MP)\"},\n\t\"801BA40F3290FC413E8C816C467C765C\":{n:\"Gunfight 2600 - Westward Ho! (2001) (MP)\"},\n\t\"24759BE31E8FE55D2829FD86BDF3181F\":{n:\"Gunfight 2600 - Worst Nightmare... (2001) (MP)\"},\n\t\"B311AB95E85BC0162308390728A7361D\":{n:\"Gyruss (1984) (Parker Bros)\",c:1},\n\t\"E600F5E98A20FAFA47676198EFE6834D\":{n:\"Gyruss (1984) (Parker Bros) (PAL)\",c:1},\n\t\"FCA4A5BE1251927027F2C24774A02160\":{n:\"H.E.R.O. (1984) (Activision)\"},\n\t\"D9B49F0678776E04916FA5478685A819\":{n:\"H.E.R.O. (1984) (Activision) (PAL)\"},\n\t\"48BCF2C5A8C80F18B24C55DB96845472\":{n:\"H.E.R.O. (1984) (Activision) (PAL) (16K)\"},\n\t\"467340A18158649AA5E02A4372DCFCCD\":{n:\"H.E.R.O. (1984) (Activision) (PAL) [a1]\"},\n\t\"66B92EDE655B73B402ECD1F4D8CD9C50\":{n:\"H.E.R.O. (1984) (Activision) (PAL) [a2]\"},\n\t\"1D284D6A3F850BAFB25635A12B316F3D\":{n:\"H.E.R.O. (CCE)\"},\n\t\"769DDC995DBB9EDB8167EFCEA9F34A7C\":{n:\"H.E.R.O. (Genesis)\"},\n\t\"BDF1996E2DD64BAF8EFF5511811CA6CA\":{n:\"H.E.R.O. (Tron)\"},\n\t\"98E7CAAAB8EC237558378D2776C66616\":{n:\"HMOVE Test (Bradford W. Mott) (1998) (PD)\"},\n\t\"30516CFBAA1BC3B5335EE53AD811F17A\":{n:\"Halloween (1983) (Wizard Video Games)\"},\n\t\"C450A285DAA7A3B65188C2C3CF04FB3E\":{n:\"Halloween (1983) (Wizard Video Games) [a]\"},\n\t\"54DA3B0B3F43F5B37911C135B9432B49\":{n:\"Halloween III Revision (Hack)\",p:1},\n\t\"4AFA7F377EAE1CAFB4265C68F73F2718\":{n:\"Halo 2600 (2010) (Ed Fries)\"},\n\t\"F16C709DF0A6C52F47FF52B9D95B7D8D\":{n:\"Hangman (1978) (Atari)\"},\n\t\"378C118B3BDA502C73E76190CA089EEF\":{n:\"Hangman (1978) (Atari) (PAL)\"},\n\t\"C3E4AA718F46291311F1CCE53E6CCD79\":{n:\"Hangman Ghost 4letter (Hack)\"},\n\t\"99A24D7BB31D49B720B422550B32C35F\":{n:\"Hangman Ghost Biglist1 (Hack)\"},\n\t\"6AA66E9C3EEA76A0C40EF05513497C40\":{n:\"Hangman Ghost Biglist2 (Hack)\"},\n\t\"A62E3E19280FF958407E05CA0A2D5EC7\":{n:\"Hangman Ghost Biglist3 (Hack)\"},\n\t\"4E37992A37EA36489283F7EB90913BBC\":{n:\"Hangman Ghost Halloween (Kris) (Hack)\"},\n\t\"8E822B39A71C84AC875F0107FB61D6F0\":{n:\"Hangman Ghost Original Words (Hack)\"},\n\t\"9671B658286E276CC4A3D02AA25931D2\":{n:\"Hangman Ghost Wordlist (Hack)\"},\n\t\"502044B1AC111B394E6FBB0D821FCA41\":{n:\"Hangman Invader 4letter (Hack)\"},\n\t\"2C9FADD510509CC7F28F1CCBA931855F\":{n:\"Hangman Invader Biglist1 (Hack)\"},\n\t\"6C658B52D03E01828B9D2D4718A998AC\":{n:\"Hangman Invader Biglist2 (Hack)\"},\n\t\"8A9D953AC3DB52A313A90D6A9B139C76\":{n:\"Hangman Invader Biglist3 (Hack)\"},\n\t\"E8F7679359C4F532F5D5E93AF7D8A985\":{n:\"Hangman Invader Original Words (Hack)\"},\n\t\"8A42E2C7266439D8997A55D0124C912C\":{n:\"Hangman Invader Wordlist (Hack)\"},\n\t\"898748D5EAAC3164B0391A64AE1E0E32\":{n:\"Hangman Man 4letter (Hack)\"},\n\t\"135708B9A7DD20576C1B66AB2A41860D\":{n:\"Hangman Man Biglist1 (Hack)\"},\n\t\"1F562B89D081E36D58E6FC943512EC05\":{n:\"Hangman Man Biglist2 (Hack)\"},\n\t\"5CE98F22ADE915108860424D8DDE0D35\":{n:\"Hangman Man Biglist3 (Hack)\"},\n\t\"227532D82505C3C185A878273C285D5F\":{n:\"Hangman Man Original Words (Hack)\"},\n\t\"4CA90BA45ECED6F5AD560EA8938641B2\":{n:\"Hangman Man Wordlist (Hack)\"},\n\t\"67CF913D1DF0BF2D7AE668060D0B6694\":{n:\"Hangman Monkey 4letter (Hack)\"},\n\t\"1738B2E3F25AB3EEF3CECB95E1D0D957\":{n:\"Hangman Monkey Biglist1 (Hack)\"},\n\t\"205070B6A0D454961DD9196A8E81D877\":{n:\"Hangman Monkey Biglist2 (Hack)\"},\n\t\"DAC38B4DD3DA73BB7B2E9D70C61D2B7C\":{n:\"Hangman Monkey Biglist3 (Hack)\"},\n\t\"30C92C685224DC7A72B9BBE5EB62D004\":{n:\"Hangman Monkey Original Words (Hack)\"},\n\t\"7860716FA5DBC0FFFAB93FB9A4CB4132\":{n:\"Hangman Monkey Wordlist (Hack)\"},\n\t\"CD032AB6764B55438A7B0BFB5E78595A\":{n:\"Hangman Pac-Man 4letter (Hack)\"},\n\t\"0A1B98937911D621B004B1617446D124\":{n:\"Hangman Pac-Man Biglist1 (Hack)\"},\n\t\"DCA941DAB5C6F859B71883B13ADE9744\":{n:\"Hangman Pac-Man Biglist2 (Hack)\"},\n\t\"662ECA7E3D89175BA0802E8E3425DEDB\":{n:\"Hangman Pac-Man Biglist3 (Hack)\"},\n\t\"9BD4E0D5F28BA6DA417C26649171F8E4\":{n:\"Hangman Pac-Man Original Words (Hack)\"},\n\t\"79D4AF56036EC28F298CAD964A2E2494\":{n:\"Hangman Pac-Man Wordlist (Hack)\"},\n\t\"BE1922BD8E09D74DA471287E1E968653\":{n:\"Hangman Pacman Demo (Cropsy) (Hack)\"},\n\t\"A8435EC570141DE5D833C4ABEC499E55\":{n:\"Happy Birthday Demo (2001) (Dennis Debro) (PD)\"},\n\t\"B9232C1DE494875EFE1858FC8390616D\":{n:\"Harbor Escape (1983) (Panda)\"},\n\t\"A34560841E0878C7B14CC65F79F6967D\":{n:\"Harem (1982) (Multivision)\"},\n\t\"F0A6E99F5875891246C3DBECBF2D2CEA\":{n:\"Haunted House (1982) (Atari)\"},\n\t\"09E1ECF9BD2A3030D5670DBA7A65E78D\":{n:\"Haunted House (1982) (Atari) (PAL)\"},\n\t\"06742CF522F23797157F215A1DC8A1A9\":{n:\"Healthbars (PD)\"},\n\t\"260C787E8925BF3649C8AEAE5B97DCC0\":{n:\"Hell Driver (Thomas Jentzsch)\"},\n\t\"E77F332B71F13884C84771E7A121182D\":{n:\"Hey! Stop! (Jone Yuan)\"},\n\t\"FE9AE625D924B54C9F8A14AC9A0F6C6D\":{n:\"High Bid! (BG Dodson) (Hack)\"},\n\t\"8FE00172E7FFF4C1878DABCF11BB8DCE\":{n:\"Hili Ball (1983) (Quelle) (PAL)\",c:1},\n\t\"CD34B3B3EF9E485201E841BA71BEB253\":{n:\"Hit HMOVE At Various Cycles After WSYNC Test (Bradford W. Mott) (1998) (PD)\"},\n\t\"3D48B8B586A09BDBF49F1A016BF4D29A\":{n:\"Hole Hunter (Video Game Cartridge)\"},\n\t\"C52D9BBDC5530E1EF8E8BA7BE692B01E\":{n:\"Holey Moley (02-29-1984) (Atari) (Prototype)\"},\n\t\"0BFABF1E98BDB180643F35F2165995D0\":{n:\"Home Run (1978) (Atari)\"},\n\t\"9F901509F0474BF9760E6EBD80E629CD\":{n:\"Home Run (1978) (Atari) (4K)\"},\n\t\"328949872E454181223A80389D03C122\":{n:\"Home Run (Unknown) (PAL)\"},\n\t\"24B5F4BBDB853ECA38EA0CAE2DFE73A1\":{n:\"Home Run (Unknown) (PAL) (4K)\"},\n\t\"CA7AAEBD861A9EF47967D31C5A6C4555\":{n:\"Homerun (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"63811ED69BDBC35C69D8AA7806C3D6E9\":{n:\"Homerun (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"F7A651972D78F9BA485B14690452D4BE\":{n:\"Homestar Runner Demo #2 (2004-03-29)\",c:1},\n\t\"6B7A56B6AC2CA4BF9254474BF6ED7D80\":{n:\"Horizonal Color Bars Demo (PD)\"},\n\t\"68449E4AABA677ABCD7CDE4264E02168\":{n:\"Horizonal Color Bars Demo 2 (PD)\"},\n\t\"70A8480CFAF08776E5420365732159D2\":{n:\"Horizontally Scrolling Playfield Thing (Rob Kudla) (PD)\"},\n\t\"78821EF76EBC3934850D1BC1B9E4F4B0\":{n:\"Hot Action Pak - Ghostbusters, Tennis, Plaque Attack (1990) (HES) (PAL)\"},\n\t\"CCD6CE508EEE4B3FCA67212833EDCD85\":{n:\"Hot Wave (Double-Game Package) (1983) (Quelle) (PAL)\"},\n\t\"2DBC92688F9BA92A7E086D62BE9DF79D\":{n:\"How to Draw a Playfield (1997) (Jim Crawford) (PD)\"},\n\t\"D6D5DD8FD322D3CF874E651E7B6C1657\":{n:\"How to Draw a Playfield (1997) (Nick Bensema) (PD)\"},\n\t\"9E904E2EAA471C050C491289B8B80F60\":{n:\"How to Draw a Playfield II (1997) (Erik Mooney) (PD)\"},\n\t\"4A45C6D75B1BA131F94A9C13194D8E46\":{n:\"How to Draw a Playfield II (Joystick Hack) (1997) (Eric Bacher) (PD)\"},\n\t\"7DC03A1F56D0E6A8AAE3E3E50D654A08\":{n:\"Hozer Video Demo (PD)\"},\n\t\"11330EAA5DD2629052FAC37CFE1A0B7D\":{n:\"Human Cannonball (128-in-1 Junior Console) (PAL)\"},\n\t\"C6C63DA3BC2E47291F63280E057061D0\":{n:\"Human Cannonball (128-in-1 Junior Console) (PAL) (4K)\"},\n\t\"7972E5101FA548B952D852DB24AD6060\":{n:\"Human Cannonball (1979) (Atari)\"},\n\t\"FFE51989BA6DA2C6AE5A12D277862E16\":{n:\"Human Cannonball (1979) (Atari) (4K)\"},\n\t\"10A3CD14E5DCFDDE6FF216A14CE7B7DD\":{n:\"Human Cannonball (1979) (Atari) (PAL)\"},\n\t\"AD42E3CA3144E2159E26BE123471BFFC\":{n:\"Human Cannonball (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"4BDAE9246D6EE258C26665512C1C8DE3\":{n:\"Human Cannonball (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"42DCC02777B0BCFACD85AEB61D33558A\":{n:\"Human Cannonball (Unknown) (PAL) (4K)\"},\n\t\"5BE03A1FE7B2C114725150BE04B38704\":{n:\"Hunt & Score (1978) (Atari) (PAL)\"},\n\t\"B26506FBF411009E5E3F7365F442960E\":{n:\"Hunt & Score (1978) (Atari) (PAL) (4K)\"},\n\t\"102672BBD7E25CD79F4384DD7214C32B\":{n:\"Hunt & Score - Memory Match (1978) (Atari)\"},\n\t\"F4C2E50B01DFF99BDDBE037B3489511C\":{n:\"Hypnotic (V0.04) (2001) (Inkling) (PD)\"},\n\t\"7C9B3B8B25ACF2FE3B8DA834F69629C6\":{n:\"I Robot (1984) (Atari) (Prototype) [!]\"},\n\t\"F6A282374441012B01714E19699FC62A\":{n:\"I Want My Mommy (1983) (ZiMAG)\",c:1},\n\t\"DC33479D66615A3B09670775DE4C2A38\":{n:\"I.Q. Memory Teaser (Suntek) (PAL)\"},\n\t\"2016726DB38AD6A68B4C48BA6FE51557\":{n:\"INV 2 (Piero Cavina, Erik Mooney)\"},\n\t\"9EA8ED9DEC03082973244A080941E58A\":{n:\"INV+\"},\n\t\"AB301D3D7F2F4FE3FDD8A3540B7A74F5\":{n:\"IQ 180 (Jone Yuan)\"},\n\t\"4B9581C3100A1EF05EAC1535D25385AA\":{n:\"IQ 180 (Unknown)\"},\n\t\"A4C08C4994EB9D24FB78BE1793E82E26\":{n:\"Ice Hockey (1981) (Activision)\"},\n\t\"5BCC83677D68F7EF74C1B4A0697BA2A8\":{n:\"Ice Hockey (1981) (Activision) (16K)\"},\n\t\"3EB21313EA5D5764C5ED9160A5A55A83\":{n:\"Ice Hockey (1981) (Activision) (8K)\"},\n\t\"AC9ADBD6DE786A242E19D4BEC527982B\":{n:\"Ice Hockey (1981) (Activision) (PAL)\"},\n\t\"C7D5819B26B480A49EB26AEB63CC831E\":{n:\"Ice Hockey (4 Game in One Light Green) (1983) (BitCorp) (PAL)\"},\n\t\"47711C44723DA5D67047990157DCB5DD\":{n:\"Ice Hockey (CCE)\"},\n\t\"C3AEB796FDAF9429E8CD6AF6346F337E\":{n:\"If It's Not One Thing It's Another (1997) (Chris Cracknell)\"},\n\t\"9A21FBA9EE9794E0FADD7C7EB6BE4E12\":{n:\"Ikari Warriors (1989) (Atari)\"},\n\t\"321C3451129357AF42A375D12AFD4450\":{n:\"Ikari Warriors (1989) (Atari) (PAL)\"},\n\t\"9813B9E4B8A6FD919C86A40C6BDA8C93\":{n:\"Ikari Warriors (1989) (Atari) (PAL) [a]\"},\n\t\"3F251C50AA7237E61A38AB42315EBED4\":{n:\"Ikari Warriors (1990) (Thomas Jentzsch)\"},\n\t\"95E542A7467C94B1E4AB24A3EBE907F1\":{n:\"Im Schutz der Drachen (1983) (Quelle) (PAL)\",c:1},\n\t\"C4BC8C2E130D76346EBF8EB544991B46\":{n:\"Imagic Selector ROM (1982) (Imagic)\"},\n\t\"9B21D8FC78CC4308990D99A4D906EC52\":{n:\"Immies & Aggies (1983) (CCE)\"},\n\t\"75A303FD46AD12457ED8E853016815A0\":{n:\"Immies & Aggies (1983) (ZiMAG) (Prototype)\"},\n\t\"47ABFB993FF14F502F88CF988092E055\":{n:\"Inca Gold (Zellers)\"},\n\t\"F137211537438B1FCE3D811BAEF25457\":{n:\"Incoming (02-10-2002) (Ben Larson) (PD)\"},\n\t\"FE870018332A0221EB59FB18B0C6BCCC\":{n:\"Incoming (08-11-2002) (Ben Larson) (PD)\"},\n\t\"86B4AA76BBEB70E1A4F9211A9880BA8E\":{n:\"Incoming (1 Player Version) (05-11-2002) (Ben Larson)\"},\n\t\"3556E125681AEA864E17B09F3F3B2A75\":{n:\"Incoming (2 Player Demo) (PD)\"},\n\t\"15BCD74F2F1F2A63E1AA93E90D2C0555\":{n:\"Incoming (22-08-2002) (Ben Larson) (PD)\"},\n\t\"03B1051C9374678363C899914412CFC5\":{n:\"Incoming (30-10-2002) (Ben Larson) (PD)\"},\n\t\"76C88341017EAE660EFC6E49C4B6AB40\":{n:\"Indiana Pitfall (Hack)\"},\n\t\"C5301F549D0722049BB0ADD6B10D1E09\":{n:\"Indy 500 (1977) (Atari)\"},\n\t\"08188785E2B8300983529946DBEFF4D2\":{n:\"Indy 500 (1977) (Atari) (4K)\"},\n\t\"DAC762E4D01D445BDEF20B7771F6570E\":{n:\"Indy 500 (1977) (Atari) (4K) [a]\"},\n\t\"81591A221419024060B890665BEB0FB8\":{n:\"Indy 500 (1977) (Atari) (PAL)\"},\n\t\"63166867F75869A3592B7A94EA62D147\":{n:\"Indy 500 (Hack) [a1]\"},\n\t\"30E012E8D50330C8972F126B8E913BC4\":{n:\"Indy 500 (Hack) [a2]\"},\n\t\"4F781F0476493C50DC578336F1132A67\":{n:\"Indy 500 (Unknown) (PAL) (4K)\"},\n\t\"0C7BD935D9A7F2522155E48315F44FA0\":{n:\"Infernal Tower (1983) (Carrere Video) (PAL)\",c:1},\n\t\"AFE88AAE81D99E0947C0CFB687B16251\":{n:\"Infiltrate (1981) (Apollo)\",c:1},\n\t\"3B69F8929373598E1752F43F8DA61AA4\":{n:\"Infiltrate (1981) (Apollo) (PAL)\",c:1},\n\t\"FB5C8AF97BD8FFE88323656F462645A7\":{n:\"Interlace Demo (Glenn Saunders)\",c:1},\n\t\"463E66AD98806A49106CFFA49C08E2ED\":{n:\"Interlace Game Demo (01-09-2002) (Billy Eno)\"},\n\t\"91FDB6541F70C40B16AABF8308123BE8\":{n:\"Interlacing Game (19-08-2002) (Billy Eno)\"},\n\t\"888DEBB162D7D1AE71025B4AB794257F\":{n:\"Interleaved ChronoColour - Nude Art (17-04-2003) (AD)\"},\n\t\"A25BB76E9E773117E567FD4300B1BB23\":{n:\"Interleaved ChronoColour Demo (NTSC) (05-03-2003) (AD)\"},\n\t\"3B097A7ED5BD2A84DC3D3ED361E9C31C\":{n:\"Interleaved ChronoColour Demo (PAL) (05-03-2003) (AD)\"},\n\t\"FB0E84CEE4C108D24253BCB7E382CFFD\":{n:\"Interleaved ChronoColour Demo (SECAM) (05-03-2003) (AD)\"},\n\t\"B4030C38A720DD84B84178B6CE1FC749\":{n:\"International Soccer (1982) (M Network)\"},\n\t\"29630A20D356FB58685B150BFA8F00C3\":{n:\"International Soccer (1982) (Mattel) [a]\"},\n\t\"CE904C0AE58D36D085CD506989116B0B\":{n:\"International Soccer (1989) (Telegames) (PAL)\"},\n\t\"A0185C06297B2818F786D11A3F9E42C3\":{n:\"International Soccer (Unknown) (PAL)\"},\n\t\"ADB770FF70E9ADF08BBB907A7ECCD240\":{n:\"Inv Demo 3 (2001) (Erik Mooney) (PD)\"},\n\t\"E0CF2DCC4C1348C468F5BB1E421C9164\":{n:\"Invader Sprites in a Line Demo (PD)\"},\n\t\"425EE444A41D218598893D6B6E03431A\":{n:\"Invaders Demo (2001) (TJ)\"},\n\t\"46C43FDCBCE8FDE3A91EBEAFC05B7CBD\":{n:\"Invaders Demo (PAL) (2001) (Eckhard Stolberg)\"},\n\t\"CD139AE6D09F3665AD09EB79DA3F9E49\":{n:\"Invaders by Erik Mooney (4-24-97) (PD)\"},\n\t\"8874B68751FD2BA6D3306A263AE57A7D\":{n:\"Invaders by Erik Mooney (Alpha 1) (PD)\"},\n\t\"6D475019EA30D0B29F695E9DCFD8F730\":{n:\"Invaders by Erik Mooney (Alpha 2) (PD)\"},\n\t\"62992392EA651A16AA724A92E4596ED6\":{n:\"Invaders by Erik Mooney (Beta) (PD)\"},\n\t\"4868A81E1B6031ED66ECD60547E6EC85\":{n:\"Invaders by Erik Mooney (V2.1) (1-3-98) (PD)\"},\n\t\"80CEC82239913CB8C4016EB13749DE44\":{n:\"Invaders from Space by David Marli (Space Invaders Hack)\"},\n\t\"850FFD5849C911946B24544EA1E60496\":{n:\"Invasion (07-10-2002) (CT)\"},\n\t\"273CE50DB5A0D6DA7EA827A54F44DEE9\":{n:\"Island Flyer Demo (PD)\"},\n\t\"C2778507B83D9540E9BE5713758FF945\":{n:\"Island Flyer Demo 2 (PD)\"},\n\t\"2F0546C4D238551C7D64D884B618100C\":{n:\"Ixion (1984) (Sega) (Prototype)\"},\n\t\"9C729017DD2F9CCBADCB511187F80E6B\":{n:\"J-Pac (Hack)\"},\n\t\"A5262FE6D01D6A1253692682A47F79DD\":{n:\"JKH Text Scrolling Demo (PD)\"},\n\t\"CE243747BF34A2DE366F846B3F4CA772\":{n:\"Jacky Jump (1983) (Home Vision) (PAL)\"},\n\t\"98EA10C47C13F1B3306C7B13DB304865\":{n:\"Jam Demo 1 (PD)\"},\n\t\"60D304582D33E2957B73EB300A7495BB\":{n:\"Jam Demo 2 (PD)\"},\n\t\"E51030251E440CFFAAB1AC63438B44AE\":{n:\"James Bond 007 (1983) (Parker Bros)\",c:1},\n\t\"04DFB4ACAC1D0909E4C360FD2AC04480\":{n:\"Jammed (2001) (XYPE) (NTSC)\"},\n\t\"BA317F83CDFCD58CBC65AAC1CCB87BC5\":{n:\"Jammed (2001) (XYPE) [a1]\"},\n\t\"911D385EE0805FF5B8F96C5A63DA7DE5\":{n:\"Jammed (V0.1) (Demo) (2001) (TJ)\"},\n\t\"15B498199ED0ED28057BF0DBDCE9B8D8\":{n:\"Jammed (V0.2) (Demo) (2001) (TJ)\"},\n\t\"EF5C02C95A1E7ED24F24193935755CD3\":{n:\"Jammed Demo (1999) (Hozer Video Games)\"},\n\t\"58A82E1DA64A692FD727C25FAEF2ECC9\":{n:\"Jaw Breaker (1983) (CCE)\"},\n\t\"A406D2F6D84E61D842F4CB13B2B1CFA7\":{n:\"Jawbreaker (1982) (Tigervision) (PAL)\"},\n\t\"97327D6962F8C64E6F926F79CD01C6B9\":{n:\"Jawbreaker (Unknown) (PAL)\"},\n\t\"8F33BCE5BA1053DCF4CEA9C1C69981E4\":{n:\"Jawbreaker (Unknown) (PAL) [a]\"},\n\t\"EB4252FAFF7A4F2BA5284A98B8F78D1A\":{n:\"John K Harvey's Equalizer (NTSC) (PD)\",c:1},\n\t\"30997031B668E37168D4D0E299CCC46F\":{n:\"John K Harvey's Equalizer (PAL) (PD)\",c:1},\n\t\"4FC1B85B8074B4B9436D097900E34F29\":{n:\"John K. Harvey's Equalizer (John K. Harvey)\",c:1},\n\t\"E39843C56B7A4A08B18FA7949EC3EE6B\":{n:\"Joshua Invaders (Hack)\"},\n\t\"718AE62C70AF4E5FD8E932FEE216948A\":{n:\"Journey Escape (1982) (Data Age)\",c:1},\n\t\"6B4EB5B3DF80995B8D9117CB7E9AEB3C\":{n:\"Journey Escape (1983) (Gameworld) (PAL)\",c:1},\n\t\"B2D3BCEE001CFF2BD2D8A21B2CB55109\":{n:\"Joust (08-09-1983) (Atari) (Prototype)\",c:1},\n\t\"3276C777CBE97CDD2B4A63FFC16B7151\":{n:\"Joust (1983) (Atari)\",c:1},\n\t\"640A08E9CA019172D612DF22A9190AFB\":{n:\"Joust (1983) (Atari) (PAL)\",c:1},\n\t\"17EE158D15E4A34F57A837BC1CE2B0CE\":{n:\"Joust (1983) (Atari) (PAL) [a]\",c:1},\n\t\"22319BE7A640AF5314EC3C482CCEB676\":{n:\"Joustpong (05-07-2002) (Kirk Israel) (PD)\"},\n\t\"706E3CC4931F984447213B92D1417AFF\":{n:\"Joustpong (06-07-2002) (Kirk Israel) (PD)\"},\n\t\"94102FEBC53B4A78342D11B645342ED4\":{n:\"Joustpong (14-07-2002) (Kirk Israel) (PD)\"},\n\t\"814210C0E121F7DBC25661B93C06311C\":{n:\"Joustpong (16-09-2002) (Kirk Israel) (PD)\"},\n\t\"C225ABFB584960EFE1F359FC94B73379\":{n:\"Joustpong (21-09-2002) (Kirk Israel) (PD)\"},\n\t\"36C29CEEE2C151B23A1AD7AA04BD529D\":{n:\"Jr. Pac-Man (1984) (Atari)\"},\n\t\"297C405AFD01F3AC48CDB67B00D273FE\":{n:\"Jr. Pac-Man (1984) (Atari) (PAL)\"},\n\t\"25265D0E7F88B3026003809F25EE025E\":{n:\"Jr. Pac-Man (1984) (Atari) [a]\"},\n\t\"161DED4A85D3C78E44FFFD40426F537F\":{n:\"JtzBall (Alpha) (TJ)\"},\n\t\"80E1410EC98089E0733CC09E584DBA4B\":{n:\"Jumping Jack (1983) (Dynamics) (PAL)\"},\n\t\"2CCCC079C15E9AF94246F867FFC7E9BF\":{n:\"Jungle Fever (1982) (PlayAround)\",c:1},\n\t\"FD16949913AAAB5BEAEFED73BF2CA67C\":{n:\"Jungle Hunt (02-03-1983) (Atari) (Prototype)\"},\n\t\"0EC93F519BB769E0D9F80E61F6CC8023\":{n:\"Jungle Hunt (02-25-1983) (Atari) (Prototype)\"},\n\t\"2BB9F4686F7E08C5FCC69EC1A1C66FE7\":{n:\"Jungle Hunt (1983) (Atari)\"},\n\t\"9FC2D1627DCDD8925F4C042E38EB0BC9\":{n:\"Jungle Hunt (1983) (Atari) (PAL)\"},\n\t\"C47244F5557AE12C61E8E01C140E2173\":{n:\"Jungle Hunt (1983) (Atari) (PAL) [a1]\"},\n\t\"2DCF9CE486393CD36CA0928CD53B96CB\":{n:\"Jungle Hunt (1983) (Atari) (PAL) [a2]\"},\n\t\"88A6C9C88CB329EE5FA7D168BD6C7C63\":{n:\"Jungle Hunt (1983) (CCE)\"},\n\t\"2496D404BFC561A40A80BEA6A69695C3\":{n:\"Jungle Hunt (1983) (CCE) [a]\"},\n\t\"000509D1ED2B8D30A9D94BE1B3B5FEBB\":{n:\"Jungle Jane (2003) (Greg Zumwalt) (Hack)\"},\n\t\"E1D5C8213E82820128FA9C4775F1E166\":{n:\"Jungle King (2003) (Jess Ragan) (Hack)\"},\n\t\"65917AE29A8C9785BB1F2ACB0D6AAFD0\":{n:\"Junkosoft One Year Demo (1999) (PD)\"},\n\t\"90B647BFB6B18AF35FCF613573AD2EEC\":{n:\"Juno First (2009)\",c:1},\n\t\"FA98D48CD609C9BABC819E0A1BD8D598\":{n:\"Juno First (2009) (PAL60)\",c:1},\n\t\"72A5B5052272AC785FA076709D16CEF4\":{n:\"KC Munckin (29-01-2003) (J. Parlee)\"},\n\t\"B9D1E3BE30B131324482345959AED5E5\":{n:\"Kabobber (07-25-1983) (Activision) (Prototype)\"},\n\t\"5428CDFADA281C569C74C7308C7F2C26\":{n:\"Kaboom! (1981) (Activision)\",p:1},\n\t\"E14DC36B24FE22C04FA076E298F2E15F\":{n:\"Kaboom! (1981) (Activision) (16K)\",p:1},\n\t\"AF6AB88D3D7C7417DB2B3B3C70B0DA0A\":{n:\"Kaboom! (1981) (Activision) (4K)\",p:1},\n\t\"ED8F319E82D355832195EB7715644795\":{n:\"Kaboom! (1981) (Activision) (8K)\",p:1},\n\t\"F9E99596345A84358BC5D1FBE877134B\":{n:\"Kaboom! (1981) (Activision) (PAL)\",p:1},\n\t\"B09B79C9628878BE051E89F7F1E77378\":{n:\"Kaboom! (1981) (Activision) (PAL) (4K)\",p:1},\n\t\"DBDAF82F4F0C415A94D1030271A9EF44\":{n:\"Kaboom! (CCE)\",p:1},\n\t\"E49AC0EC879A0D7820BC2598FC2CFCD4\":{n:\"Kaboom! (CCE) (4K)\",p:1},\n\t\"A93E8EA1F565C3C1E86B708CF0DC2FA9\":{n:\"Kabul! (Jess Ragan) (Hack)\",p:1},\n\t\"7B43C32E3D4FF5932F39AFCB4C551627\":{n:\"Kamikaze Saucers (1983) (Syncro) (Prototype)\"},\n\t\"73AA02458B413091AC940C0489301710\":{n:\"Kampf dem Steinfresser (1983) (Quelle) (PAL)\"},\n\t\"4326EDB70FF20D0EE5BA58FA5CB09D60\":{n:\"Kangaroo (1983) (Atari)\"},\n\t\"6FE67F525C39200A798985E419431805\":{n:\"Kangaroo (1983) (Atari) (PAL)\"},\n\t\"DD08E18CFEE87A0E7FC19A684B36E124\":{n:\"Kangaroo (1983) (Atari) (PAL) [a]\"},\n\t\"4431428A7500C96FC0E2798A5DBD36D6\":{n:\"Kangaroo (Genesis)\"},\n\t\"6D8A04EE15951480CB7C466E5951EEE0\":{n:\"Kanguru (1983) (Zirok)\"},\n\t\"10EAE73A07B3DA044B72473D8D366267\":{n:\"Karate (1982) (Funvision) (PAL)\"},\n\t\"CEDBD67D1FF321C996051EEC843F8716\":{n:\"Karate (1982) (Ultravision)\"},\n\t\"DD17711A30AD60109C8BEACE0D4A76E8\":{n:\"Karate (Unknown) (PAL)\"},\n\t\"65BA1A4C643D1AB44481BDDDEB403827\":{n:\"Katastrophen-Einsatz (1983) (Quelle) (PAL)\"},\n\t\"A1770EF47146AB7B12E2C4BECCD68806\":{n:\"Kaystone Kapers (1983) (Digitel)\"},\n\t\"810D8952AF5A6036FCA8D0C4E1B23DB6\":{n:\"Keystone (Tiger Vision)\"},\n\t\"BE929419902E21BD7830A7A7D746195D\":{n:\"Keystone Kapers (1983) (Activision)\"},\n\t\"6C1F3F2E359DBF55DF462CCBCDD2F6BF\":{n:\"Keystone Kapers (1983) (Activision) (PAL)\"},\n\t\"BEDFBDE71FB606601F936B5B057F26F7\":{n:\"Keystone Kapers (1983) (Activision) (PAL) (16K)\"},\n\t\"91925ABCE3A29E33B6A8B81482F4F5AF\":{n:\"Keystone Kapers (1983) (Activision) (PAL) (8K)\"},\n\t\"1351C67B42770C1BD758C3E42F553FEA\":{n:\"Keystone Kapers (Digivision)\"},\n\t\"F5A3E051730D45FEA518F2E8B926565B\":{n:\"Keystone Kapers (Robby)\"},\n\t\"E558BE88EEF569F33716E8E330D2F5BC\":{n:\"Keystone Kapers (Shock Vision)\"},\n\t\"8DB152458ABAEF3CFA7A4E420DDBDA59\":{n:\"Keystone Kapers (Unknown)\"},\n\t\"05AEDF04803C43EB5E09DFD098D3FD01\":{n:\"Keystone Kapers (Unknown) (PAL)\"},\n\t\"4FBE0F10A6327A76F83F83958C3CBEFF\":{n:\"Keystone Kappers (1983) (CCE)\"},\n\t\"E28113D10C0C14CC3B5F430B0D142FCB\":{n:\"Keystone Kappers (1983) (CCE) [a]\"},\n\t\"7187118674FF3C0BB932E049D9DBB379\":{n:\"Keystone Keypers (1983) (Zirok)\"},\n\t\"7A7F6AB9215A3A6B5940B8737F116359\":{n:\"Killer Satellites (1983) (Arcadia)\"},\n\t\"75E276BA12DC4504659481C31345703A\":{n:\"Killer Satellites (1983) (Arcadia) (PAL)\"},\n\t\"C0A68837C60E15D1FC5A40C9A62894BC\":{n:\"Killer Satellites (1983) (Arcadia) (Prototype)\"},\n\t\"9C27EF3BD01C611CDB80182A59463A82\":{n:\"Killer Satellites (1983) (Arcadia) [a]\"},\n\t\"05CCF96247AF12EEF59698F1A060A54F\":{n:\"King Arthur (1983) (Quelle) (PAL)\"},\n\t\"E21EE3541EBD2C23E817FFB449939C37\":{n:\"King Kong (1982) (Tigervision)\"},\n\t\"0DD4C69B5F9A7AE96A7A08329496779A\":{n:\"King Kong (1982) (Tigervision) (PAL)\"},\n\t\"0B1056F1091CFDC5EB0E2301F47AC6C3\":{n:\"King Kong (1982) (Tigervision) (PAL) [a]\"},\n\t\"E4D41F2D59A56A9D917038682B8E0B8C\":{n:\"Kiss Meets Pacman (Cody Pittman) (Hack)\"},\n\t\"B5EFE0271D2214E4D5DC798881486884\":{n:\"Klax (06-14-1990) (Atari) (Prototype)\"},\n\t\"2C29182EDF0965A7F56FE0897D2F84BA\":{n:\"Klax (08-18-1990) (Atari) (Prototype)\"},\n\t\"EED9EAF1A0B6A2B9BC4C8032CB43E3FB\":{n:\"Klax (1990) (Atari) (PAL)\"},\n\t\"7FCD1766DE75C614A3CCC31B25DD5B7A\":{n:\"Knight on the Town (1982) (PlayAround)\",c:1},\n\t\"ED0451010D022B96A464FEBCBA70B9C4\":{n:\"Knight on the Town (1982) (PlayAround) (PAL)\",c:1},\n\t\"A2EB84CFEED55ACD7FECE7FEFDC83FBB\":{n:\"Kool Aid Man (Fixed) (15-11-2002) (CT)\"},\n\t\"2C8C11295D8613F875B7BCF5253AB9BB\":{n:\"Kool Aid Man (PAL Conversion) (16-11-2002) (Fabrizio Zavagli) (PAL60)\"},\n\t\"534E23210DD1993C828D944C6AC4D9FB\":{n:\"Kool-Aid Man (1983) (M Network)\"},\n\t\"071F84D10B343C7C05CE3E32AF631687\":{n:\"Krieg der Sterne (Ariola) (PAL)\"},\n\t\"CC724EBE74A109E39C0B2784DDC980CA\":{n:\"Krull (05-27-1983) (Atari) (Prototype)\"},\n\t\"4BAADA22435320D185C95B7DD2BCDB24\":{n:\"Krull (1983) (Atari)\"},\n\t\"00DC28B881989C39A6CF87A892BD3C6B\":{n:\"Krull (CCE)\"},\n\t\"6805734A0B7BCC8925D9305B071BF147\":{n:\"Kung Fu (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\"},\n\t\"0B4E793C9425175498F5A65A3E960086\":{n:\"Kung Fu Master (CCE)\"},\n\t\"A9E3C23599C0D77151602F8E31DAF879\":{n:\"Kung Fu Master (Genesis)\"},\n\t\"A8101CB667E50A46165C6FB48C608B6B\":{n:\"Kung Fu Sprite Demo (PD)\",c:1},\n\t\"CE89529D6E98A13DDF3D84827BBDFE68\":{n:\"Kung Fu Sprite Demo 2 (PD)\",c:1},\n\t\"3F58F972276D1E4E0E09582521ED7A5B\":{n:\"Kung Fu Superkicks (1989) (Telegames)\"},\n\t\"E5D72FF8BAB4450BE57785CC9E83F3C0\":{n:\"Kung Fu Superkicks (1989) (Telegames) (PAL)\"},\n\t\"5B92A93B23523FF16E2789B820E2A4C5\":{n:\"Kung-Fu Master (1987) (Activision)\"},\n\t\"4474B3AD3BF6AABE719A2D7F1D1FB4CC\":{n:\"Kung-Fu Master (1987) (Activision) (PAL)\"},\n\t\"9945A22F60BBAF6D04A8D73B3CF3DB75\":{n:\"Kung-Fu Master (1987) (Activision) (PAL) [a]\"},\n\t\"7AD782952E5147B88B65A25CADCDF9E0\":{n:\"Kwibble (1983) (Imagic) (Prototype)\"},\n\t\"B86552198F52CFCE721BAFB496363099\":{n:\"Kyphus (1982) (Apollo) (Prototype)\"},\n\t\"0FBF618BE43D4396856D4244126FE7DC\":{n:\"Labyrinth (1983) (Quelle) (PAL)\"},\n\t\"01F584BF67B0E464014A8C8B5EA470E3\":{n:\"Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia)\"},\n\t\"710497DF2CAAB69CDCC45E919C69E13F\":{n:\"Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia) [a]\"},\n\t\"ADFBD2E8A38F96E03751717F7422851D\":{n:\"Lady Bug (NTSC)\",c:1},\n\t\"F1489E27A4539A0C6C8529262F9F7E18\":{n:\"Lady Bug (PAL60)\",c:1},\n\t\"95A89D1BF767D7CC9D0D5093D579BA61\":{n:\"Lady in Wading (1982) (PlayAround)\",c:1},\n\t\"EC407A206B718A0A9F69B03E920A0185\":{n:\"Landung in der Normandie (1983) (Quelle) (PAL)\"},\n\t\"B7345220A0C587F3B0C47AF33EBE533C\":{n:\"Landungskommando (1983) (Quelle) (PAL)\"},\n\t\"85564DD0665AA0A1359037AEF1A48D58\":{n:\"Laser Base (1983) (ITT Family Games) (PAL) [a]\",c:1},\n\t\"8C103A79B007A2FD5AF602334937B4E1\":{n:\"Laser Base (Thomas Jentzsch)\"},\n\t\"D2C8E6AA8172B16C8AA9AAE739AC9C5E\":{n:\"Laser Blast (08-08-1980) (Activision) (Prototype)\"},\n\t\"931B91A8EA2D39FE4DCA1A23832B591A\":{n:\"Laser Blast (1981) (Activision)\"},\n\t\"9EC1B259A1BCFFA63042A3C2B3B90F0A\":{n:\"Laser Blast (1981) (Activision) (16K)\"},\n\t\"D5E27051512C1E7445A9BF91501BDA09\":{n:\"Laser Blast (1981) (Activision) (4K)\"},\n\t\"F6676E3FE901EB8515FC7AE310302C3C\":{n:\"Laser Blast (1981) (Activision) (8K)\"},\n\t\"8A8E401369E2B63A13E18A4D685387C6\":{n:\"Laser Blast (1981) (Activision) (PAL)\"},\n\t\"F7F50D9C9D28BCC9F7D3075668B7AC89\":{n:\"Laser Blast (1981) (Activision) (PAL) (4K)\"},\n\t\"0D1B3ABF681A2FC9A6AA31A9B0E8B445\":{n:\"Laser Blast (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"303242C239474F2D7763B843DE58C1C3\":{n:\"Laser Blast (CCE)\"},\n\t\"F9420173EFCB4B9F2B01C2A7B595CCA7\":{n:\"Laser Blast (CCE) (4K)\"},\n\t\"D078674AFDF24A4547B4B32890FDC614\":{n:\"Laser Blast (Jone Yuan)\"},\n\t\"3F6938AA6CE66E6F42E582C1EB19B18C\":{n:\"Laser Blast (Jone Yuan) (4K) (Hack)\"},\n\t\"91B007F33F9B790BE64F57220EC52E80\":{n:\"Laser Blast (Jone Yuan) (Hack)\"},\n\t\"D339B95F273F8C3550DC4DAA67A4AA94\":{n:\"Laser Blast (Unknown) (PAL) (4K)\"},\n\t\"0277C449FAE63F6F1C8F94DEDFCF0058\":{n:\"Laser Demo (B. Watson)\"},\n\t\"68760B82FC5DCF3FEDF84376A4944BF9\":{n:\"Laser Gate (1983) (CCE)\"},\n\t\"CD4DED1EDE63C4DD09F3DD01BDA7458C\":{n:\"Laser Gate (Future Video Games) (PAL)\"},\n\t\"1FA58679D4A39052BD9DB059E8CDA4AD\":{n:\"Laser Gates (1983) (Imagic)\"},\n\t\"8E4CD60D93FCDE8065C1A2B972A26377\":{n:\"Laser Gates (1983) (Imagic) (PAL)\"},\n\t\"48287A9323A0AE6AB15E671AC2A87598\":{n:\"Laser Volley (Zellers)\"},\n\t\"1FAB68FD67FE5A86B2C0A9227A59BB95\":{n:\"Lasercade (1983) (20th Century Fox) (Prototype)\"},\n\t\"19098C46DA0640F2B5763167DEA6C716\":{n:\"Laseresal 2002 (NTSC) (PD)\"},\n\t\"F9655ED51462ECFC690C7B97CEC649F9\":{n:\"Laseresal 2002 (PAL) (PD)\"},\n\t\"02DCBA28C614FEC7CA25955327128ABB\":{n:\"Laseresal 2002 (PAL) (PD) [a]\"},\n\t\"9C6FD6ED3599978AB7B6F900484B9BE6\":{n:\"Laseresal 2002 (PAL60) (PD)\"},\n\t\"FABCA526D57DE46768B392F758F1A008\":{n:\"Laseresal 2600 (16-12-2001) (Andrew Wallace) (PD)\"},\n\t\"31E518DEBBA46DF6226B535FA8BD2543\":{n:\"Last Starfighter (1984) (Atari) (Prototype)\"},\n\t\"BB579404924C40CA378B4AFF6CCF302D\":{n:\"Lightbulb Lightens, The (PD) (Non Functional)\"},\n\t\"D0CDAFCB000B9AE04AC465F17788AD11\":{n:\"Lilly Adventure (1983) (Quelle) (PAL)\"},\n\t\"3947EB7305B0C904256CDBC5C5956C0F\":{n:\"Lilly Adventure (Jone Yuan)\"},\n\t\"64D43859258DC8CA54949E9FF4174202\":{n:\"Lilly Adventure (Thomas Jentzsch)\"},\n\t\"FE0B7F27E3AD50BBF9FF468EE56D553D\":{n:\"Lines Demo (Eckhard Stolberg) (PAL) (PD)\"},\n\t\"86128001E69AB049937F265911CE7E8A\":{n:\"Lochjaw (1981) (Apollo)\"},\n\t\"71464C54DA46ADAE9447926FDBFC1ABE\":{n:\"Lock 'n' Chase (1982) (M Network)\"},\n\t\"493E90602A4434B117C91C95E73828D1\":{n:\"Lock 'n' Chase (1989) (Telegames) (PAL)\"},\n\t\"E88340F5BD2F03E2E9CE5ECFA9C644F5\":{n:\"Lock 'n' Chase (Unknown) (PAL)\"},\n\t\"B4E2FD27D3180F0F4EB1065AFC0D7FC9\":{n:\"London Blitz (1983) (Avalon Hill)\"},\n\t\"5BABE0CAD3EC99D76B0AA1D36A695D2F\":{n:\"Looping (1983) (Coleco) (Prototype)\"},\n\t\"E24D7D879281FFEC0641E9C3F52E505A\":{n:\"Lord of the Rings (1983) (Parker Bros) (Prototype)\"},\n\t\"C6D7FE7A46DC46F962FE8413C6F53FC9\":{n:\"Lord of the Rings (1983) (Parker Bros) (Prototype) [a]\"},\n\t\"DAEF7D8E5A09981C4AA81573D4DBB380\":{n:\"Lord of the Rings (Adam Thornton) (Hack)\",c:1},\n\t\"E4B12DEAAFD1DBF5AC31AFE4B8E9C233\":{n:\"Lord of the Rings (Adam Thornton) (Hack) [a]\",c:1},\n\t\"7C00E7A205D3FDA98EB20DA7C9C50A55\":{n:\"Lost Luggage (1981) (Apollo)\"},\n\t\"D0B26E908370683AD99BC6B52137A784\":{n:\"Lost Luggage (1981) (Apollo) (PAL)\"},\n\t\"2D76C5D1AAD506442B9E9FB67765E051\":{n:\"Lost Luggage (1981) (Apollo) [no opening scene]\"},\n\t\"DF5CC5CCCDC140EB7107F5B8ADFACDA1\":{n:\"Lumberman (Cracker Jack) (Hack)\"},\n\t\"97D0151BEB84ACBE82AA6DB18CD91B98\":{n:\"Lunar Attack (2002) (Steve Engelhardt) (Hack)\"},\n\t\"393E41CA8BDD35B52BF6256A968A9B89\":{n:\"M.A.D. (1982) (U.S. Games)\"},\n\t\"090F0A7EF8A3F885048D213FAA59B2F8\":{n:\"M.A.D. (1983) (Carrere Video) (PAL)\"},\n\t\"835759FF95C2CDC2324D7C1E7C5FA237\":{n:\"M.A.S.H (1983) (20th Century Fox)\"},\n\t\"43C6CFFFEDDAB6B3787357FED9D44529\":{n:\"M.A.S.H (1983) (20th Century Fox) (PAL)\"},\n\t\"E97EAFD0635651D3999CECE953C06BD5\":{n:\"M.A.S.H (208 in 1) (Unknown) (PAL)\"},\n\t\"9193B6FFF6897D43274741D4F9855B6D\":{n:\"M.A.S.H (Unknown) (PAL) (Hack)\"},\n\t\"CF63FFAC9DA89EF09C6C973083061A47\":{n:\"MASH (1983) (CCE)\"},\n\t\"1423F560062C4F3C669D55891A2BCBE7\":{n:\"MASH (1983) (CCE) [a]\"},\n\t\"E9BE3E8E4A7E73DD63ED4235A3A1A25F\":{n:\"MMetall (Hack)\"},\n\t\"47AAD247CCE2534FD70C412CB483C7E0\":{n:\"Mafia (Rainbow Vision) (PAL)\"},\n\t\"CDDABFD68363A76CD30BEE4E8094C646\":{n:\"MagiCard (1981) (CommaVid)\"},\n\t\"7DA9DE8D62FCDD3A2C545B2E720C2A61\":{n:\"MagiCard (1981) (CommaVid) (4K)\"},\n\t\"CCB5FA954FB76F09CAAE9A8C66462190\":{n:\"Malagai (1983) (Answer Software)\",c:1},\n\t\"402D876EC4A73F9E3133F8F7F7992A1E\":{n:\"Man Goes Down (2006) (A. Herbert) (Prototype)\"},\n\t\"54A1C1255ED45EB8F71414DADB1CF669\":{n:\"Mangia' (1983) (Spectravideo)\"},\n\t\"D8295EFF5DCC43360AFA87221EA6021F\":{n:\"Mangia' (1983) (Spectravideo) (PAL)\"},\n\t\"E4C2077A18E3C27F4819AA7757903AA0\":{n:\"Many Blue Bars Demo (PD)\"},\n\t\"CEF01595000627EE50863D4290372C27\":{n:\"Many Blue Bars and Text Demo (PD)\"},\n\t\"163E7E757E2DC44469123FF0E5DAEC5E\":{n:\"Many Blue Bars and Text Demo 2 (PD)\"},\n\t\"F032B2F2D8323404A6B4541F92DD1825\":{n:\"Many Blue Bars and Text Demo 3 (PD)\"},\n\t\"EF60B06FDDB675B0D783AFBFA5FC5232\":{n:\"Many Blue Bars and Text Demo 4 (PD)\"},\n\t\"13895EF15610AF0D0F89D588F376B3FE\":{n:\"Marauder (1982) (Tigervision)\"},\n\t\"512E874A240731D7378586A05F28AEC6\":{n:\"Marauder (1982) (Tigervision) (PAL)\"},\n\t\"CC03C68B8348B62331964D7A3DBEC381\":{n:\"Marauder (Jone Yuan)\"},\n\t\"319A142AAB6260842AB616382848C204\":{n:\"Marble Craze (05-02-2002) (Paul Slocum)\"},\n\t\"F777444FC21A5925E066B68B1D350575\":{n:\"Marble Craze (Kernel Works) (Paul Slocum)\"},\n\t\"F2E4FB2D3600C0F76D05864E658CC57B\":{n:\"Marble Craze (Kernel) (17-02-2002) (Paul Slocum)\"},\n\t\"89A65B83203980D5D4D60F52A584A5B8\":{n:\"Marble Craze (PAL) (02-02-2003) (Paul Slocum)\"},\n\t\"21B09C40295C2D7074A83AE040F22EDF\":{n:\"Marble Craze (V0.90) (Easy Version) (Paul Slocum)\"},\n\t\"097074F24CDE141FE6A0F26A10333265\":{n:\"Marble Craze (V0.90) (Paul Slocum)\"},\n\t\"34B269387FA1AA5A396636F5ECDD63DD\":{n:\"Marble Craze (mc7_23) (Paul Slocum)\"},\n\t\"CD9FEA12051E414A6DFE17052067DA8E\":{n:\"Marble Craze Demo (PD)\"},\n\t\"966B11D3C147D894DD9E4EBB971EA309\":{n:\"Marble Craze Song (Paul Slocum) (PD)\"},\n\t\"6141C095D0AEE4E734BEBFAAC939030A\":{n:\"Mariana (Rainbow Vision) (PAL)\"},\n\t\"EE84BDC5DAE268E227E407C7B5E6B6B7\":{n:\"Marilyn Monroe Demo (PD)\"},\n\t\"CADE123747426DF69570A2BC871D3BAF\":{n:\"Marine Wars (1983) (Gakken) (PAL)\"},\n\t\"B00E8217633E870BF39D948662A52AAC\":{n:\"Marine Wars (1983) (Konami)\"},\n\t\"1B8D35D93697450EA26EBF7FF17BD4D1\":{n:\"Marineflieger (1983) (Quelle) (PAL)\"},\n\t\"E908611D99890733BE31733A979C62D8\":{n:\"Mario Bros. (1983) (Atari)\"},\n\t\"C49FE437800AD7FD9302F3A90A38FB7D\":{n:\"Mario Bros. (1983) (Atari) (PAL)\"},\n\t\"2A9F9001540C55A302BEFD8E9D54B47B\":{n:\"Mario Bros. (1983) (Atari) (PAL) [a]\"},\n\t\"9A165C39AF3F050FDEE6583FDFCDC9BE\":{n:\"Mario Bros. (Zirok)\"},\n\t\"B1D1E083DC9E7D9A5DC1627869D2ADE7\":{n:\"Mario's Bros. (1983) (CCE)\"},\n\t\"C446288FE62C0C2737639FD788AE4A21\":{n:\"Mark's Sound Demo (PD)\",c:1},\n\t\"B2F0D7217147160B2F481954CEDF814B\":{n:\"Marquee Drawer (2001) (B. Watson)\",c:1},\n\t\"B1486E12DE717013376447AC6F7F3A80\":{n:\"Marspatrouille (1983) (Quelle) (PAL)\"},\n\t\"36E47ED74968C365121EAB60F48C6517\":{n:\"Master Builder (1983) (Quelle) (PAL)\"},\n\t\"AE4BE3A36B285C1A1DFF202157E2155D\":{n:\"Master Builder (1983) (Spectravideo)\"},\n\t\"3B76242691730B2DD22EC0CEAB351BC6\":{n:\"Masters of the Universe (1983) (M Network)\",c:1},\n\t\"470878B9917EA0348D64B5750AF149AA\":{n:\"Math Gran Prix (1982) (Atari)\"},\n\t\"45BEEF9DA1A7E45F37F3F445F769A0B3\":{n:\"Math Gran Prix (1982) (Atari) (PAL)\"},\n\t\"7996B8D07462A19259BAA4C811C2B4B4\":{n:\"Math Gran Prix (208 in 1) (Unknown) (PAL)\"},\n\t\"5E2495D43B981010304AF55EFED1E798\":{n:\"Math Gran Prix (Jone Yuan)\"},\n\t\"244C6DE27FAFF527886FC7699A41C3BE\":{n:\"Matt Demo (PD)\"},\n\t\"DDD1EFC1862CD3EB3BAF4CBA81FF5050\":{n:\"Max3 (2001) (Maxime Beauvais) (PD)\"},\n\t\"AE83541CF4A4C0BCE0ADCCD2C1BF6288\":{n:\"Maze 003 Demo (PD)\"},\n\t\"F825C538481F9A7A46D1E9BC06200AAF\":{n:\"Maze Craze (1980) (Atari)\"},\n\t\"ED2218B3075D15EAA34E3356025CCCA3\":{n:\"Maze Craze (1980) (Atari) (PAL)\"},\n\t\"8108AD2679BD055AFEC0A35A1DCA46A4\":{n:\"Maze Craze (Unknown)\"},\n\t\"69EBF910AB9B63E5B8345F016095003B\":{n:\"Maze Demo 1 (PD)\"},\n\t\"F9DE91D868D6EBFB0076AF9063D7195E\":{n:\"Maze Demo 2 (PD)\"},\n\t\"35B43B54E83403BB3D71F519739A9549\":{n:\"McDonald's (06-06-1983) (Parker Bros) (Prototype)\"},\n\t\"F7FAC15CF54B55C5597718B6742DBEC2\":{n:\"Medieval Mayhem (NTSC)\",p:1},\n\t\"D00F6F8BA89559E4B20972A478FC0370\":{n:\"Medieval Mayhem (PAL)\",p:1},\n\t\"DAEB54957875C50198A7E616F9CC8144\":{n:\"Mega Force (1982) (20th Century Fox)\"},\n\t\"ECF51385384B468834611D44A8429C03\":{n:\"Mega Force (1982) (20th Century Fox) (PAL)\"},\n\t\"BDBAEFF1F7132358EA64C7BE9E46C1AC\":{n:\"Mega Force (1982) (20th Century Fox) (PAL) [a]\"},\n\t\"E37C8055D70979AF354251EBE9F1B7DD\":{n:\"Mega Funpak - Gorf, P. Patrol, Pacman, Skeet Shoot (HES) (PAL)\"},\n\t\"28A2BEA8F84936CB2E063F857414CDA0\":{n:\"Mega Mania Raid (1999) (Thiago Paiva) (Hack)\"},\n\t\"B65D4A38D6047735824EE99684F3515E\":{n:\"MegaBoy (Dynacom)\"},\n\t\"318A9D6DDA791268DF92D72679914AC3\":{n:\"MegaMania (1982) (Activision)\"},\n\t\"A35D47898B2B16EC641D1DFA8A45C2B7\":{n:\"MegaMania (1982) (Activision) (16K)\"},\n\t\"D45BF71871B196022829AA3B96BFCFD4\":{n:\"MegaMania (1982) (Activision) (8K)\"},\n\t\"3D934BB980E2E63E1EAD3E7756928CCD\":{n:\"MegaMania (1982) (Activision) (PAL)\"},\n\t\"6604F72A966CA6B2DF6A94EE4A68EB82\":{n:\"MegaMania (208 in 1) (Unknown) (PAL)\"},\n\t\"049626CBFB1A5F7A5DC885A0C4BB758E\":{n:\"MegaMania (Unknown) (PAL)\"},\n\t\"FC92D74F073A44BC6E46A3B3FA8256A2\":{n:\"Megademo (19xx) (PD)\"},\n\t\"6BB22EFA892B89B69B9BF5EA547E62B8\":{n:\"Megamania (1982) (Dynacom)\"},\n\t\"D5618464DBDC2981F6AA8B955828EEB4\":{n:\"Megamania (1983) (CCE)\"},\n\t\"12937DB3D4A80DA5C4452B752891252D\":{n:\"Megamania (1983) (Digitel)\"},\n\t\"1E0EF01E330E5B91387F75F700CCAF8F\":{n:\"Mein Weg (1983) (Quelle) (PAL)\"},\n\t\"96E798995AF6ED9D8601166D4350F276\":{n:\"Meltdown (1983) (20th Century Fox) (Prototype)\",c:1},\n\t\"50568C80AC61CAB789D9923C9B05B68E\":{n:\"Merlin's Walls - Standard Edition (1999) (Ebivision)\"},\n\t\"8FBABAA87941CDF3A377C15E95BDB0F3\":{n:\"Meteor Smasher (SnailSoft)\"},\n\t\"08BF437D012DB07B05FF57A0C745C49E\":{n:\"Meteoroids (1982) (Arcadia) (Prototype)\",c:1},\n\t\"F1554569321DC933C87981CF5C239C43\":{n:\"Midnight Magic (1984) (Atari)\",c:1},\n\t\"DA732C57697AD7D7AF414998FA527E75\":{n:\"Midnight Magic (1984) (Atari) (PAL)\",c:1},\n\t\"C47B7389E76974FD0DE3F088FEA35576\":{n:\"Mighty Mouse (Funvision)\"},\n\t\"0BF19E40D5CD8AA5AFB33B16569313E6\":{n:\"Millipede (01-04-1984) (Atari) (Prototype)\"},\n\t\"3C57748C8286CF9E821ECD064F21AAA9\":{n:\"Millipede (1984) (Atari)\"},\n\t\"A7673809068062106DB8E9D10B56A5B3\":{n:\"Millipede (1984) (Atari) (PAL)\"},\n\t\"11BCF5C752088B5AAF86D6C7A6A11E8D\":{n:\"Millipede (1984) (Atari) (Prototype)\"},\n\t\"EFD387430A35A659FF569A9A0EC22209\":{n:\"Millipede (1984) (Atari) (Prototype) (PAL)\"},\n\t\"0E224EA74310DA4E7E2103400EB1B4BF\":{n:\"Mind Maze (10-10-1984) (Atari) (Prototype)\"},\n\t\"FA0570561AA80896F0EAD05C46351389\":{n:\"Miner 2049er (1982) (Tigervision)\"},\n\t\"C517144E3D3AC5C06F2F682EBF212DD7\":{n:\"Miner 2049er (1982) (Tigervision) (PAL)\"},\n\t\"598A4E6E12F8238B7E7555F5A7777B46\":{n:\"Miner 2049er (1982) (Tigervision) (Prototype)\"},\n\t\"3B040ED7D1EF8ACB4EFDEEBEBDAA2052\":{n:\"Miner 2049er (1982) (Tigervision) [fixed]\"},\n\t\"2A1B454A5C3832B0240111E7FD73DE8A\":{n:\"Miner 2049er Volume II (1983) (Tigervision)\",c:1},\n\t\"468F2DEC984F3D4114EA84F05EDF82B6\":{n:\"Miner 2049er Volume II (1983) (Tigervision) (PAL)\",c:1},\n\t\"4543B7691914DFD69C3755A5287A95E1\":{n:\"Mines of Minos (1982) (CommaVid)\",c:1},\n\t\"B5CB9CF6E668EA3F4CC2BE00EA70EC3C\":{n:\"Mines of Minos (1982) (CommaVid) (PAL)\",c:1},\n\t\"73CB1F1666F3FD30B52B4F3D760C928F\":{n:\"Mines of Minos (Unknown) (PAL)\",c:1},\n\t\"635CC7A0DB33773959D739D04EFF96C2\":{n:\"Minesweeper (V.90) (Soren Gust) (PD)\"},\n\t\"AC5F78BAE0638CF3F2A0C8D07EB4DF69\":{n:\"Minesweeper (V.99) (Soren Gust) (PD)\"},\n\t\"2982E655DFFC89D218A0A3072CFC6811\":{n:\"Mini Golf 812631 (Hack)\"},\n\t\"DF62A658496AC98A3AA4A6EE5719C251\":{n:\"Miniature Golf (1979) (Atari)\"},\n\t\"384DB97670817103DD8C0BBDEF132445\":{n:\"Miniature Golf (1979) (Atari) (4K)\"},\n\t\"ED5CCFC93AD4561075436EE42A15438A\":{n:\"Miniature Golf (1979) (Atari) (PAL)\"},\n\t\"8B8152D6081F31365406CB716BD95567\":{n:\"Miniature Golf (1979) (Atari) (PAL) (4K)\"},\n\t\"4F82D8D78099DD71E8E169646E799D05\":{n:\"Miniature Golf (Unknown) (PAL) (4K)\"},\n\t\"73521C6B9FED6A243D9B7B161A0FB793\":{n:\"Miniaturer Golf (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"6979F30204149BE3E227558CFFE21C1D\":{n:\"Miniaturer Golf (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"391764720140C432AEC454A468F77A40\":{n:\"Miss Pack Man (Video Game Program) (PAL)\"},\n\t\"4181087389A79C7F59611FB51C263137\":{n:\"Miss Piggy's Wedding (06-24-1983) (Atari) (Prototype) (8K)\"},\n\t\"855A42078B14714BCFD490D2CF57E68D\":{n:\"Miss Piggy's Wedding (1983) (Atari) (Prototype)\"},\n\t\"25E73EFB9A6EDF119114718BD2F646BA\":{n:\"Miss Piggy's Wedding (1983) (Atari) (Prototype) [a]\"},\n\t\"3A2E2D0C6892AA14544083DFB7762782\":{n:\"Missile Command (1981) (Atari)\",l:\"missile command\",c:1},\n\t\"9364AD51C321E0F15C96A8C0AFF47CEB\":{n:\"Missile Command (1981) (Atari) (PAL)\",l:\"missile command\",c:1},\n\t\"1A8204A2BCD793F539168773D9AD6230\":{n:\"Missile Command (1981) (Atari) [no initials]\",l:\"missile command\"},\n\t\"94E7CC6342D11E508E7E8B2DDF53C255\":{n:\"Missile Command (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"8D1E2A6D2885966E6D86717180938F87\":{n:\"Missile Command (Amiga Mouse) (2002) (TJ)\",l:\"missile command\",c:1},\n\t\"183020A80848E06A1238A1AB74079D52\":{n:\"Missile Command (Amiga Mouse) (2002) (TJ) (PAL)\",l:\"missile command\",c:1},\n\t\"8CE9126066F2DDD5173E9F1F9CE1494E\":{n:\"Missile Command (CX-22 Trackball) (2002) (TJ)\",l:\"missile command\",c:1},\n\t\"8BEBAC614571135933116045204F0F00\":{n:\"Missile Command (CX-22 Trackball) (2002) (TJ) (PAL)\",l:\"missile command\",c:1},\n\t\"2365E1534D67F94D8670394AB99150CE\":{n:\"Missile Command (CX-80 Trackball) (2002) (TJ)\",l:\"missile command\",c:1},\n\t\"96ECCC2277043508A6C481EA432D7DD9\":{n:\"Missile Command (CX-80 Trackball) (2002) (TJ) (PAL)\",l:\"missile command\",c:1},\n\t\"F6A9EA814D15B85BFFE980C927DF606B\":{n:\"Missile Command (Unknown) (PAL)\",l:\"missile command\",c:1},\n\t\"CB24210DC86D92DF97B38CF2A51782DA\":{n:\"Missile Control (1983) (Video Gems) (PAL)\"},\n\t\"E6E5BB0E4F4350DA573023256268313D\":{n:\"Missile Control (Thomas Jentzsch)\"},\n\t\"53D181CDE2E0219B5754CAAD246FCB66\":{n:\"Missile Demo (1998) (Ruffin Bailey) (PD)\"},\n\t\"317A4CDBAB090DCC996833D07CB40165\":{n:\"Missile War (1983) (Goliath) (PAL)\"},\n\t\"4C6AFB8A44ADF8E28F49164C84144BFE\":{n:\"Mission 3,000 A.D. (1983) (BitCorp)\"},\n\t\"6EFE876168E2D45D4719B6A61355E5FE\":{n:\"Mission 3,000 A.D. (1983) (BitCorp) (PAL)\",c:1},\n\t\"CFAD2B9CA8B8FEC7FB1611D656CC765B\":{n:\"Mission 3,000 A.D. (1983) (BitCorp) (PAL) [demo cart]\",c:1},\n\t\"B83579C4450FCBDF2B108903731FA734\":{n:\"Mission 3,000 A.D. (208 in 1) (Unknown) (PAL)\",c:1},\n\t\"CF9069F92A43F719974EE712C50CD932\":{n:\"Mission Survive (1983) (Video Gems) (PAL)\",c:1},\n\t\"B5CDBAB514EA726A14383CFF6DB40E26\":{n:\"Mission Survive (1983) (Video Gems) (PAL) [a]\",c:1},\n\t\"3783F12821B88B08814DA8ADB1A9F220\":{n:\"Mission Survive (PAL) (Genesis)\",c:1},\n\t\"B676A9B7094E0345A76EF027091D916B\":{n:\"Mission Survive (Thomas Jentzsch)\",c:1},\n\t\"E13818A5C0CB2F84DD84368070E9F099\":{n:\"Misterious Thief, A (1983) (CCE)\",c:1},\n\t\"5D9592756425192EC621D2613D0E683D\":{n:\"Misterious Thief, A (1983) (CCE) [a]\"},\n\t\"B4A4C87840613F102ACB5B3A647D0A67\":{n:\"Mobile 48 Sprite Kernel (04-01-2003) (Eric Ball)\"},\n\t\"073CB76B006AF034FD150BE3F5E0E7E6\":{n:\"Mobile 48 Sprite Kernel (Bug Fixed) (10-01-2003) (Eric Ball)\"},\n\t\"63E9E612BBEE31045F8D184A4E53F8EC\":{n:\"Moby Blues (2002) (ATARITALIA) (Hack)\"},\n\t\"7AF40C1485CE9F29B1A7B069A2EB04A7\":{n:\"Mogul Maniac (1983) (Amiga)\"},\n\t\"F802FA61011DD9EB6F80B271BAC479D0\":{n:\"Mole Hunter (Suntek) (PAL)\"},\n\t\"6BDE3F6AC31ACEEF447CE57D4D2C2EC0\":{n:\"Mondo Pong V1 (Piero Cavina) (PD)\",p:1},\n\t\"1F60E48AD98B659A05CE0C1A8E999AD9\":{n:\"Mondo Pong V2 (Piero Cavina) (PD)\",p:1},\n\t\"6913C90002636C1487538D4004F7CAC2\":{n:\"Monster Cise (1984) (Atari) (Prototype)\"},\n\t\"3347A6DD59049B15A38394AA2DAFA585\":{n:\"Montezuma's Revenge (1984) (Parker Bros)\"},\n\t\"4AB2EBD95A8F861EA451ABEBDAD914A5\":{n:\"Montezuma's Revenge (PAL) (Genesis)\"},\n\t\"9F59EDDF9BA91A7D93BCE7EE4B7693BC\":{n:\"Montezuma's Revenge (Thomas Jentzsch) (PAL60)\"},\n\t\"7B8A481E0C5AA78150B5555DFF01F64E\":{n:\"Moon Patrol (05-16-1983) (Atari) (Prototype)\"},\n\t\"AC3DD22DD945724BE705DDD2785487C2\":{n:\"Moon Patrol (06-15-1983) (Atari) (Prototype)\"},\n\t\"E2C1B60EAA8EDA131632D73E4E0C146B\":{n:\"Moon Patrol (07-04-1983) (Atari) (Prototype)\"},\n\t\"5256F68D1491986AAE5CFDFF539BFEB5\":{n:\"Moon Patrol (07-26-1983) (Atari) (Prototype)\"},\n\t\"94FF6B7489ED401DCAAF952FECE10F67\":{n:\"Moon Patrol (07-31-1983) (Atari) (Prototype)\"},\n\t\"515046E3061B7B18AA3A551C3AE12673\":{n:\"Moon Patrol (1983) (Atari)\"},\n\t\"65490D61922F3E3883EE1D583CE10855\":{n:\"Moon Patrol (1983) (Atari) (PAL)\"},\n\t\"0AFE6AE18966795B89314C3797DD2B1E\":{n:\"Moon Patrol (1983) (Atari) (PAL) [a]\"},\n\t\"6DE924C2297C8733524952448D54A33C\":{n:\"Moon Patrol (1983) (CCE)\"},\n\t\"2854E5DFB84173FAFC5BF485C3E69D5A\":{n:\"Moon Patrol (Canal 3)\"},\n\t\"5643EE916F7DC760148FCA4DB3AA7D10\":{n:\"Moon Patrol (Genesis)\"},\n\t\"1B22A3D79DDD79335B69C94DD9B3E44E\":{n:\"Moon Patrol (Tron)\"},\n\t\"44E9C4A047C348DBEB7ACE60F45484B4\":{n:\"Moon Patrol Arcade (Genesis)\"},\n\t\"203ABB713C00B0884206DCC656CAA48F\":{n:\"Moonsweeper (1983) (Imagic)\",c:1},\n\t\"4AF4103759D603C82B1C9C5ACD2D8FAF\":{n:\"Moonsweeper (1983) (Imagic) (PAL)\",c:1},\n\t\"B79FE32320388A197AC3A0B932CC2189\":{n:\"Moonsweeper (1983) (Imagic) (PAL) [a]\",c:1},\n\t\"B06050F686C6B857D0DF1B79FEA47BB4\":{n:\"Moonsweeper (1988) (Activision)\",c:1},\n\t\"AE6CB335470788B94BEB5787976E8818\":{n:\"Mortal Kurling (02-01-2003) (CT)\"},\n\t\"EB503CC64C3560CD78B7051188B7BA56\":{n:\"Moto Laser (Star Game)\"},\n\t\"378A62AF6E9C12A760795FF4FC939656\":{n:\"MotoRodeo (1990) (Atari)\",c:1},\n\t\"B1E2D5DC1353AF6D56CD2FE7CFE75254\":{n:\"MotoRodeo (1990) (Atari) (PAL)\",c:1},\n\t\"A20B7ABBCDF90FBC29AC0FAFA195BD12\":{n:\"Motocross (1983) (Quelle) (PAL)\"},\n\t\"5641C0FF707630D2DD829B26A9F2E98F\":{n:\"Motocross (Joystik)\"},\n\t\"F5A2F6EFA33A3E5541BC680E9DC31D5B\":{n:\"Motocross (Suntek) (PAL)\"},\n\t\"DE0173ED6BE9DE6FD049803811E5F1A8\":{n:\"Motocross Racer (1983) (Xonox)\"},\n\t\"DB4EB44BC5D652D9192451383D3249FC\":{n:\"Mountain King (1983) (CBS Electronics)\",c:1},\n\t\"7E51A58DE2C0DB7D33715F518893B0DB\":{n:\"Mountain King (1983) (CBS Electronics) [a]\",c:1},\n\t\"23D445EA19A18FB78D5035878D9FB649\":{n:\"Mouse Trap (1982) (CBS Electronics) (PAL)\",c:1},\n\t\"5678EBAA09CA3B699516DBA4671643ED\":{n:\"Mouse Trap (1982) (Coleco)\",c:1},\n\t\"35156407E54F67EB1F625450D5C093E1\":{n:\"Mouse Trap (Genesis)\"},\n\t\"24FBF8250A71611E40EF18552E61B009\":{n:\"Movable Grid Demo (PD)\"},\n\t\"6342AFE9C9AD1B6120B8F6FB040D0926\":{n:\"Move a Blue Blob Demo (PD)\"},\n\t\"F69A39B215852A0C2764D2A923C1E463\":{n:\"Move a Blue Blob Demo 2 (PD)\"},\n\t\"140909D204ABD6841C64CDAD4D7765B4\":{n:\"Moving Blue Ladder Demo (PD)\"},\n\t\"703D32062436E4C20C48313DFF30E257\":{n:\"Moving Maze Demo (PD)\",c:1},\n\t\"AA7BB54D2C189A31BB1FA20099E42859\":{n:\"Mr. Do! (1983) (CBS Electronics) (PAL)\",c:1},\n\t\"0164F26F6B38A34208CD4A2D0212AFC3\":{n:\"Mr. Do! (1983) (Coleco)\",c:1},\n\t\"B7A7E34E304E4B7BC565EC01BA33EA27\":{n:\"Mr. Do!'s Castle (1984) (Parker Bros)\",c:1},\n\t\"0CB7AF80FD0DDEF84844481D85E5D29B\":{n:\"Mr. Pac-Man (El Destructo)\"},\n\t\"0DFBDADF8F1BC718E7E1BB3CCD5FEF3D\":{n:\"Mr. Pac-Man (New start tune) (El Destructo)\"},\n\t\"603C7A0D12C935DF5810F400F3971B67\":{n:\"Mr. Postman (1983) (BitCorp) (PAL)\"},\n\t\"8644352B806985EFDE499AE6FC7B0FEC\":{n:\"Mr. Postman (1983) (CCE)\"},\n\t\"9A4274409216FF09ECDE799F2A56AC73\":{n:\"Mr. Postman (1983) (CCE) [a]\"},\n\t\"2327456F86D7E0DEDA94758C518D05B3\":{n:\"Mr. Postman (Digitel)\"},\n\t\"F0DAAA966199EF2B49403E9A29D12C50\":{n:\"Mr. Postman (Unknown)\"},\n\t\"CFF9950D4E650094F65F40D179A9882D\":{n:\"Mr. Roboto (Paul Slocum) (Hack)\",c:1},\n\t\"87E79CD41CE136FD4F72CC6E2C161BEE\":{n:\"Ms. Pac-Man (1982) (Atari)\"},\n\t\"1EE9C1BA95CEF2CF987D63F176C54AC3\":{n:\"Ms. Pac-Man (1982) (Atari) (PAL)\"},\n\t\"D4942F4B55313FF269488527D84CE35C\":{n:\"Ms. Pac-Man (1982) (Atari) (PAL) [a]\"},\n\t\"1EA980574416BFD504F62575BA524005\":{n:\"Ms. Pac-Man (1982) (Atari) (Prototype)\"},\n\t\"AEB104F1E7B166BC0CBACA0A968FDE51\":{n:\"Ms. Pac-Man (1999) (Hack)\"},\n\t\"9469D18238345D87768E8965F9F4A6B2\":{n:\"Ms. Pac-Man (CCE)\"},\n\t\"4066309EB3FA3E7A725585B9814BC375\":{n:\"Multi Ball Demo (PD)\"},\n\t\"079FE9103515D15BC108577E234A484D\":{n:\"Multi-Color Demo 0 (Bob Colbert) (PD)\"},\n\t\"4AFE528A082F0D008E7319EBD481248D\":{n:\"Multi-Color Demo 1 (Bob Colbert) (PD)\"},\n\t\"191449E40B0C56411C70772706F79224\":{n:\"Multi-Color Demo 2 (Bob Colbert) (PD)\"},\n\t\"AE18C11E4D7ED2437F0BF5D167C0E96C\":{n:\"Multi-Color Demo 3 (Bob Colbert) (PD)\"},\n\t\"C28B29764C2338B0CF95537CC9AAD8C9\":{n:\"Multi-Color Demo 4 (Bob Colbert) (PD)\"},\n\t\"D34B933660E29C0A0A04004F15D7E160\":{n:\"Multi-Color Demo 5 (Bob Colbert) (PD)\"},\n\t\"14163EB2A3DDD35576BD8527EAE3B45E\":{n:\"Multi-Color Demo 6 (Bob Colbert) (PD)\"},\n\t\"B1FD0B71DE9F6EEB5143A97963674CB6\":{n:\"Multi-Color Demo 7 (Bob Colbert) (PD)\"},\n\t\"25F9CF703575C5D63048C222F5463758\":{n:\"Multi-Sprite Demo 1 (PD)\"},\n\t\"42AE81AE8AC51E5C238639F9F77D91AE\":{n:\"Multi-Sprite Demo 2 (Piero Cavina) (PD)\"},\n\t\"17515A4D0B7EA5029FFFF7DFA8456671\":{n:\"Multi-Sprite Demo V1.1 (Piero Cavina) (PD)\"},\n\t\"EF71E9FB0D8D477226D8D42261FBF0A7\":{n:\"Multi-Sprite Demo V2.0 (Piero Cavina) (PD)\"},\n\t\"B958D5FD9574C5CF9ECE4B9421C28ECD\":{n:\"Multi-Sprite Game V1.0 (Piero Cavina) (PD)\"},\n\t\"59135F13985B84C4F13CC9E55EEC869A\":{n:\"Multi-Sprite Game V2.0 (Piero Cavina) (PD)\"},\n\t\"7197B6CBDE6ECD10376155E6B848E80D\":{n:\"Multi-Sprite Game V2.1 (Piero Cavina) (PD)\"},\n\t\"585600522B1F22F617652C962E358A5D\":{n:\"Multi-Sprite Game V2.2 (Piero Cavina) (PD)\"},\n\t\"E609E8A007127B8FCFF79FFC380DA6B1\":{n:\"Multi-Sprite Game V2.3 (Piero Cavina) (PD)\"},\n\t\"50EF88F9A5E0E1E6B86E175362A27FDB\":{n:\"Multi-Sprite Game V2.4 (Piero Cavina) (PD)\"},\n\t\"157356F80C709AB675961D8B8B207E20\":{n:\"Multi-Sprite Game V2.5 (Piero Cavina) (PD)\"},\n\t\"072A6EA2181CA0DF88AC0DEDC67B239D\":{n:\"Multiple Missiles Demo (19-12-2002) (CT)\"},\n\t\"7550B821EE56FB5833DCA2BE88622D5A\":{n:\"Multiple Moving Objects Demo (B. Watson)\"},\n\t\"CD3E26786136A4692FD2CB2DFBC1927E\":{n:\"Multiple Moving Objects Demo 2 (B. Watson)\"},\n\t\"A100EFF2D7AE61CA2B8E65BAF7E2AAE8\":{n:\"Muncher (David Marli) (Hack)\"},\n\t\"5BBA254E18257E578C245ED96F6B003B\":{n:\"Music Effects Demo (21-01-2003) (Paul Slocum)\",c:1},\n\t\"F5AA6BD10F662199C42E43863A30106C\":{n:\"Music Kit (V1.0) - Song Player (Paul Slocum)\",c:1},\n\t\"6F084DAF265599F65422EF4173B69BC7\":{n:\"Music Kit (V2.0) - Song Player (Paul Slocum)\",c:1},\n\t\"65B106EBA3E45F3DAB72EA907F39F8B4\":{n:\"Music Machine, The (1983) (Sparrow)\",p:1},\n\t\"04FCCC7735155A6C1373D453B110C640\":{n:\"My Golf (1990) (HES) (PAL)\"},\n\t\"936F555B4B1A2CD061B659FF63F4F5F2\":{n:\"My Golf (1990) (HES) (PAL) [a1]\"},\n\t\"DFAD86DD85A11C80259F3DDB6151F48F\":{n:\"My Golf (1990) (HES) (PAL) [fixed]\"},\n\t\"EE6CBEDF6C0AAC90FAA0A8DBC093FFBE\":{n:\"My Golf (CCE) (PAL)\"},\n\t\"0546F4E6B946F38956799DD00CAAB3B1\":{n:\"My Golf (Thomas Jentzsch)\"},\n\t\"FCBBD0A407D3FF7BF857B8A399280EA1\":{n:\"Mysterious Thief, A (1983) (ZiMAG) (Prototype)\",c:1},\n\t\"48F18D69799A5F5451A5F0D17876ACEF\":{n:\"Mysterious Thief, A (1983) (ZiMAG) (Prototype) [a]\",c:1},\n\t\"FA7E11A3DBEA4365975CD2F094E61D25\":{n:\"Mystery Science Theater 2600 (1999) (Tim Snider) (Hack)\"},\n\t\"7608ABDFD9B26F4A0ECEC18B232BEA54\":{n:\"NFL Football (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"67C05AE94BF8B83A666C3AE2C4BC14DE\":{n:\"NFL Football (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"C58708C09CCB61625CDA9D15DDCD8BE6\":{n:\"NOIZ Invaders (SPIKE) (2002) (Hack)\"},\n\t\"36306070F0C90A72461551A7A4F3A209\":{n:\"Name This Game (1982) (U.S. Games)\"},\n\t\"F98D2276D4A25B286135566255AEA9D0\":{n:\"Name This Game (1983) (Digitel)\"},\n\t\"2F7949F71076DB42480D3F5036B4A332\":{n:\"Name This Game (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"B392964E8B1C9C2BED12246F228011B2\":{n:\"Name This Game (Unknown) (PAL)\"},\n\t\"0614ED51ACD027D531E7C85C4F435292\":{n:\"Narnia (Glenn Saunders) (PD)\"},\n\t\"709910C2E83361BC4BF8CD0C20C34FBF\":{n:\"Netmaker (Rainbow Vision) (PAL)\"},\n\t\"3F9CB1ABA8EC20E2C243AE642F9942BF\":{n:\"New Questions (1998) (John K. Harvey) (PD)\"},\n\t\"1201C18CF00D2C236F42E4D7D8C86AA1\":{n:\"Nick Bensema Demo (Nick Bensema)\"},\n\t\"392F00FD1A074A3C15BC96B0A57D52A1\":{n:\"Night Driver (1980) (Atari)\",p:1,c:1},\n\t\"F48022230BB774A7F22184B48A3385AF\":{n:\"Night Driver (1980) (Atari) (4K)\",p:1,c:1},\n\t\"FEEC54AAC911887940B47FE8C9F80B11\":{n:\"Night Driver (1980) (Atari) (PAL)\",p:1,c:1},\n\t\"D9DA2AE7C7894A29B43B3C6B79F3B7A2\":{n:\"Night Driver (1980) (Atari) (PAL) (4K)\",p:1,c:1},\n\t\"BD39598F067A1193AE81BD6182E756D1\":{n:\"Night Stalker (1989) (Telegames) (PAL)\"},\n\t\"2783006EE6519F15CBC96ADAE031C9A9\":{n:\"Night Stalker (1989) (Telegames) (PAL) [a]\"},\n\t\"EAD60451C28635B55CA8FEA198444E16\":{n:\"Nightmare (1983) (Sancho) (PAL)\"},\n\t\"27F9E2E1B92AF9DC17C6155605C38E49\":{n:\"Nightmare (CCE)\"},\n\t\"BDB4B584DDC90C9D2EC7E21632A236B6\":{n:\"Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack)\"},\n\t\"DDA23757407C4E217F64962C87AD0C82\":{n:\"Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack) [a]\"},\n\t\"B6D52A0CF53AD4216FEB04147301F87D\":{n:\"No Escape! (1982) (Imagic)\"},\n\t\"DC81C4805BF23959FCF2C649700B82BF\":{n:\"No Escape! (1982) (Imagic) (PAL)\"},\n\t\"D8DF256C0D89E494A9FB3E9ABB8E44AC\":{n:\"No Escape! (1982) (Imagic) (PAL) [a]\"},\n\t\"9912D06EEA42200A198DD3E2BE18C601\":{n:\"No Escape! (1982) (Imagic) [a]\"},\n\t\"637EFAC676FF063F2FBB0ABFF77C4FA5\":{n:\"Noize Maker Demo (PD)\"},\n\t\"34F4B1D809AA705ACE6E46B13253FD3B\":{n:\"Nothern Alliance (Aaron Bergstrom) (Hack)\"},\n\t\"E3C35EAC234537396A865D23BAFB1C84\":{n:\"Nuts (1983) (TechnoVision) (PAL)\"},\n\t\"DE7A64108074098BA333CC0C70EEF18A\":{n:\"Nuts (Unknown)\"},\n\t\"9ED0F2AA226C34D4F55F661442E8F22A\":{n:\"Nuts (Unknown) (PAL)\"},\n\t\"133A4234512E8C4E9E8C5651469D4A09\":{n:\"Obelix (1983) (Atari)\"},\n\t\"19E739C2764A5AB9ED08F9095AA2AF0B\":{n:\"Obelix (1983) (Atari) (PAL)\"},\n\t\"669840B0411BFBAB5C05B786947D55D4\":{n:\"Obelix (1983) (Atari) (PAL) [a]\"},\n\t\"A189F280521F4E5224D345EFB4E75506\":{n:\"Obelix (1983) (Thomas Jentzsch)\"},\n\t\"4CABC895EA546022C2ECAA5129036634\":{n:\"Ocean City (Funvision)\"},\n\t\"45CB0F41774B78DEF53331E4C3BF3362\":{n:\"Octopus (1983) (Carrere Video) (PAL)\"},\n\t\"B6166F15720FDF192932F1F76DF5B65D\":{n:\"Off Your Rocker (1983) (Amiga) (Prototype)\"},\n\t\"98F63949E656FF309CEFA672146DC1B8\":{n:\"Off the Wall (1989) (Atari)\"},\n\t\"36EDEF446AB4C2395666EFC672B92ED0\":{n:\"Off the Wall (1989) (Atari) (PAL)\"},\n\t\"0BF1E354304F46C0CAF8FC0F6F5E9525\":{n:\"Official Frogger (1983) (Arcadia) [a]\"},\n\t\"E823B13751E4388F1F2A375D3560A8D7\":{n:\"Official Frogger (Preview) (1983) (Arcadia) [a]\"},\n\t\"C73AE5BA5A0A3F3AC77F0A9E14770E73\":{n:\"Official Frogger, The (1983) (Arcadia)\"},\n\t\"A74689A08746A667A299B0507E1E6DD9\":{n:\"Official Frogger, The (1983) (Arcadia) (PAL)\"},\n\t\"F5D103A9AE36D1D4EE7EEF657B75D2B3\":{n:\"Official Frogger, The (Preview) (1983) (Arcadia)\"},\n\t\"95FD6097DC27C20666F039CFE34F7C69\":{n:\"Oh No! (Version 1) (17-01-2003) (AD)\"},\n\t\"5A734779D797CCEF25DC8ACFA47244C7\":{n:\"Oh No! (Version 2) (18-01-2003) (AD)\"},\n\t\"FDD4995A50395DB14F518F63C2D63438\":{n:\"Oh No! (Version 3) (18-01-2003) (AD)\"},\n\t\"DE07E9CB43AD8D06A35F6506E22C62E9\":{n:\"Oh No! (Version 4) (22-01-2003) (AD)\"},\n\t\"C9C25FC536DE9A7CDC5B9A916C459110\":{n:\"Oink! (1982) (Activision)\"},\n\t\"06B6C5031B8353F3A424A5B86B8FE409\":{n:\"Oink! (1982) (Activision) (PAL)\"},\n\t\"3DA7CC7049D73D34920BB73817BD05A9\":{n:\"Oink! (1983) (Activision) (16K)\"},\n\t\"2CF20F82ABCAE2DECFF88DB99331E071\":{n:\"Oink! (1983) (Activision) (8K)\"},\n\t\"F8648D0C6AD1266434F6C485FF69EC40\":{n:\"Oink! (CCE)\"},\n\t\"853C11C4D07050C22EF3E0721533E0C5\":{n:\"Oink! (Unknown) (PAL)\"},\n\t\"8101EFAFCF0AF32FEDDA4579C941E6F4\":{n:\"Okie Dokie (4K) (PD)\"},\n\t\"CE4BBE11D682C15A490AE15A4A8716CF\":{n:\"Okie Dokie (Older) (PD)\"},\n\t\"CCA33AE30A58F39E3FC5D80F94DC0362\":{n:\"Okie Dokie (PD)\"},\n\t\"9947F1EBABB56FD075A96C6D37351EFA\":{n:\"Omega Race (1983) (CBS Electronics)\"},\n\t\"257BC3B72A6B5DB3FD0D47619125B387\":{n:\"Omega Race (1983) (CBS Electronics) [a]\"},\n\t\"5B5D04887922B430DE0B7B2A21F9CD25\":{n:\"Omega Race (Genesis)\"},\n\t\"A9784C24CDDB33BD0D14442B97784F3D\":{n:\"Omega Race DC (2003) (TJ) (Omega Race Hack)\"},\n\t\"3B6DBA1A24BB2893BD3BD0593F92016B\":{n:\"Omega Race JS (TJ)\"},\n\t\"61426CEE013306E7F7367534AB124747\":{n:\"One Blue Bar Demo (PD)\"},\n\t\"B83DF1F32B4539C324BDF94851B4DB55\":{n:\"One On One by Angelino (Basketball Hack)\"},\n\t\"8786F4609A66FBEA2CD9AA48CA7AA11C\":{n:\"Open Sesame (1983) (Goliath) (PAL)\",c:1},\n\t\"28D5DF3ED036ED63D33A31D0D8B85C47\":{n:\"Open Sesame (1983) (Goliath) (PAL) [a]\",c:1},\n\t\"90578A63441DE4520BE5324E8F015352\":{n:\"Open Sesame (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\",c:1},\n\t\"C880C659CDC0F84C4A66BC818F89618E\":{n:\"Open Sesame (Thomas Jentzsch)\",c:1},\n\t\"52385334AC9E9B713E13FFA4CC5CB940\":{n:\"Open, Sesame! (1983) (CCE)\",c:1},\n\t\"CC7138202CD8F6776212EBFC3A820ECC\":{n:\"Oscar's Trash Race (03-30-1983) (Atari) (Prototype)\"},\n\t\"4B94FD272785D7EC6C95FB7279D0F522\":{n:\"Oscar's Trash Race (12-03-1982) (Atari) (Prototype)\"},\n\t\"FA1B060FD8E0BCA0C2A097DCFFCE93D3\":{n:\"Oscar's Trash Race (1983) (Atari)\"},\n\t\"47911752BF113A2496DBB66C70C9E70C\":{n:\"Oscar's Trash Race (1983) (Atari) (PAL)\"},\n\t\"55949CB7884F9DB0F8DFCF8707C7E5CB\":{n:\"Othello (1981) (Atari)\"},\n\t\"02CEE0B140D2F1A1EFCFB1D482A5C392\":{n:\"Othello (1981) (Atari) (4K)\"},\n\t\"2C3B9C171E214E9E46BBAA12BDF8977E\":{n:\"Othello (1981) (Atari) (4K) [a]\"},\n\t\"A0E2D310E3E98646268200C8F0F08F46\":{n:\"Othello (1981) (Atari) (PAL)\"},\n\t\"95956108289A917F80667ECCD3CE98A9\":{n:\"Othello (1981) (Atari) (PAL) (4K)\"},\n\t\"00E19EBF9D0817CCFB057E262BE1E5AF\":{n:\"Othello (1981) (Atari) (PAL) [no grid markers]\"},\n\t\"113CD09C9771AC278544B7E90EFE7DF2\":{n:\"Othello (1981) (Atari) [no grid markers]\"},\n\t\"7D9C96B215D1941E87B6FB412EB9204F\":{n:\"Othello (Unknown) (PAL) (4K)\"},\n\t\"F97DEE1AA2629911F30F225CA31789D4\":{n:\"Out of Control (1983) (Avalon Hill)\"},\n\t\"890C13590E0D8D5D6149737D930E4D95\":{n:\"Outlaw (1978) (Atari)\"},\n\t\"F060826626AAC9E0D8CDA0282F4B7FC3\":{n:\"Outlaw (1978) (Atari) (4K)\"},\n\t\"22675CACD9B71DEA21800CBF8597F000\":{n:\"Outlaw (1978) (Atari) (PAL)\"},\n\t\"3EAE062A9B722BDA1255D474A87ECA5C\":{n:\"Outlaw (1978) (Atari) (PAL) (4K)\"},\n\t\"2E3728F3086DC3E71047FFD6B2D9F015\":{n:\"Outlaw (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"F661F129644F338B13D9F4510D816C03\":{n:\"Outlaw (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"7F819454734DDF93F83FEFCFFCD3E212\":{n:\"Outlaw (Jone Yuan) (4K)\"},\n\t\"1EC5BEF77B91E59313CBA205F15B06D7\":{n:\"Overhead Adventure Demo 1 (PD)\"},\n\t\"4066D7D88EC4A2C656127A67FA52DCF1\":{n:\"Overhead Adventure Demo 2 (PD)\"},\n\t\"3C7A96978F52B2B15426CDD50F2C4048\":{n:\"Overhead Adventure Demo 3 (PD)\"},\n\t\"0CFDD2F3B243CAC21F38A0F09F54BEAD\":{n:\"Overhead Adventure Demo 4 (PD)\"},\n\t\"D5AA7472E7F2CC17E893A1A36F8DADF0\":{n:\"Overhead Adventure Demo 5 (PD)\"},\n\t\"F45644FF82B533A781A1EE50F2E95F3C\":{n:\"Overhead Adventure Demo 6 (PD)\"},\n\t\"4689081B7363721858756FE781CC7713\":{n:\"Oystron (V2.6) (Piero Cavina) (PD)\"},\n\t\"26F4F8B098609164EFFEF7809E0121E1\":{n:\"Oystron (V2.7) (Piero Cavina) (PD)\"},\n\t\"E6508B878145187B87B9CDED097293E7\":{n:\"Oystron (V2.8) (Piero Cavina) (PD)\"},\n\t\"70D14C66C319683B4C19ABBE0E3DB57C\":{n:\"Oystron (V2.82) (Piero Cavina) (PD)\"},\n\t\"5360693F1EB90856176BD1C0A7B17432\":{n:\"Oystron (V2.85) (Piero Cavina) (PD)\"},\n\t\"91F0A708EEB93C133E9672AD2C8E0429\":{n:\"Oystron (V2.9) (Piero Cavina) (PD)\"},\n\t\"AA2C4B32656BDE9A75042A4D158583E1\":{n:\"Oystron X (Piero Cavina) (PD)\"},\n\t\"C7E43AD79C5E5C029D9F5FFDE23E32CF\":{n:\"PAL-NTSC Detector (15-11-2002) (CT)\"},\n\t\"106326C262DFD3E8EAEABD961D2A0519\":{n:\"PAL-NTSC Detector (15-11-2002) (CT)[a1]\"},\n\t\"6AC3FD31A51730358708C7FDC62487F8\":{n:\"PC Invaders (Matthias Jaap) (Hack)\"},\n\t\"9C7FA3CFCAAAFB4E6DAF1E2517D43D88\":{n:\"PIEROXM Demo (PD)\"},\n\t\"D0498BACA989E792DB4B8270A02B9624\":{n:\"Pac Ghost Sprite Demo (PD)\"},\n\t\"BD430C2193045C68D1A20A018A976248\":{n:\"Pac Ghost Sprite Demo 2 (PD)\"},\n\t\"F9DA42F91A1C5CFA344D2FF440C6F8D4\":{n:\"Pac Invaders (ZUT)\"},\n\t\"88D300A38BDD7CAB9EDAD271C18CD02B\":{n:\"Pac Kong (Funvision) (PAL)\"},\n\t\"936EF1D6F8A57B9FF575DC195EE36B80\":{n:\"Pac Kong (Unknown)\"},\n\t\"CA53FC8FD8B3C4A7DF89AC86B222EBA0\":{n:\"Pac Man (1983) (CCE)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"651D2B6743A3A18B426BCE2C881AF212\":{n:\"Pac Man (1983) (CCE) [a]\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"B36040A2F9ECAFA73D835D804A572DBF\":{n:\"Pac Man (1983) (Digitel)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"EBF9038E927E6A0DB3E0D170C59911E6\":{n:\"Pac-2600 (PD)\"},\n\t\"D223BC6F13358642F02DDACFAF4A90C9\":{n:\"Pac-Kong (Rainbow Vision) (PAL)\"},\n\t\"A4B99AA5ED85CFDB7D101923147DE035\":{n:\"Pac-Law (Jim Goebel) (Hack)\"},\n\t\"3B8AACF5F5638492B926B5124DE19F18\":{n:\"Pac-Man (1981) (Atari) (8K)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"72DB1194B1CC7D45B242F25EB1C148D3\":{n:\"Pac-Man (1981) (Atari) (Hack)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"6E372F076FB9586AFF416144F5CFE1CB\":{n:\"Pac-Man (1982) (Atari)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"FC2233FC116FAEF0D3C31541717CA2DB\":{n:\"Pac-Man (1982) (Atari) (PAL)\",l:\"PAC-MAN\",lc:\"#f0f010\"},\n\t\"C2410D03820E0FF0A449FA6170F51211\":{n:\"Pac-Man (Unknown) (PAL) (Hack)\"},\n\t\"6B6CA32228AE352B4267E4BD2CDDF10C\":{n:\"Pac-Man 4 (Pac-Man Hack)\"},\n\t\"C569E57DCA93D3BEE115A49923057FD7\":{n:\"Pac-Space (Pac-Man Hack)\"},\n\t\"D7B58303EC8D8C4DBCBF54D3B9734C7E\":{n:\"Paddle Demo (Joe Grand) (PD)\",p:1},\n\t\"82BF0DFF20CEE6A1ED4BB834B00074E6\":{n:\"Panda (Quest) (Suntek) (PAL)\"},\n\t\"0E713D4E272EA7322C5B27D645F56DD0\":{n:\"Panda Chase (1983) (Home Vision) (PAL)\"},\n\t\"F8582BC6CA7046ADB8E18164E8CECDBC\":{n:\"Panda Chase (Unknown) (PAL)\"},\n\t\"714E13C08508EE9A7785CEAC908AE831\":{n:\"Parachute (1983) (Home Vision) (PAL)\"},\n\t\"245F07C8603077A0CAF5F83EE6CF8B43\":{n:\"Parachute (Thomas Jentzsch)\"},\n\t\"012B8E6EF3B5FD5AABC94075C527709D\":{n:\"Party Mix (1983) (Arcadia)\",p:1},\n\t\"7EF3CA08ABDE439C6CCCA84693839C57\":{n:\"Party Mix (1983) (Arcadia) (PAL)\",p:1},\n\t\"4C0FB2544AE0F8B5F7AE8BCE7BD7F134\":{n:\"Party Mix (Preview) (1983) (Arcadia)\",p:1},\n\t\"7D940D749E55B96B7B746519FA06F2DE\":{n:\"Party Mix (Preview) (1983) (Arcadia) (PAL)\",p:1},\n\t\"36C31BB5DAEB103F488C66DE67AC5075\":{n:\"Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia)\",p:1},\n\t\"FF86FC8FFA717BB095E8471638C1C31C\":{n:\"Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia) (PAL)\",p:1},\n\t\"6ED5012793F5DDF4353A48C11EA9B8D3\":{n:\"Party Mix - Down on the Line (3 of 3) (1983) (Arcadia)\",p:1},\n\t\"0E86470791B26292ABE1C64545C47985\":{n:\"Party Mix - Down on the Line (3 of 3) (1983) (Arcadia) (PAL)\",p:1},\n\t\"AAEA37B65DB9E492798F0105A6915E96\":{n:\"Party Mix - Tug of War (2 of 3) (1983) (Arcadia)\",p:1},\n\t\"08F4DC6F118F7C98E2406C180C08E78E\":{n:\"Party Mix - Tug of War (2 of 3) (1983) (Arcadia) (PAL)\",p:1},\n\t\"E40A818DAC4DD851F3B4AAFBE2F1E0C1\":{n:\"Peek-A-Boo (1984) (Atari) (Prototype)\"},\n\t\"17BBE288C3855C235950FEA91C9504E9\":{n:\"Pega Ladrao (Dismac)\"},\n\t\"ACE319DC4F76548659876741A6690D57\":{n:\"Pele's Soccer (1981) (Atari)\"},\n\t\"7A09299F473105AE1EF3AD6F9F2CD807\":{n:\"Pele's Soccer (1981) (Atari) (PAL)\"},\n\t\"4BCC7F6BA501A26EE785B7EFBFB0FDC8\":{n:\"Pengo (1983) (Atari) (Prototype)\"},\n\t\"04014D563B094E79AC8974366F616308\":{n:\"Pengo (1984) (Atari)\"},\n\t\"87B6A17132FC32F576BC49EA18729506\":{n:\"Pengo (1984) (Atari) (PAL)\"},\n\t\"212D0B200ED8B45D8795AD899734D7D7\":{n:\"Pepsi Invaders (1983) (Atari)\"},\n\t\"6CE2110AC5DD89AB398D9452891752AB\":{n:\"Persian Gulf War (Funvision)\"},\n\t\"09388BF390CD9A86DC0849697B96C7DC\":{n:\"Pete Rose Baseball (1988) (Absolute)\"},\n\t\"CB4A7B507372C24F8B9390D22D54A918\":{n:\"Peter Penguin (1983) (ITT Family Games) (PAL)\"},\n\t\"3685060707DF27D4091BA0EA2DC4B059\":{n:\"PezZerk - PezMan in Ghost Manor (Hack)\"},\n\t\"E959B5A2C882CCAACB43C32790957C2D\":{n:\"Phantom II & Pirate (NTSC)\"},\n\t\"069C17BEB1E8E0557ADB8539FDCF6CBA\":{n:\"Phantom II & Pirate (PAL60)\"},\n\t\"6B1FC959E28BD71AED7B89014574BDC2\":{n:\"Phantom Tank (1982) (BitCorp) (PAL)\"},\n\t\"B29359F7DE62FED6E6AD4C948F699DF8\":{n:\"Phantom Tank (1982) (Puzzy) (PAL)\"},\n\t\"5A9D188245AFF829EFDE816FCADE0B16\":{n:\"Phantom Tank (1983) (CCE) (PAL)\"},\n\t\"7454786AF7126CCC7A0C31FCF5AF40F1\":{n:\"Phantom Tank (Unknown) (PAL)\"},\n\t\"4D38E1105C3A5F0B3119A805F261FCB5\":{n:\"Phantom UFO (4 Game in One Light Green) (1983) (BitCorp) (PAL)\"},\n\t\"08BD4C1DCC843F6A0B563D9FD80B3B11\":{n:\"Phantompanzer II (1983) (Quelle) (PAL)\"},\n\t\"E9034B41741DCEE64AB6605ABA9DE455\":{n:\"Phanton Tank (Digivision)\"},\n\t\"3577E19714921912685BB0E32DDF943C\":{n:\"Pharaoh's Curse (1983) (TechnoVision) (PAL)\",c:1},\n\t\"2AE700C9DBA843A68DFDCA40D7D86BD6\":{n:\"Pharaoh's Curse (Thomas Jentzsch)\",c:1},\n\t\"62F74A2736841191135514422B20382D\":{n:\"Pharaoh's Curse (Unknown)\",c:1},\n\t\"A69F5B1761A8A11C98E706EC7204937F\":{n:\"Pharaoh's Curse (Unknown) (PAL)\",c:1},\n\t\"3AB5D138E26D88C8190E7CC629A89493\":{n:\"Phased Color Demo (PD)\",c:1},\n\t\"7DCBFD2ACC013E817F011309C7504DAA\":{n:\"Phaser Patrol (1982) (Arcadia)\",c:1},\n\t\"72305C997F2CEC414FE6F8C946172F83\":{n:\"Phaser Patrol (1982) (Arcadia) (PAL)\",c:1},\n\t\"7867EE819B53D69CFCFE740F7DDCA574\":{n:\"Phaser Patrol (1982) (Arcadia) (Prototype)\",c:1},\n\t\"A7A58E9291AEFA1064E933071F60D4EF\":{n:\"Phaser Patrol (1982) (Arcadia) (Prototype) [a]\",c:1},\n\t\"A412C8577B2D57B09185AE51739AC54F\":{n:\"Phaser Patrol (1982) (Arcadia) [a]\",c:1},\n\t\"CA54DE69F7CDF4D7996E86F347129892\":{n:\"Philly Flasher (1982) (PlayAround)\",p:1},\n\t\"7E52A95074A66640FCFDE124FFFD491A\":{n:\"Phoenix (1982) (Atari)\"},\n\t\"79FCDEE6D71F23F6CF3D01258236C3B9\":{n:\"Phoenix (1982) (Atari) (PAL)\"},\n\t\"FD8B4EE0D57605B35E236E814F706FF1\":{n:\"Phoenix (1982) (Atari) (PAL) [a]\"},\n\t\"A00EC89D22FCC0C1A85BB542DDCB1178\":{n:\"Phoenix (1983) (CCE)\"},\n\t\"00E55B27FE2E96354CD21B8B698D1E31\":{n:\"Phoenix (Unknown)\"},\n\t\"A8633050A686270FCF6C0CC4DCBAD630\":{n:\"Phoenix (Zirok)\"},\n\t\"C4060A31D61BA857E756430A0A15ED2E\":{n:\"Pick 'n Pile (2003) (TJ)\",c:1},\n\t\"DA79AAD11572C80A96E261E4AC6392D0\":{n:\"Pick 'n' Pile (1990) (Salu) (PAL)\",c:1},\n\t\"1D4E0A034AD1275BC4D75165AE236105\":{n:\"Pick Up (1983) (20th Century Fox) (Prototype)\"},\n\t\"17C0A63F9A680E7A61BEBA81692D9297\":{n:\"Picnic (1982) (U.S. Games)\",p:1},\n\t\"24544EE5D76F579992D9522E9B238955\":{n:\"Picnic (1983) (Carrere Video) (PAL)\",p:1},\n\t\"D3423D7600879174C038F53E5EBBF9D3\":{n:\"Piece o' Cake (1982) (U.S. Games)\",p:1},\n\t\"8E4FA8C6AD8D8DCE0DB8C991C166CDAA\":{n:\"Pigs in Space (1983) (Atari)\"},\n\t\"95E1D834C57CDD525DD0BD6048A57F7B\":{n:\"Pigs in Space (1983) (Atari) (PAL)\"},\n\t\"CC3D942C6958BD16B1C602623F59E6E1\":{n:\"Pigs in Space (1983) (Atari) (PAL) [a]\"},\n\t\"F04EE80011D95798006378643650AAA7\":{n:\"Pigs in Space (1983) (Atari) (Prototype)\"},\n\t\"E3533684A7EF930A7FBD0C4DD8EC4847\":{n:\"Pimball (1983) (CCE)\"},\n\t\"DBC7485AD5814D466DE780A3E7ED3B46\":{n:\"Pink Floyd (Kyle Pittman) (PD)\"},\n\t\"69E79B1352B9EE1754BBE63B4A7062C3\":{n:\"Pink Floyd - The Wall (2003) (Barry Laws Jr.) (Hack)\"},\n\t\"798CC114F1623C14085868CD3494FE8E\":{n:\"Pins Revenge (Atari Freak 1)\"},\n\t\"F73D2D0EFF548E8FC66996F27ACF2B4B\":{n:\"Pitfall (1983) (CCE)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"D20E61C86ED729780FECA162166912CA\":{n:\"Pitfall (1984) (Supergame)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"2D405DA70AF82B20A6B3ECC3D1D2C4EC\":{n:\"Pitfall (Genus)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"5A272012A62BECABCD52920348C7C60B\":{n:\"Pitfall (Star Game)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"39A6A5A2E1F6297CCEAA48BB03AF02E9\":{n:\"Pitfall 2 Plus (Hack)\"},\n\t\"7B79BEB378D1B4471DEF90CECCF413DE\":{n:\"Pitfall Cupcake (Hack)\"},\n\t\"6D842C96D5A01967BE9680080DD5BE54\":{n:\"Pitfall II (1983) (Activision)\"},\n\t\"E34C236630C945089FCDEF088C4B6E06\":{n:\"Pitfall II (1983) (Activision) (PAL)\"},\n\t\"448C2A175AFC8DF174D6FF4CCE12C794\":{n:\"Pitfall II (1983) (Activision) [a2]\"},\n\t\"490EED07D4691B27F473953FBEA6541A\":{n:\"Pitfall II (1983) (Activision) [a]\"},\n\t\"268F46038E29301568FA9E443E16E960\":{n:\"Pitfall Unlimited (Atarius Maximus) (Hack)\"},\n\t\"AAD91BE0BF78D33D29758876D999848A\":{n:\"Pitfall! (1981) (Activision) (Prototype)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"3E90CF23106F2E08B2781E41299DE556\":{n:\"Pitfall! (1982) (Activision)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"6FD7C7057EEAB273B29C7AAFC7429A96\":{n:\"Pitfall! (1982) (Activision) (16K)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"98EC0FA4199B9C01F7B8FA3732E43372\":{n:\"Pitfall! (1982) (Activision) (8K)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"791BC8ACEB6B0F4D9990D6062B30ADFA\":{n:\"Pitfall! (1982) (Activision) (PAL)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"1782929E1C214B70FB6884F77C207A55\":{n:\"Pitfall! (1982) (Activision) (Prototype)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"2B430C00DC79E495762AC59B2F9B4FCD\":{n:\"Pitfall! (1982) (Activision) (Prototype)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"E42B937C30C617241CA9E01E4510C3F6\":{n:\"Pitfall! (No Walls Hack)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"177504ABD4260C4265E1338955E9FA47\":{n:\"Pitfall! (Steroids Hack)\"},\n\t\"55EF6AB2321CA0C3D369E63D59C059C8\":{n:\"Pitfall! (Unknown) (PAL)\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"5BBAB3F3E4B47E3E23F9820765DBB45C\":{n:\"Pitfall! (says 1985) [h1]\",l:\"PITFALL!\",lc:\"#ececec #272\"},\n\t\"82EFE7984783E23A7C55266A5125C68E\":{n:\"Pizza Chef (1983) (CCE)\"},\n\t\"D9FBF1113114FB3A3C97550A0689F10F\":{n:\"Pizza Chef (1983) (ZiMAG) (Prototype)\"},\n\t\"2F77F015FC880B05F28E84156F989A0C\":{n:\"Plane Demo (Gonzalo) (PD)\"},\n\t\"AE10527840A1AC24DE43730645ED508D\":{n:\"Planet Invaders (Charles Morgan) (Hack)\"},\n\t\"BB745C893999B0EFC96EA9029E3C62CA\":{n:\"Planet Patrol (1982) (Play Video) (PAL)\"},\n\t\"043F165F384FBEA3EA89393597951512\":{n:\"Planet Patrol (1982) (Spectravision)\"},\n\t\"69FAC82CD2312DD9CE5D90E22E2F070A\":{n:\"Planet Patrol (1982) (Spectravision) (PAL)\"},\n\t\"D6ACFF6AED0F04690FE4024D58FF4CE3\":{n:\"Planet Patrol (1982) (Spectravision) (PAL) [different spaceship]\"},\n\t\"79004F84BDEEE78D142E445057883169\":{n:\"Planet Patrol (1983) (CCE)\"},\n\t\"1C3F3133A3E5B023C77ECBA94FD65995\":{n:\"Planet Patrol (1983) (CCE) [a]\"},\n\t\"AAFC79FFC32C4C9B2D73C8ADA7602CFE\":{n:\"Planet Patrol (Unknown) (PAL)\"},\n\t\"9EFB4E1A15A6CDD286E4BCD7CD94B7B8\":{n:\"Planet of the Apes (1983) (20th Century Fox) (Prototype)\"},\n\t\"DA4E3396AA2DB3BD667F83A1CB9E4A36\":{n:\"Plaque Attack (1983) (Activision)\"},\n\t\"32244E55CE6EC6BFBD763F33384BDC2E\":{n:\"Plaque Attack (1983) (Activision) (16K)\"},\n\t\"2ABA6A1B01A5859E96D6A66D2286772F\":{n:\"Plaque Attack (1983) (Activision) (8K)\"},\n\t\"7CED6709F091E79A2AB9575D3516A4AC\":{n:\"Plaque Attack (1983) (Activision) (PAL)\"},\n\t\"B64426E787F04FF23EE629182C168603\":{n:\"Plaque Attack (1983) (Dynacom)\"},\n\t\"DE24F700FD28D5B8381DE13ABD091DB9\":{n:\"Plaque Attack (CCE)\"},\n\t\"8B8789C6669A4CEE86C579A65332F852\":{n:\"Plaque Attack (Digivision)\"},\n\t\"3ECCF9F363F5C5DE0C8B174A535DC83B\":{n:\"Plaque Attack (Unknown) (PAL)\"},\n\t\"6A76D5F0ED721639474AA9BBDE69EBF0\":{n:\"Play Demo (PD)\",c:1},\n\t\"5C3A6D27C026F59A96B7AF91E8B1BF26\":{n:\"PlayAround Demo (PlayAround) (1982)\"},\n\t\"103E9D616328969F5D7B4E0A381B25D5\":{n:\"Playfield Illustration and Logo Demo (2001) (Jake Patterson) (PD)\"},\n\t\"CBA56E939252B05DF7B7DE87307D12CA\":{n:\"Playfield Text Demo (2001) (Roger Williams)\"},\n\t\"8BBFD951C89CC09C148BFABDEFA08BEC\":{n:\"Pleiades (1983) (UA Limited) (Prototype)\",c:1},\n\t\"9AFDFE1CFF7F37F1C971FE3F0C900606\":{n:\"Plug Attack (Funvision)\"},\n\t\"7C4A499D343FCA0CEF2D59DD16AF621A\":{n:\"Poker Card Demo (PD)\"},\n\t\"D74A81FCD89C5CF0BD4C88EB207EBD62\":{n:\"Poker Squares (V0.00a) (2001) (B. Watson)\"},\n\t\"12D7E0D6B187889F8D150BF7034D1DB2\":{n:\"Poker Squares (V0.0e) (2001) (B. Watson)\"},\n\t\"E879B7093AC4CFAD74C88D636CA97D00\":{n:\"Poker Squares (V0.0f) (2001) (B. Watson)\"},\n\t\"6E7ED74082F39AD4166C823765A59909\":{n:\"Poker Squares (V0.14) (2001) (B. Watson)\"},\n\t\"78297DB7F416AF3052DD793B53FF014E\":{n:\"Poker Squares (V0.17) (2001) (B. Watson)\"},\n\t\"54785FA29E28AAE6038929BA29D33D38\":{n:\"Poker Squares (V0.19) (2001) (B. Watson)\"},\n\t\"675AE9C23FA1AAE376CEA86CAD96F9A5\":{n:\"Poker Squares (V0.25) (2001) (B. Watson)\"},\n\t\"CCCFE9E9A11B1DAD04BEBA46EEFB7351\":{n:\"Poker Squares (V0.25) (PAL) (2001) (B. Watson)\"},\n\t\"8C136E97C0A4AF66DA4A249561ED17DB\":{n:\"Poker Squares (V0.27) (2001) (B. Watson)\"},\n\t\"08D60A58A691C7F690162850302DC0E1\":{n:\"Poker Squares (V0.27) (PAL) (2001) (B. Watson)\"},\n\t\"EA832E2CB6AAE6F525F07452C381FA48\":{n:\"Polar to Cartesian and VV (2001) (Roger Williams)\"},\n\t\"8953BC11352D794431D3303E31D3B892\":{n:\"Polaris (02-17-1983) (Tigervision) (Prototype) (4K)\"},\n\t\"87BEA777A34278D29B3B6029833C5422\":{n:\"Polaris (1983) (Thomas Jentzsch)\"},\n\t\"44F71E70B89DCC7CF39DFD622CFB9A27\":{n:\"Polaris (1983) (Tigervision)\"},\n\t\"203049F4D8290BB4521CC4402415E737\":{n:\"Polaris (1983) (Tigervision) (PAL)\"},\n\t\"9048CCB7E0802CD8FA5BFC2609F292D8\":{n:\"Polaris (1983) (Tigervision) (Prototype)\"},\n\t\"7F0209CFCC3D181715463F4D6451CECF\":{n:\"Pole Position (05-15-1983) (Atari) (Prototype)\"},\n\t\"A4FF39D513B993159911EFE01AC12EBA\":{n:\"Pole Position (1983) (Atari)\"},\n\t\"B56264F738B2EB2C8F7CF5A2A75E5FDC\":{n:\"Pole Position (1983) (Atari) (PAL)\"},\n\t\"25B52BF8DD215BCBD59C9ABDB55C44F8\":{n:\"Pole Position (1983) (Atari) (PAL) [a]\"},\n\t\"5F39353F7C6925779B0169A87FF86F1E\":{n:\"Pole Position (1983) (Atari) [a]\"},\n\t\"3225676F5C0C577AECCFAA7E6BEDD765\":{n:\"Pole Position (1983) (CCE)\"},\n\t\"5DA8FD0B5ED33A360BFF37F8B5D0CD58\":{n:\"Pole Position (Tron)\"},\n\t\"EE28424AF389A7F3672182009472500C\":{n:\"Polo (1978) (Atari) (Prototype)\"},\n\t\"14B1E30982962C72F426E2E763EB4274\":{n:\"Polo (1978) (Atari) (Prototype) (4K)\"},\n\t\"A83B070B485CF1FB4D5A48DA153FDF1A\":{n:\"Pompeii (1983) (Apollo) (Prototype)\"},\n\t\"668DC528B7EA9345140F4FCFBECF7066\":{n:\"Pooyan (1983) (Gakken) (PAL)\"},\n\t\"4799A40B6E889370B7EE55C17BA65141\":{n:\"Pooyan (1983) (Konami)\"},\n\t\"F70E3F3BB2D19EC2AAEC8F78DC43744F\":{n:\"Pooyan (Jone Yuan) (Hack)\"},\n\t\"89AFFF4A10807093C105740C73E9B544\":{n:\"Pooyan (Unknown) (PAL)\"},\n\t\"C7F13EF38F61EE2367ADA94FDCC6D206\":{n:\"Popeye (1983) (Parker Bros)\",c:1},\n\t\"E9CB18770A41A16DE63B124C1E8BD493\":{n:\"Popeye (1983) (Parker Bros) (PAL)\",c:1},\n\t\"F93D7FEE92717E161E6763A88A293FFA\":{n:\"Porky's (1983) (20th Century Fox)\"},\n\t\"4A5FDDF89801336637AC8E57A7C9A881\":{n:\"Power Play Arcade Video Game Album IV (1984) (Amiga) (Prototype)\"},\n\t\"BBF8C7C9ED280151934AABE138E41BA7\":{n:\"Power Play Arcade Video Game Album V (1984) (Amiga) (Prototype)\"},\n\t\"97D079315C09796FF6D95A06E4B70171\":{n:\"Pressure Cooker (1983) (Activision)\"},\n\t\"525EA747D746F3E80E3027720E1FA7AC\":{n:\"Pressure Cooker (1983) (Activision) (PAL)\"},\n\t\"D57913088E0C49AC3A716BF9837B284F\":{n:\"Pressure Cooker (1983) (Activision) (PAL) [a]\"},\n\t\"027A59A575B78860AED780B2AE7D001D\":{n:\"Pressure Cooker (CCE)\"},\n\t\"DE1A636D098349BE11BBC2D090F4E9CF\":{n:\"Pressure Gauge (Hozer Video Games)\"},\n\t\"6A03C28D505BAB710BF20B954E14D521\":{n:\"Pressure Gauge 2 Beta (Hozer Video Games)\"},\n\t\"EF3A4F64B6494BA770862768CAF04B86\":{n:\"Private Eye (1983) (Activision)\"},\n\t\"1266B3FD632C981F3EF9BDBF9F86CE9A\":{n:\"Private Eye (1983) (Activision) (PAL)\"},\n\t\"F9CEF637EA8E905A10E324E582DD39C2\":{n:\"Private Eye (CCE)\"},\n\t\"22F6B40FC82110D68E50A1208AE0BB97\":{n:\"Purple Bar Demo (PD)\"},\n\t\"9CA2DEB61318EBA4FB784D4BF7441D8B\":{n:\"Purple Bar Demo 2 (PD)\"},\n\t\"6E19428387686A77D8C8D2F731CB09E0\":{n:\"Purple Cross Demo (PD)\"},\n\t\"CFF1E9170BDBC29859B815203EDF18FA\":{n:\"Push (V0.01) (1998) (AD)\",c:1},\n\t\"B7E459D5416EEB196AAA8E092DB14463\":{n:\"Push (V0.02) (1998) (AD)\"},\n\t\"C482F8EEBD45E0B8D479D9B71DD72BB8\":{n:\"Push (V0.03) (1998) (AD)\",c:1},\n\t\"BEFCE0DE2012B24FD6CB8B53C17C8271\":{n:\"Push (V0.03) (No Illegal Opcodes) (1998) (AD)\"},\n\t\"0375F589F7DA06D2D2BE532E0D4D4B94\":{n:\"Push (V0.04) (2001) (AD)\"},\n\t\"96F806FC62005205D851E758D050DFCA\":{n:\"Push (V0.05) (2001) (AD)\"},\n\t\"9D2F05D0FE8B2DFCF770B02EDA066FC1\":{n:\"Push (V0.06) (2001) (AD)\"},\n\t\"9F93734C68F6479EB022CAB40814142E\":{n:\"Push (V0.07) (2001) (AD)\"},\n\t\"78963290052FD17C6C7998305AB3A6A0\":{n:\"Push (V0.08) (2001) (AD)\"},\n\t\"679D30C7886B283CBE1DB4E7DBE5F2A6\":{n:\"Puzzle (Colin Hughes) (PD)\"},\n\t\"3FF5165378213DAB531FFA4F1A41AE45\":{n:\"Pygmy (1983) (Quelle) (PAL)\"},\n\t\"6FC0176CCF53D7BCE249AEB56D59D414\":{n:\"Pyramid War (Rainbow Vision) (PAL)\"},\n\t\"37FD7FA52D358F66984948999F1213C5\":{n:\"Pyramid War (Rainbow Vision) (PAL) [a2]\"},\n\t\"8B40A9CA1CFCD14822E2547EAA9DF5C1\":{n:\"Q-bert (1983) (Parker Bros) (PAL)\"},\n\t\"1EDE4F365CE1386D58F121B15A775E24\":{n:\"Q-bert (1983) (Parker Bros) (PAL) [a]\"},\n\t\"484B0076816A104875E00467D431C2D2\":{n:\"Q-bert (1987) (Atari)\"},\n\t\"EB6D6E22A16F30687ADE526D7A6F05C5\":{n:\"Q-bert (1987) (Atari) (PAL)\"},\n\t\"A91D0858A52DE3A2E6468437212D93E8\":{n:\"Q-bert (208 in 1) (Unknown) (PAL)\"},\n\t\"517592E6E0C71731019C0CEBC2CE044F\":{n:\"Q-bert's Qubes (1984) (Parker Bros)\"},\n\t\"B15026B43C6758609667468434766DD8\":{n:\"Qb (0.06) (Retroactive)\",c:1},\n\t\"6803FA7C2C094B428B859A58DC1DD06A\":{n:\"Qb (0.11) (Retroactive)\",c:1},\n\t\"5A5390F91437AF9951A5F8455B61CD43\":{n:\"Qb (0.11) (Retroactive) (PAL)\",c:1},\n\t\"376944889DCFA96C73D3079F308E3D32\":{n:\"Qb (0.11) (Retroactive) (Stella)\",c:1},\n\t\"292A0BB975B2587F9AC784C960E1B453\":{n:\"Qb (05-02-2001) (AD)\",c:1},\n\t\"D0E9BEB2347595C6C7D158E9D83D2DA8\":{n:\"Qb (2.00) (Retroactive)\",c:1},\n\t\"C866C995C0D2CA7D017FEF0FC0C2E268\":{n:\"Qb (2.00) (Retroactive) (PAL)\",c:1},\n\t\"F33F1D0F7819C74148DACB48CBF1C597\":{n:\"Qb (2.00) (Retroactive) (Stella)\",c:1},\n\t\"2E0AED5BB619EDCEFA3FAFB4FBE7C551\":{n:\"Qb (2.06) (Retroactive) (NTSC)\",c:1},\n\t\"05EB4347F0EC8F4783983CA35FFD8D1B\":{n:\"Qb (2.06) (Retroactive) (PAL)\",c:1},\n\t\"E800E4AEC7C6C54C9CF3DB0D1D030058\":{n:\"Qb (2.06) (Retroactive) (Stella)\",c:1},\n\t\"3A51A6860848E36E6D06FFE01B71FB13\":{n:\"Qb (2.07) (Retroactive) (NTSC)\",c:1},\n\t\"FAE0B86934A7C5A362281DFFEBDB43A0\":{n:\"Qb (2.07) (Retroactive) (PAL)\",c:1},\n\t\"CEA9F72036DC6F7AF5EFF52459066290\":{n:\"Qb (2.07) (Retroactive) (Stella)\",c:1},\n\t\"67BD3D4DC5AC6A42A99950B4245BDC81\":{n:\"Qb (2.11) (Retroactive)\",c:1},\n\t\"283DEE88F295834C4C077D788F151125\":{n:\"Qb (2.11) (Retroactive) (PAL)\",c:1},\n\t\"2808DC745FF4321DC5C8122ABEF6711F\":{n:\"Qb (2.11) (Retroactive) (Stella)\",c:1},\n\t\"35163B56F4A692A232AE96AD3E23310F\":{n:\"Qb (2.12) (Retroactive)\",c:1},\n\t\"B3017E397F74EFD53CAF8FAE0A38E3FE\":{n:\"Qb (2.12) (Retroactive) (PAL)\",c:1},\n\t\"6E5D5BA193D2540AEC2E847AAFB2A5FB\":{n:\"Qb (2.14) (Retroactive) (NTSC)\",c:1},\n\t\"4F634893D54E9CABE106E0EC0B7BDCDF\":{n:\"Qb (2.14) (Retroactive) (PAL)\",c:1},\n\t\"52E1954DC01454C03A336B30C390FB8D\":{n:\"Qb (2.14) (Retroactive) (Stella)\",c:1},\n\t\"AC53B83E1B57A601EEAE9D3CE1B4A458\":{n:\"Qb (2.15) (Retroactive) (NTSC)\",c:1},\n\t\"9281ECCD7F6EF4B3EBDCFD2204C9763A\":{n:\"Qb (2.15) (Retroactive) (PAL)\",c:1},\n\t\"34E37EAFFC0D34E05E40ED883F848B40\":{n:\"Qb (2.15) (Retroactive) (Stella)\",c:1},\n\t\"2D69A5F23784F1C2230143292A073B53\":{n:\"Qb (Fixed background animation) (2001) (AD)\",c:1},\n\t\"17512D0C38F448712F49F36F9D185C4E\":{n:\"Qb (Release Candidate #1) (Retroactive)\",c:1},\n\t\"687C23224E26F81C56E431C24FAEA36D\":{n:\"Qb (Simple Background Animation) (2001) (AD)\",c:1},\n\t\"3F01BD6D059396F495A4CDE7DE0AB180\":{n:\"Qb (Special Edition) (NTSC) (Retroactive)\",c:1},\n\t\"F49A34F1FDD7DC147CBF96CE2CE71B76\":{n:\"Qb (Special Edition) (PAL) (Retroactive)\",c:1},\n\t\"E01E00504E6D4B88FA743C0BBE8A96E5\":{n:\"Qb (Special Edition, some bugfixes) (Retroactive)\",c:1},\n\t\"D787EC6785B0CCFBD844C7866DB9667D\":{n:\"Qb (V0.04) (2001) (Retroactive)\",c:1},\n\t\"3C4A6F613CA8BA27CE9E43C6C92A3128\":{n:\"Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)\",c:1},\n\t\"CF0C593C563C84FDAF0F741ADB367445\":{n:\"Qb (V0.05) (2001) (Retroactive)\",c:1},\n\t\"35FA32256982774A4F134C3347882DFF\":{n:\"Qb (V0.05) (Macintosh) (2001) (Retroactive)\",c:1},\n\t\"8712CCEEC5644AACC2C21203D9EBE2EC\":{n:\"Qb (V0.10) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"4233EB824C2B4811ABEF9B6D00355AE9\":{n:\"Qb (V0.10) (PAL) (2001) (Retroactive)\",c:1},\n\t\"D010E3DFE7366E47561C088079A59439\":{n:\"Qb (V0.10) (Stella) (2001) (Retroactive)\",c:1},\n\t\"0906C6E0E4BDA9C10CFA4C5FC64D2F4B\":{n:\"Qb (V0.12) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"AE682886058CD6981C4B8E93E7B019CF\":{n:\"Qb (V0.12) (PAL) (2001) (Retroactive)\",c:1},\n\t\"CDC1A5C61D7488EADC9ABA36166B253D\":{n:\"Qb (V0.12) (Stella) (2001) (Retroactive)\",c:1},\n\t\"8B504B417C8626167A7E02F44229F0E7\":{n:\"Qb (V1.00) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"8FFFC8F15BB2E6D24E211884A5479AA5\":{n:\"Qb (V1.00) (PAL) (2001) (Retroactive)\",c:1},\n\t\"7BC4FD254EC8C0A25A13F02FD3F762FF\":{n:\"Qb (V1.00) (Stella) (2001) (Retroactive)\",c:1},\n\t\"8CCAA442D26B09139685F5B22BF189C4\":{n:\"Qb (V1.01) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"ABB740BEA0A6842831B4F53112FB8145\":{n:\"Qb (V1.01) (PAL) (2001) (Retroactive)\",c:1},\n\t\"AE0D4F3396CB49DE0FABDFF03CB2756F\":{n:\"Qb (V2.02) (PAL) (2001) (Retroactive)\",c:1},\n\t\"C504A71C411A601D1FC3173369CFDCA4\":{n:\"Qb (V2.02) (Stella) (2001) (Retroactive)\",c:1},\n\t\"693137592A7F5CCC9BAAE2D1041B7A85\":{n:\"Qb (V2.02) (Stella) (2001) (Retroactive) [a1]\",c:1},\n\t\"98CCD15345B1AEE6CAF51E05955F0261\":{n:\"Qb (V2.03) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"4C030667D07D1438F0E5C458A90978D8\":{n:\"Qb (V2.03) (PAL) (2001) (Retroactive)\",c:1},\n\t\"CE64812EB83C95723B04FB56D816910B\":{n:\"Qb (V2.04) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"EB9712E423B57F0B07CCD315BB9ABF61\":{n:\"Qb (V2.04) (PAL) (2001) (Retroactive)\",c:1},\n\t\"4DD6C7AB9EF77F2B4950D8FC7CD42EE1\":{n:\"Qb (V2.04) (Stella) (2001) (Retroactive)\",c:1},\n\t\"659A20019DE4A23C748EC2292EA5F221\":{n:\"Qb (V2.05) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"C92CFA54B5D022637FDCBDC1EF640D82\":{n:\"Qb (V2.05) (PAL) (2001) (Retroactive)\",c:1},\n\t\"DCBA0E33AA4AED67630A4B292386F405\":{n:\"Qb (V2.08) (Half Speed Version) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"57A66B6DB7EFC5DF17B0B0F2F2C2F078\":{n:\"Qb (V2.08) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"876A953DAAE0E946620CF05ED41989F4\":{n:\"Qb (V2.08) (PAL) (2001) (Retroactive)\",c:1},\n\t\"318046AE3711C05FD16E479B298E5FCC\":{n:\"Qb (V2.08) (Stella) (2001) (Retroactive)\",c:1},\n\t\"E2389C0BE5B5B84E0D3CA36EC7E67514\":{n:\"Qb (V2.09) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"008543AE43497AF015E9428A5E3E874E\":{n:\"Qb (V2.09) (PAL) (2001) (Retroactive)\",c:1},\n\t\"67CE6CDF788D324935FD317D064ED842\":{n:\"Qb (V2.09) (Stella) (2001) (Retroactive)\",c:1},\n\t\"94E4C9B924286038527F49CDC20FDA69\":{n:\"Qb (V2.12) (Stella) (2001) (Retroactive)\",c:1},\n\t\"4FAE08027365D31C558E400B687ADF21\":{n:\"Qb (V2.17) (NTSC) (2001) (Retroactive)\",c:1},\n\t\"8388D6FE59C38C0B3A6AB2C58420036A\":{n:\"Quadrun (12-06-1982) (Atari) (Prototype)\"},\n\t\"024365007A87F213CBE8EF5F2E8E1333\":{n:\"Quadrun (1983) (Atari)\"},\n\t\"392D34C0498075DD58DF0CE7CD491EA2\":{n:\"Quadrun (1983) (Atari) (Prototype)\"},\n\t\"955C408265AD6994F61F9B66657BBAE9\":{n:\"Quadrun (Video Conversion) (Fabrizio Zavagli)\"},\n\t\"152C253478B009C275E18CD731B48561\":{n:\"Quest (11-10-2002) (Chris Larkin)\"},\n\t\"A0675883F9B09A3595DDD66A6F5D3498\":{n:\"Quest for Quintana Roo (1989) (Telegames)\"},\n\t\"F736864442164B29235E8872013180CD\":{n:\"Quest for Quintana Roo (1989) (Telegames) (PAL)\"},\n\t\"7EBA20C2291A982214CC7CBE8D0B47CD\":{n:\"Quick Step! (1983) (Imagic)\"},\n\t\"E72EE2D6E501F07EC5E8A0EFBE520BEE\":{n:\"Quick Step! (1983) (Imagic) (PAL)\"},\n\t\"84290E333FF7567C2380F179430083B8\":{n:\"Quick Step! (1983) (Imagic) (PAL) [a]\"},\n\t\"7836794B79E8060C2B8326A2DB74EEF0\":{n:\"RIOT RAM Test (26-11-2002) (Dennis Debro)\"},\n\t\"6CCD8CA17A0E4429B446CDCB66327BF1\":{n:\"RPG Engine (12-05-2003) (Paul Slocum) (PD)\",c:1},\n\t\"9C6D65BD3B477AACE0376F705B354D68\":{n:\"RPG Kernal (18-04-2003) (Paul Slocum) (PD)\",c:1},\n\t\"0F341D1F4E144E3163D9A5FC5A662B79\":{n:\"RUN Platform Demo (PD)\",c:1},\n\t\"2E5B184DA8A27C4D362B5A81F0B4A68F\":{n:\"Rabbit Transit (08-29-1983) (Atari) (Prototype)\"},\n\t\"FB4CA865ABC02D66E39651BD9ADE140A\":{n:\"Rabbit Transit (1983) (Arcadia)\"},\n\t\"7481F0771BFF13885B2FF2570CF90D7B\":{n:\"Rabbit Transit (1983) (Arcadia) (PAL)\"},\n\t\"A779B9FA02C62D00D7C31ED51268F18A\":{n:\"Rabbit Transit (1983) (Arcadia) [a]\"},\n\t\"CD399BC422992A361BA932CC50F48B65\":{n:\"Rabbit Transit (Preview) (1983) (Arcadia)\"},\n\t\"1A23540D91F87584A04F184304A00648\":{n:\"Race Demo (PD)\"},\n\t\"AAB840DB22075AA0F6A6B83A597F8890\":{n:\"Racing Car (1983) (Home Vision) (PAL)\"},\n\t\"4DF9D7352A56A458ABB7961BF10ABA4E\":{n:\"Racing Car (Unknown)\"},\n\t\"CBCED209DD0575A27212D3EEE6AEE3BC\":{n:\"Racquetball (1981) (Apollo)\",c:1},\n\t\"4F7B07EC2BEF5CCFFE06403A142F80DB\":{n:\"Racquetball (1981) (Apollo) (PAL)\",c:1},\n\t\"A20D931A8FDDCD6F6116ED21FF5C4832\":{n:\"Racquetball (1981) (Apollo) [a]\",c:1},\n\t\"F0D393DBF4164A688B2346770C9BBD12\":{n:\"Racquetball (Unknown)\",c:1},\n\t\"97933C9F20873446E4C1F8A4DA21575F\":{n:\"Racquetball (Unknown) (PAL)\",c:1},\n\t\"56300ED31FEF018BD96768CCC982F7B4\":{n:\"Rad Action Pak - Kung-Fu Master, Freeway, Frostbite (1990) (HES) (PAL)\"},\n\t\"247FA1A29AD90E64069EE13D96FEA6D6\":{n:\"Radar (1983) (CCE)\"},\n\t\"74F623833429D35341B7A84BC09793C0\":{n:\"Radar (Zellers)\"},\n\t\"BAF4CE885AA281FD31711DA9B9795485\":{n:\"Radar Lock (1989) (Atari)\"},\n\t\"04856E3006A4F5F7B4638DA71DAD3D88\":{n:\"Radar Lock (1989) (Atari) (PAL)\"},\n\t\"200309C8FBA0F248C13751ED4FC69BAB\":{n:\"Radial Pong - Version 1 (Jeffry Johnston) (PD)\"},\n\t\"0F14C03050B35D6B1D8850B07578722D\":{n:\"Radial Pong - Version 10 (Jeffry Johnston) (PD)\"},\n\t\"43F33C6DFDEAF5138CE6E6968AD7C5CE\":{n:\"Radial Pong - Version 11 (Jeffry Johnston) (PD)\"},\n\t\"32199271DC980EB31A2CC96E10A9E244\":{n:\"Radial Pong - Version 12 (Jeffry Johnston) (PD)\"},\n\t\"6337927AD909AA739D6D0044699A916D\":{n:\"Radial Pong - Version 2 (Jeffry Johnston) (PD)\"},\n\t\"F1E375D921858467166E53BCEC05803F\":{n:\"Radial Pong - Version 3 (Jeffry Johnston) (PD)\"},\n\t\"481F9A742052801CC5F3DEFB41CB638E\":{n:\"Radial Pong - Version 4 (Jeffry Johnston) (PD)\"},\n\t\"FD9B321CEE5FBB32C39BA3CA5D9EC7CF\":{n:\"Radial Pong - Version 5 (Jeffry Johnston) (PD)\"},\n\t\"64B8E19C767191CCDC97ACC6904C397B\":{n:\"Radial Pong - Version 6 (Jeffry Johnston) (PD)\"},\n\t\"2450DFA1DF70D12B60683185775EFED8\":{n:\"Radial Pong - Version 7 (Jeffry Johnston) (PD)\"},\n\t\"9F9EE0F60C119C831E80694B6678CA1A\":{n:\"Radial Pong - Version 8 (Jeffry Johnston) (PD)\"},\n\t\"05824FCBE615DBCA836D061A140A50E0\":{n:\"Radial Pong - Version 9 (Jeffry Johnston) (PD)\"},\n\t\"92A1A605B7AD56D863A56373A866761B\":{n:\"Raft Rider (1982) (U.S. Games)\"},\n\t\"438968A26B7CFE14A499F5BBBBF844DB\":{n:\"Raft Rider (208 in 1) (Unknown) (PAL)\"},\n\t\"1E750000AF77CC76232F4D040F4AB060\":{n:\"Raft Rider (Jone Yuan)\"},\n\t\"025668E36A788E8AF8AC4F1BE7E72043\":{n:\"Raiders of the Lost Ark (06-14-82) (Atari) (Prototype)\"},\n\t\"F724D3DD2471ED4CF5F191DBB724B69F\":{n:\"Raiders of the Lost Ark (1982) (Atari)\"},\n\t\"1CAFA9F3F9A2FCE4AF6E4B85A2BBD254\":{n:\"Raiders of the Lost Ark (1982) (Atari) (PAL)\"},\n\t\"CB96B0CF90AB7777A2F6F05E8AD3F694\":{n:\"Rainbow Invaders\"},\n\t\"8F98519A91DBBF4864F135A10050D9ED\":{n:\"Rainbow Invaders (non-playable demo) (PD)\"},\n\t\"0B577E63B0C64F9779F315DCA8967587\":{n:\"Raketen-Angriff (Ariola) (PAL)\"},\n\t\"7096A198531D3F16A99D518AC0D7519A\":{n:\"Ram It (1982) (Telesys)\"},\n\t\"63E42D576800086488679490A833E097\":{n:\"Ram It (1982) (Telesys) (PAL)\"},\n\t\"F2F2CB35FDEF063C966C1F5481050EA2\":{n:\"Ram It (Unknown) (PAL)\"},\n\t\"9EEB40F04A27EFB1C68BA1D25E606607\":{n:\"Rambo II (2003) (Kyle Pittman) (Hack)\"},\n\t\"2EDA6A49A49FCB2B674EA9E160B6A617\":{n:\"Rambo in Afghanistan (Kyle Pittman) (Hack)\"},\n\t\"5E1B4629426F4992CF3B2905A696E1A7\":{n:\"Rampage! (1989) (Activision)\"},\n\t\"A11099B6EC24E4B00B8795744FB12005\":{n:\"Rampage! (1989) (Activision) (PAL)\"},\n\t\"9F8FAD4BADCD7BE61BBD2BCAEEF3C58F\":{n:\"Reactor (1982) (Parker Bros)\",c:1},\n\t\"4904A2550759B9B4570E886374F9D092\":{n:\"Reactor (1982) (Parker Bros) (PAL)\",c:1},\n\t\"C6DB733E0B108C2580A1D65211F06DBF\":{n:\"RealSports Baseball (07-09-1982) (Atari) (Prototype)\"},\n\t\"EB634650C3912132092B7AEE540BBCE3\":{n:\"RealSports Baseball (1982) (Atari)\",c:1},\n\t\"20D4457BA22517253FCB62967AF11B37\":{n:\"RealSports Baseball (1982) (Atari) (Prototype)\"},\n\t\"8A183B6357987DB5170C5CF9F4A113E5\":{n:\"RealSports Basketball (1983) (Atari) (Prototype) (PAL)\"},\n\t\"5524718A19107A04EC3265C93136A7B5\":{n:\"RealSports Basketball (Thomas Jentzsch)\"},\n\t\"3177CC5C04C1A4080A927DFA4099482B\":{n:\"RealSports Boxing (1987) (Atari)\"},\n\t\"4ABB4C87A4C5F5D0C14EAD2BB36251BE\":{n:\"RealSports Boxing (1987) (Atari) (PAL)\"},\n\t\"7AD257833190BC60277C1CA475057051\":{n:\"RealSports Football (1982) (Atari)\",c:1},\n\t\"277FA4B9A6BB7A8DCEA2C5F38A4C25F0\":{n:\"RealSports Football (1982) (Atari) (Prototype)\",c:1},\n\t\"08F853E8E01E711919E734D85349220D\":{n:\"RealSports Soccer (1983) (Atari)\"},\n\t\"B9336ED6D94A5CC81A16483B0A946A73\":{n:\"RealSports Soccer (1983) (Atari) (PAL)\",c:1},\n\t\"6272F348A9A7F2D500A4006AA93E0D08\":{n:\"RealSports Soccer (1983) (Atari) (PAL) [a]\",c:1},\n\t\"6706A00F9635508CFEDA20639156E66E\":{n:\"RealSports Soccer (1983) (Atari) (Prototype)\"},\n\t\"F7856E324BC56F45B9C8E6FF062EC033\":{n:\"RealSports Soccer (1983) (Atari) [no opening tune]\",c:1},\n\t\"C5DD8399257D8862F3952BE75C23E0EB\":{n:\"RealSports Tennis (1982) (Atari) (Prototype)\"},\n\t\"DAC5C0FE74531F077C105B396874A9F1\":{n:\"RealSports Tennis (1983) (Atari)\"},\n\t\"4E66C8E7C670532569C70D205F615DAD\":{n:\"RealSports Tennis (1983) (Atari) (PAL)\"},\n\t\"13AA1F9AC4249947E4AF61319D9A08F2\":{n:\"RealSports Tennis (1983) (Atari) (PAL) [a1]\"},\n\t\"C7EAB66576696E11E3C11FFFF92E13CC\":{n:\"RealSports Tennis (1983) (Atari) (PAL) [a2]\"},\n\t\"435FD469F088468C4D66BE6B5204D887\":{n:\"RealSports Tennis (1983) (Atari) (PAL) [a]\"},\n\t\"AED0B7BD64CC384F85FDEA33E28DAF3B\":{n:\"RealSports Volleyball (1982) (Atari)\"},\n\t\"4CA0959F846D2BEADA18ECF29EFE137E\":{n:\"RealSports Volleyball (1982) (Atari) (PAL)\"},\n\t\"A8D4A9500B18B0A067A1F272F869E094\":{n:\"Red And White Checkerboard Demo (PD)\"},\n\t\"13DFB095E519A555A5B60B7D9D7169F9\":{n:\"Red Line Demo (PD)\"},\n\t\"874C76726F68C166FCFAC48CE78EEF95\":{n:\"Red Pong Number 2 Demo (PD)\",c:1},\n\t\"79B649FB812C50B4347D12E7DDBB8400\":{n:\"Red Pong Number 2 Demo 2 (PD)\",c:1},\n\t\"DD1422FFD538E2E33B339EBEEF4F259D\":{n:\"Red Vs. Blue (1981) (Atari) (Prototype)\"},\n\t\"EB9F8B84C193D9D93A58FCA112AA39ED\":{n:\"Register Twiddler Demo (PD)\"},\n\t\"7450AE4E10BA8380C55B259D7C2B13E8\":{n:\"Register Twiddler Demo 2 (PD)\"},\n\t\"8A9D874A38608964F33EC0C35CAB618D\":{n:\"Rescue Bira Bira (Chris Cracknell)\",c:1},\n\t\"60A61DA9B2F43DD7E13A5093EC41A53D\":{n:\"Rescue Terra I (1982) (VentureVision)\"},\n\t\"42249EC8043A9A0203DDE0B5BB46D8C4\":{n:\"Resgate Espacial (CCE)\",c:1},\n\t\"5E1CD11A6D41FC15CF4792257400A31E\":{n:\"Return of Mario Bros (Philip R. Frey) (Hack)\"},\n\t\"0B01909BA84512FDAF224D3C3FD0CF8D\":{n:\"Revenge of the Apes (Hack)\"},\n\t\"96BCB3D97CE4FF7586326D183AC338A2\":{n:\"Revenge of the Apes (Hack) [h2]\"},\n\t\"4F64D6D0694D9B7A1ED7B0CB0B83E759\":{n:\"Revenge of the Beefsteak Tomatoes (1982) (20th Century Fox)\"},\n\t\"6468D744BE9984F2A39CA9285443A2B2\":{n:\"Reversi (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"A995B6CBDB1F0433ABC74050808590E6\":{n:\"Riddle of the Sphinx (1982) (Imagic)\"},\n\t\"083E7CAE41A874B2F9B61736C37D2FFE\":{n:\"Riddle of the Sphinx (1982) (Imagic) (PAL)\"},\n\t\"3D2652CBEA462A886A41791DD7C8D073\":{n:\"Ritorno dei frattelli di Mario (Mario Bros Hack)\"},\n\t\"31512CDFADFD82BFB6F196E3B0FD83CD\":{n:\"River Patrol (1984) (Tigervision)\"},\n\t\"393948436D1F4CC3192410BB918F9724\":{n:\"River Raid (1982) (Activision)\",l:\"RIVER RAID\",lc:\"#ececec #833\"},\n\t\"291CC37604BC899E8E065C30153FC4B9\":{n:\"River Raid (1982) (Activision) (16K)\",l:\"RIVER RAID\"},\n\t\"BCCB4E2CFAD5EFC93F6D55DC992118CE\":{n:\"River Raid (1982) (Activision) (8K)\",l:\"RIVER RAID\"},\n\t\"927D422D6335018DA469A9A07CD80390\":{n:\"River Raid (1982) (Activision) (PAL)\",l:\"RIVER RAID\"},\n\t\"33ED6DFAC4B9EA2F81F778CEDDBB4A75\":{n:\"River Raid (1982) (SpkSoft) [t1]\",l:\"RIVER RAID\"},\n\t\"59F596285D174233C84597DEE6F34F1F\":{n:\"River Raid (1983) (CCE)\",l:\"RIVER RAID\"},\n\t\"39D36366AE7E6DFD53393FB9EBAB02A0\":{n:\"River Raid (1983) (CCE) [a]\",l:\"RIVER RAID\"},\n\t\"DA5096000DB5FDAA8D02DB57D9367998\":{n:\"River Raid (1983) (Digitel)\",l:\"RIVER RAID\"},\n\t\"01B09872DCD9556427761F0ED64AA42A\":{n:\"River Raid (1984) (Galaga Games)\",l:\"RIVER RAID\"},\n\t\"FADB89F9B23BEB4D43A7895C532757E2\":{n:\"River Raid (1984) (Galaga Games) (PAL)\",l:\"RIVER RAID\"},\n\t\"8C8B15B3259E60757987ED13CDD74D41\":{n:\"River Raid (1984) (Supergame)\",l:\"RIVER RAID\"},\n\t\"B1C14B5AC896400CC91C8E5DD67ACB59\":{n:\"River Raid (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"A539B9FD1BA57E46442B3E9351E6383B\":{n:\"River Raid (208 in 1) (Unknown) (PAL) (Hack) [a]\"},\n\t\"8C941FA32C7718A10061D8C328909577\":{n:\"River Raid (Digivision)\",l:\"RIVER RAID\"},\n\t\"A94528AE05DD051894E945D4D2349B3B\":{n:\"River Raid (Genus)\",l:\"RIVER RAID\"},\n\t\"CD4423BD9F0763409BAE9111F888F7C2\":{n:\"River Raid (Jone Yuan)\",l:\"RIVER RAID\"},\n\t\"C29D17EEF6B0784DB4586C12CB5FD454\":{n:\"River Raid (Jone Yuan) (Hack)\"},\n\t\"39FE316952134B1277B6A81AF8E05776\":{n:\"River Raid (Robby)\",l:\"RIVER RAID\"},\n\t\"EDF69B123E06EAF8663CC78D8AEBA06E\":{n:\"River Raid (SpkSoft 98) [h1]\",l:\"RIVER RAID\"},\n\t\"DD92D6AD50976F881D86B52D38616118\":{n:\"River Raid (SpkSoft) [h1]\",l:\"RIVER RAID\"},\n\t\"D5E5B3EC074FFF8976017EF121D26129\":{n:\"River Raid (Star Game)\",l:\"RIVER RAID\"},\n\t\"1E89F722494608D6EA15A00D99F81337\":{n:\"River Raid (Unknown) (PAL)\",l:\"RIVER RAID\"},\n\t\"90F502CBF4438A95F69F848CEF36EB64\":{n:\"River Raid II (1985) (Digitel)\"},\n\t\"AB56F1B2542A05BEBC4FBCCFC4803A38\":{n:\"River Raid II (1988) (Activision)\"},\n\t\"B049FC8AC50BE7C2F28418817979C637\":{n:\"River Raid II (1988) (Activision) (PAL)\"},\n\t\"DEB39482E77F984D4CE73BE9FD8ADABD\":{n:\"River Raid II (1988) (Activision) [a]\"},\n\t\"F2D4D6187903CAC2D5EA8ED90DAD120D\":{n:\"River Raid II (Digimax)\"},\n\t\"D5F965C159E26A1FB49A22A47FBD1DD0\":{n:\"River Raid II (Supergame)\"},\n\t\"FBB4F3DEBF48DC961B559384467F2057\":{n:\"River Raid III (1985) (Digitel)\"},\n\t\"4E86866D9CDE738D1630E2E35D7288CE\":{n:\"River Raid III (Supergame)\"},\n\t\"304512528A5530A9361E8A231ED9A6DE\":{n:\"River Raid Plus (Thomas Jentzsch) (Hack)\"},\n\t\"C74BFD02C7F1877BBE712C1DA5C4C194\":{n:\"River Raid Tanks (Thomas Jentzsch) (Hack)\"},\n\t\"322B29E84455AA41E7CC9AF463BFFA89\":{n:\"Road Runner (06-25-1984) (Atari) (Prototype)\"},\n\t\"CE5CC62608BE2CD3ED8ABD844EFB8919\":{n:\"Road Runner (1989) (Atari)\"},\n\t\"C3A9550F6345F4C25B372C42DC865703\":{n:\"Road Runner (1989) (Atari) (PAL)\"},\n\t\"7D3CDDE63B16FA637C4484E716839C94\":{n:\"Road Runner (CCE)\"},\n\t\"0F8043715D66A4BBED394EF801D99862\":{n:\"Robin Hood (1983) (Quelle) (PAL)\"},\n\t\"72A46E0C21F825518B7261C267AB886E\":{n:\"Robin Hood (1983) (Xonox)\"},\n\t\"DD7598B8BCB81590428900F71B720EFB\":{n:\"Robin Hood (1983) (Xonox) (PAL)\"},\n\t\"DB76F7A0819659D9E585F2CDDE9175C7\":{n:\"Robin Hood (1983) (Xonox) (PAL) [a]\"},\n\t\"3E1682DDAEC486D8B6B90B527AAA0FC4\":{n:\"Robot City (V0.12) (TJ)\"},\n\t\"F954381F9E0F2009D1AC40DEDD777B1A\":{n:\"Robot City (V0.18) (01-09-2002) (TJ)\"},\n\t\"97CD63C483FE3C68B7CE939AB8F7A318\":{n:\"Robot City (V0.21) (15-09-2002) (TJ)\"},\n\t\"D82675CE67CAF16AFE5ED6B6FAC8AA37\":{n:\"Robot City (V0.23) (13-11-2002) (TJ)\"},\n\t\"82337E5FE0F418CA9484CA851DFC226A\":{n:\"Robot City (V1.0) (Alpha) (TJ)\"},\n\t\"4251B4557EA6953E88AFB22A3A868724\":{n:\"Robot City (V1.1) (TJ)\"},\n\t\"913D5D959B5021F879033C89797BAB5E\":{n:\"Robot Player Graphic (1996) (J.V. Matthews) (PD)\"},\n\t\"4F618C2429138E0280969193ED6C107E\":{n:\"Robot Tank (1983) (Activision)\"},\n\t\"F687EC4B69611A7F78BD69B8A567937A\":{n:\"Robot Tank (1983) (Activision) (PAL)\"},\n\t\"FBB0151EA2108E33B2DBAAE14A1831DD\":{n:\"Robot Tank TV (Thomas Jentzsch) (Hack)\"},\n\t\"568371FBAE6F5E5B936AF80031CD8888\":{n:\"Robotfindskitten2600 (26-04-2003) (Jeremy Penner)\"},\n\t\"39790A2E9030751D7DB414E13F1B6960\":{n:\"Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a1]\"},\n\t\"D100B11BE34A1E5B7832B1B53F711497\":{n:\"Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a2]\"},\n\t\"0173675D40A8D975763EE493377CA87D\":{n:\"Roc 'n Rope (1984) (CBS Electronics) (PAL)\"},\n\t\"65BD29E8AB1B847309775B0DE6B2E4FE\":{n:\"Roc 'n Rope (1984) (Coleco)\"},\n\t\"D97FD5E6E1DAACD909559A71F189F14B\":{n:\"Rocky & Bullwinkle (04-20-1983) (M Network) (Prototype)\"},\n\t\"A89A3E0547D6887279C34ABA4B17A560\":{n:\"Rocky & Bullwinkle (1983) (Mattel) (Prototype)\"},\n\t\"DB80D8EF9087AF4764236F7B5649FA12\":{n:\"Rocky & Bullwinkle (1983) (Mattel) (Prototype) (4K)\"},\n\t\"2F16663B01591539624D0EF52934A17D\":{n:\"Rocky and Bullwinkle\"},\n\t\"3F96EB711928A6FAC667C04ECD41F59F\":{n:\"Rodeo Champ (4 Game in One Dark Green) (1983) (BitCorp) (PAL)\"},\n\t\"67931B0D37DC99AF250DD06F1C095E8D\":{n:\"Room of Doom (1982) (CommaVid)\",c:1},\n\t\"685E9668DC270B6DEEB9CFBFD4D633C3\":{n:\"Room of Doom (1982) (CommaVid) (PAL)\",c:1},\n\t\"A936D80083E99D48752AD15C2B5F7C96\":{n:\"Room of Doom (208 in 1) (Unknown) (PAL)\",c:1},\n\t\"CBB0EE17C1308148823CC6DA85BFF25C\":{n:\"Rotating Colors Demo 1 (Junkosoft) (PD)\"},\n\t\"C1B038CE5CB6D85E956C5509B0E0D0D8\":{n:\"Rotating Colors Demo 2 (Junkosoft) (PD)\"},\n\t\"1F2AE0C70A04C980C838C2CDC412CF45\":{n:\"Rubik's Cube (1984) (Atari)\"},\n\t\"40B1832177C63EBF81E6C5B61AAFFD3A\":{n:\"Rubik's Cube 3-D (1982) (Atari) (Prototype)\"},\n\t\"B6821AC51C4C1DCB283F01BE2F047DC1\":{n:\"Rubik's Cube 3D Demo (25-11-2002) (TJ)\"},\n\t\"B731D35E4AC6B3B47EBA5DD0991F452F\":{n:\"Rubik's Cube 3D Demo (Final) (08-01-2003) (TJ)\"},\n\t\"6058E40CE79D7434C7F7477B29ABD4A5\":{n:\"Rubik's Cube Demo (23-12-2002) (CT)\"},\n\t\"3A35D7F1DC2A33565C8DCA52BAA86BC4\":{n:\"Rubik's Cube Demo 2 (23-12-2002) (CT)\"},\n\t\"73B4E8F8B04515D91937510E680214BC\":{n:\"Rubik's Cube Demo 3 (24-12-2002) (CT)\"},\n\t\"6847CE70819B74FEBCFD03E99610243B\":{n:\"Ruby Runner 4A50\"},\n\t\"E18ABE87035379C56B435BFE8175077B\":{n:\"Rumble 2600 (Grimlock) (Hack)\"},\n\t\"B9B4612358A0B2C1B4D66BB146767306\":{n:\"Rush Hour (1983) (Commavid) (Prototype)\"},\n\t\"F3CD0F886201D1376F3ABAB2DF53B1B9\":{n:\"Rush Hour (1983) (Commavid) (Prototype)\"},\n\t\"AAD61898633F470CE528E3D7EF3D0ADB\":{n:\"Rush Hour (1983) (Commavid) (Prototype) [a1]\"},\n\t\"EBF2DFF78A08733251BF3838F02F7938\":{n:\"Rush Hour (1983) (Commavid) (Prototype) [a2]\"},\n\t\"3391F7C4C656793F92299F4187E139F7\":{n:\"Rush Hour (1983) (Commavid) (Prototype) [a4]\"},\n\t\"8749A0D088DF25218C149DC325ABC7CA\":{n:\"Rush Hour (1983) (Commavid) (Prototype) [a5]\"},\n\t\"C529E63013698064149B9E0468AFD941\":{n:\"S.I.PLIX 2 (Hack)\",p:1},\n\t\"298387B0637173D2002770A649B4FBCA\":{n:\"S.I.PLIX 2 (Hack) [a]\",p:1},\n\t\"17BA72433DD41383065D4AA6DEDB3D91\":{n:\"SCSIcide (09-06-2001) (Joe Grand)\"},\n\t\"523F5CBB992F121E2D100F0F9965E33F\":{n:\"SCSIcide (1.30) (CGE 2001 Release) (Joe Grand)\",p:1},\n\t\"843435EB360ED72085F7AB9374F9749A\":{n:\"SCSIcide (1.31) (Joe Grand)\",p:1},\n\t\"9EFA877A98DD5A075E058214DA428ABB\":{n:\"SCSIcide (1.32) (Hozer Video Games)\",p:1},\n\t\"FECE458A8023A809A5006867FECA40E8\":{n:\"SCSIcide (24-02-2001) (Joe Grand) (PD)\"},\n\t\"742DE93B8D849220F266B627FBABBA82\":{n:\"SCSIcide (25-02-2001) (Chris Wilkson) (PD)\"},\n\t\"FF87D58125AE517EB7B09A0475A1CCDC\":{n:\"SCSIcide (Score Hack 1) (24-02-2001) (Joe Grand) (PD)\"},\n\t\"E9C5D04643855949A23FF29349AF74EA\":{n:\"SCSIcide (Score Hack 2) (24-02-2001) (Joe Grand) (PD)\"},\n\t\"62921652F6634EB1A0940ED5489C7E18\":{n:\"SCSIcide (V1.09) (2001) (Joe Grand)\",p:1},\n\t\"EAE0C06EE61C63B81CD016096FC901B0\":{n:\"SCSIcide (v1.0) (2001) (Joe Grand)\"},\n\t\"7991E1797E5E9F311FD957E62D889DFF\":{n:\"SCSIcide (v1.1) (2001) (Joe Grand)\",p:1},\n\t\"6538E454B0498AD2BEFE1EF0F87815C0\":{n:\"SCSIcide (v1.2) (2001) (Joe Grand)\",p:1},\n\t\"B1A6C96E9093352106BC335E96CAA154\":{n:\"SCSIcide Pre-release 1 (Joe Grand)\"},\n\t\"07A3AF1E18B63765B6807876366F5E8A\":{n:\"SCSIcide Pre-release 2 (Joe Grand)\"},\n\t\"D483F65468D9A265661917BAE1A54F3E\":{n:\"SCSIcide Pre-release 3 (Joe Grand)\"},\n\t\"34340C8EECD1E557314789CC6477E650\":{n:\"SCSIcide Pre-release 4 (Joe Grand)\"},\n\t\"F34DD3B8156AAF113CB621B2E51D90B8\":{n:\"SCSIcide Pre-release 5 (Joe Grand)\"},\n\t\"A0028F057D496F22B549FD8DEECC6F78\":{n:\"SCSIcide Pre-release 6 (Joe Grand)\"},\n\t\"0AC0D491763153FAC75F5337CE32A9D6\":{n:\"SPAM Image Demo (PD)\"},\n\t\"504688D49A41BF03D8A955512609F3F2\":{n:\"SWOOPS! (TJ)\",p:1},\n\t\"278F14887D601B5E5B620F1870BC09F6\":{n:\"SWOOPS! (v0.96) (TJ)\",p:1},\n\t\"5D8F1AB95362ACDF3426D572A6301BF2\":{n:\"SWOOPS! (v0.96) (TJ) (PAL)\",p:1},\n\t\"88D8A1ACCAB58CF1ABB043613CF185E9\":{n:\"Sabotage (Ultravison)\"},\n\t\"64FAB9D15DF937915B1C392FC119B83B\":{n:\"Saboteur (05-20-1983) (Atari) (Prototype)\"},\n\t\"350E0F7B562EC5E457B3F5AF013648DB\":{n:\"Saboteur (06-09-1983) (Atari) (Prototype)\"},\n\t\"4E01D9072C500331E65BB87C24020D3F\":{n:\"Saboteur (06-15-1983) (Atari) (Prototype)\"},\n\t\"1EC57BBD27BDBD08B60C391C4895C1CF\":{n:\"Saboteur (09-02-1983) (Atari) (Prototype)\"},\n\t\"A4ECB54F877CD94515527B11E698608C\":{n:\"Saboteur (12-20-1983) (Atari) (Prototype)\"},\n\t\"E723AD8F406CB258B89681EF4CEF0EFF\":{n:\"Sadoom (TJ) (PAL) (Hack)\",p:1},\n\t\"81073D0377A2BADEF8D5E74FC44FC323\":{n:\"Sadoom (TJ) (PAL60) (Hack)\",p:1},\n\t\"7AB0917107B6EC768A5EBAADF28C497A\":{n:\"Santa's Helper (Hack)\",p:1},\n\t\"7BB286CB659D146AF3966D699B51F509\":{n:\"Save Mary! (04-03-1989) (Atari) (Prototype)\"},\n\t\"4884B1297500BD1243659E43C7E7579E\":{n:\"Save Mary! (10-24-1991) (Atari) (Prototype) (PAL)\"},\n\t\"4D502D6FB5B992EE0591569144128F99\":{n:\"Save Mary! (11-21-1989) (Atari) (Prototype)\"},\n\t\"01297D9B450455DD716DB9658EFB2FAE\":{n:\"Save Our Ship (1983) (TechnoVision) (PAL)\"},\n\t\"49571B26F46620A85F93448359324C28\":{n:\"Save Our Ship (Unknown)\"},\n\t\"ED1A784875538C7871D035B7A98C2433\":{n:\"Save Our Ship (Unknown) (Hack)\"},\n\t\"E377C3AF4F54A51B85EFE37D4B7029E6\":{n:\"Save the Whales (1983) (20th Century Fox) (Prototype)\"},\n\t\"2516F4F4B811EDE4ECF6FBEB5D54A299\":{n:\"Schiessbude (1983) (Quelle) (PAL)\"},\n\t\"F6F1B27EFC247A0E8D473DDB4269FF9E\":{n:\"Schnapp die Apfeldiebe (1983) (Quelle) (PAL)\"},\n\t\"E040DF95A055B18EBDB094E904CB71B2\":{n:\"Score Demo (B. Watson)\"},\n\t\"EE67DC0B01746372D2B983D88F48E24F\":{n:\"Scroller Demo (02-01-2003) (CT)\"},\n\t\"0F2E09C71CC216F79D22A804152BA24B\":{n:\"Scroller Demo (Bob Colbert) (PD)\",c:1},\n\t\"0D07D2C1BE1A5EAAEA235A533BCDA781\":{n:\"Scrolling Playfield 1 (Junkosoft) (PD)\"},\n\t\"F6C13E816E58C8C62F82B2C8B91A2D67\":{n:\"Scrolling Playfield 2 (Junkosoft) (PD)\"},\n\t\"A6737C81542A99EE71CB5F5FF14703D9\":{n:\"Scrolling Playfield 3 (Junkosoft) (PD)\"},\n\t\"0D786A41695E5FC8CFFD05A6DBB3F659\":{n:\"Scrolling Playfield With Score (10-02-2003) (Aaron Bergstrom)\"},\n\t\"19E761E53E5EC8E9F2FCEEA62715CA06\":{n:\"Scuba Diver (1983) (Panda)\"},\n\t\"1BC2427AC9B032A52FE527C7B26CE22C\":{n:\"Sea Battle (1983) (M Network)\"},\n\t\"624E0A77F9EC67D628211AAF24D8AEA6\":{n:\"Sea Hawk (1983) (Panda)\"},\n\t\"3FD53BFEEE39064C945A769F17815A7F\":{n:\"Sea Hawk (CCE)\"},\n\t\"8FA47E5242776E841DF7E708B12EB998\":{n:\"Sea Hawk (Genesis)\"},\n\t\"07F42847A79E4F5AE55CC03304B18C25\":{n:\"Sea Hawk (Zellers)\"},\n\t\"5DCCF215FDB9BBF5D4A6D0139E5E8BCB\":{n:\"Sea Hunt (1987) (Froggo)\"},\n\t\"D8ACAA980CDA94B65066568DD04D9EB0\":{n:\"Sea Hunt (CCE)\"},\n\t\"68489E60268A5E6E052BAD9C62681635\":{n:\"Sea Monster (1982) (BitCorp) (PAL)\"},\n\t\"DF6A46714960A3E39B57B3C3983801B5\":{n:\"Sea Monster (1982) (Puzzy) (PAL)\"},\n\t\"A4B9423877A0B86CA35B52CA3C994AC5\":{n:\"Sea Monster (1983) (CCE)\"},\n\t\"2124CF92978C46684B6C39CCC2E33713\":{n:\"Sea Monster (Unknown) (PAL)\"},\n\t\"74D072E8A34560C36CACBC57B2462360\":{n:\"Seahawk (1982) (Sancho) (PAL)\"},\n\t\"A8C48B4E0BF35FE97CC84FDD2C507F78\":{n:\"Seamonster (1982) (Puzzy)\"},\n\t\"240BFBAC5163AF4DF5AE713985386F92\":{n:\"Seaquest (1983) (Activision)\"},\n\t\"EBCBC8A181A738E13DF6216E5C329230\":{n:\"Seaquest (1983) (Activision) (16K)\"},\n\t\"026180BF641FF17D8577C33FACF0EDEA\":{n:\"Seaquest (1983) (Activision) (8K)\"},\n\t\"FD0E5148162E8EC6719445D559F018A9\":{n:\"Seaquest (1983) (Activision) (PAL)\"},\n\t\"0B24658714F8DFF110A693A2052CC207\":{n:\"Seaquest (1983) (CCE)\"},\n\t\"79C27F90591E3FDC7D2ED020ECBEDEB3\":{n:\"Seaquest (1983) (CCE) [a]\"},\n\t\"BC33C685E6FFCED83ABE7A43F30DF7F9\":{n:\"Seaquest (1983) (Dynacom)\"},\n\t\"94D90F63678E086F6B6D5E1BC6C4C8C2\":{n:\"Seaquest (Digivision)\"},\n\t\"10AF8728F975AA35A99D0965DE8F714C\":{n:\"Seaquest (Dinatronic)\"},\n\t\"5B6F5BCBBDE42FC77D0BDB3146693565\":{n:\"Seaquest (Unknown) (PAL)\"},\n\t\"40EB4E263581B3DFEC6DD8920B68E00F\":{n:\"Seawolf 3 (03-23-1981) (Sears) (Prototype) (PAL)\"},\n\t\"605FD59BFEF88901C8C4794193A4CBAD\":{n:\"Secret Agent (1983) (Data Age) (Prototype)\",p:1},\n\t\"FC24A94D4371C69BC58F5245ADA43C44\":{n:\"Secret Quest (1989) (Atari)\"},\n\t\"2D2C5F0761E609E3C5228766F446F7F8\":{n:\"Secret Quest (1989) (Atari) (PAL)\"},\n\t\"F3DFAE774F3BD005A026E29894DB40D3\":{n:\"See Saw (Double-Game Package) (1983) (Quelle) (PAL)\"},\n\t\"8DA51E0C4B6B46F7619425119C7D018E\":{n:\"Sentinel (1990) (Atari)\"},\n\t\"55ACE3C775F42EB46F08BB1DCA9114E7\":{n:\"Shadow Keep (04-03-2003) (Andrew Towers)\"},\n\t\"D7DD56677E4EC1E6627419478A4A9668\":{n:\"Shadow Keep (Fixed) (04-03-2003) (Andrew Towers)\"},\n\t\"54F7EFA6428F14B9F610AD0CA757E26C\":{n:\"Shark Attack (1982) (Apollo)\"},\n\t\"5069FECBE4706371F17737B0357CFA68\":{n:\"Shark Attack (1982) (Apollo) (PAL)\"},\n\t\"90B1799DDDB8BF748EE286D22E609480\":{n:\"Ship Demo (PD)\"},\n\t\"1DB3BC4601F22CF43BE7CE015D74F59A\":{n:\"Ship Demo (V 10) (PD)\"},\n\t\"85E48D68C8D802E3BA9D494A47D6E016\":{n:\"Ship Demo (V 15) (PD)\"},\n\t\"A0563DD6D8215C38C488FBBD61435626\":{n:\"Ship Demo (V 1501) (PD)\"},\n\t\"1B1DAAA9AA5CDED3D633BFCBEB06479C\":{n:\"Ship Demo (V 1502) (PD)\"},\n\t\"B5A1A189601A785BDB2F02A424080412\":{n:\"Shootin' Gallery (1982) (Imagic)\"},\n\t\"557E893616648C37A27AAB5A47ACBF10\":{n:\"Shooting Arcade (01-16-1990) (Atari) (Prototype) (PAL)\"},\n\t\"15C11AB6E4502B2010B18366133FC322\":{n:\"Shooting Arcade (09-19-1989) (Atari) (Prototype)\"},\n\t\"25B6DC012CDBA63704EA9535C6987BEB\":{n:\"Shuttle Orbiter (1983) (Avalon Hill)\"},\n\t\"E3C0451D29DAD724231BC5818EC4BAE0\":{n:\"Single-Scanline Positioning Demo 1 (2001) (Roger Williams)\"},\n\t\"4C205F166157154DF2F1EF60D87E552F\":{n:\"Single-Scanline Positioning Demo 2 (2001) (Roger Williams)\"},\n\t\"DE8443FF47283E7B274A7838CB071FB6\":{n:\"Sinistar (01-04-1984) (Atari) (Prototype)\"},\n\t\"3E88CCA5B860D0BD8947479E74C44284\":{n:\"Sinistar (01-23-1984) (Atari) (Prototype)\"},\n\t\"1E85F8BCCB4B866D4DAA9FCF89306474\":{n:\"Sinistar (02-13-1984) (Atari) (Prototype)\"},\n\t\"EA38FCFC06AD87A0AED1A3D1588744E4\":{n:\"Sinistar (1984) (Atari) (Prototype)\"},\n\t\"4C8970F6C294A0A54C9C45E5E8445F93\":{n:\"Sir Lancelot (1983) (Xonox)\"},\n\t\"DD0CBE5351551A538414FB9E37FC56E8\":{n:\"Sir Lancelot (1983) (Xonox) (PAL)\"},\n\t\"7EAD257E8B5A44CAC538F5F54C7A0023\":{n:\"Sir Lancelot (1983) (Xonox) [a1]\"},\n\t\"8490E1014C2BAA0D3A3A08854E5D68B3\":{n:\"Sir Lancelot (1983) (Xonox) [a2]\"},\n\t\"F847FB8DBA6C6D66D13724DBE5D95C4D\":{n:\"Skate Boardin' (1987) (Absolute)\"},\n\t\"ABE40542E4FF2D1C51AA2BB033F09984\":{n:\"Skate Boardin' (1987) (Absolute) (PAL)\"},\n\t\"7F9FBE3E00A21EA06E6AE5E0E5DB2143\":{n:\"Skate Boardin' (2002) (Skyworks)\"},\n\t\"39C78D682516D79130B379FA9DEB8D1C\":{n:\"Skeet Shoot (1981) (Apollo)\"},\n\t\"5F2B4C155949F01C06507FB32369D42A\":{n:\"Skeet Shoot (1981) (Apollo) (4K)\"},\n\t\"0832FB2EE654BF9382BC57D2B16D2FFC\":{n:\"Skeet Shoot (1981) (Apollo) (PAL)\"},\n\t\"4189ADFC1B30C121248876E3A1A3AC7E\":{n:\"Skeleton (Complete) (06-09-2002) (Eric Ball)\"},\n\t\"40E12C008037A323A1290C8FA4D2FE7F\":{n:\"Skeleton (NTSC) (06-09-2002) (Eric Ball)\"},\n\t\"647162CCEB550FD49820E2206D9EE7E8\":{n:\"Skeleton (NTSC) (2002) (Eric Ball)\"},\n\t\"8E42674972D6805068FC653E014370FD\":{n:\"Skeleton (PAL) (15-10-2002) (Eric Ball)\"},\n\t\"C033DC1D7B6FDE41B9CADCE9638909BB\":{n:\"Skeleton (V1.1) (06-09-2002) (Eric Ball)\"},\n\t\"28A4CD87FB9DE4EE91693A38611CB53C\":{n:\"Skeleton (V1.1) (NTSC) (24-10-2002) (Eric Ball)\"},\n\t\"8E887D1BA5F3A71AE8A0EA16A4AF9FC9\":{n:\"Skeleton (V1.1) (PAL) (24-10-2002) (Eric Ball)\"},\n\t\"F20BD756F3990E06C492F53CD0168E68\":{n:\"Skeleton+ (03-05-2003) (Eric Ball) (NTSC)\"},\n\t\"22B22C4CE240303012E8A9596AE8D189\":{n:\"Skeleton+ (03-05-2003) (Eric Ball) (PAL)\"},\n\t\"CFEF1A2D1F6A5EE7A5E1F43F3056F112\":{n:\"Skeleton+ (05-05-2003) (Eric Ball) (NTSC)\"},\n\t\"75B22FDF632D76E246433DB1EBCCD3C4\":{n:\"Skeleton+ (05-05-2003) (Eric Ball) (PAL)\"},\n\t\"F98D869F287D2CE4F8FB36E0686929D9\":{n:\"Skeleton+ (17-04-2003) (Eric Ball) (NTSC)\"},\n\t\"43F8459D39FB4EDDF9186D62722FF795\":{n:\"Skeleton+ (17-04-2003) (Eric Ball) (PAL)\"},\n\t\"EAFE8B40313A65792E88FF9F2FE2655C\":{n:\"Skeleton+ (NTSC)\"},\n\t\"63C7395D412A3CD095CCDD9B5711F387\":{n:\"Skeleton+ (PAL)\"},\n\t\"8654D7F0FB351960016E06646F639B02\":{n:\"Ski Hunt (1983) (Home Vision) (PAL)\"},\n\t\"F10E3F45FB01416C87E5835AB270B53A\":{n:\"Ski Run (Ariola) (PAL)\"},\n\t\"5305F69FBF772FAC4760CDCF87F1AB1F\":{n:\"Ski Run (Jone Yuan)\"},\n\t\"B76FBADC8FFB1F83E2CA08B6FB4D6C9F\":{n:\"Skiing (1980) (Activision)\"},\n\t\"0D90A0EE73D55539B7DEF24C88CAA651\":{n:\"Skiing (1980) (Activision) (16K)\"},\n\t\"60BBD425CB7214DDB9F9A31948E91ECB\":{n:\"Skiing (1980) (Activision) (4K)\"},\n\t\"7623A639A6FFFDB246775FE2EABC8D01\":{n:\"Skiing (1980) (Activision) (8K)\"},\n\t\"EEC61CC4250DF70939D48FE02D7122AC\":{n:\"Skiing (1980) (Activision) (PAL)\"},\n\t\"E1F88DA6DA8A7D521CA1DCBF2BC6978B\":{n:\"Skiing (1980) (Activision) (PAL) (4K)\"},\n\t\"0E4B2B6E014A93EF8BE896823DA0D4EC\":{n:\"Skiing (208 in 1) (Unknown) (PAL)\"},\n\t\"367411B78119299234772C08DF10E134\":{n:\"Skiing (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"40B59249E05135BCA33861E383735E9E\":{n:\"Skiing (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"40D9F5709877ECF3DD1184F9791DD35E\":{n:\"Skiing (Dactari - Milmar)\"},\n\t\"7ED61A18CEBDECA0A93BE1F5461731E5\":{n:\"Skiing (Dactari) (4K)\"},\n\t\"C118854D670289A8B5D5156AA74B0C49\":{n:\"Skiing (Jone Yuan)\"},\n\t\"13584411DA0A8D431991035423FDC0DC\":{n:\"Skiing (Jone Yuan) (4K)\"},\n\t\"340F546D59E72FB358C49AC2CA8482BB\":{n:\"Skindiver (1983) (Sancho) (PAL)\"},\n\t\"C31A17942D162B80962CB1F7571CD1D5\":{n:\"Sky Alien (1983) (Home Vision) (PAL)\"},\n\t\"BC97D544F1D4834CC72BCC92A37B8C1B\":{n:\"Sky Demo (PD)\"},\n\t\"46C021A3E9E2FD00919CA3DD1A6B76D8\":{n:\"Sky Diver (1979) (Atari)\"},\n\t\"3D8A2D6493123A53ADE45E3E2C5CAFA0\":{n:\"Sky Diver (1979) (Atari) (4K)\"},\n\t\"756CA07A65A4FBBEDEB5F0DDFC04D0BE\":{n:\"Sky Diver (1979) (Atari) (PAL)\"},\n\t\"5EF303B9F0AA8CF20720C560E5F9BAA1\":{n:\"Sky Diver (1979) (Atari) (PAL) (4K)\"},\n\t\"3F75A5DA3E40D486B21DFC1C8517ADC0\":{n:\"Sky Diver (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"F1FE06EBE2900EAC4CDD17799389A102\":{n:\"Sky Diver (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"B23EBF427713DD0198B7EF47DBD07EF4\":{n:\"Sky Diver (Jone Yuan) (4K) (Hack)\"},\n\t\"5A81AD4E184050851E63C8E16E3DAC77\":{n:\"Sky Diver (Jone Yuan) (Hack)\"},\n\t\"37252757A79DC5B174E3C03D6EA0BDCB\":{n:\"Sky Diver (Unknown) (PAL) (4K) (Hack)\"},\n\t\"8190B403D67BF9792FE22FA5D22F3556\":{n:\"Sky Diver (Unknown) (PAL) (Hack)\"},\n\t\"2A0BA55E56E7A596146FA729ACF0E109\":{n:\"Sky Jinks (1982) (Activision)\"},\n\t\"05AFF8F626EF870432AE3B3D9D5AA301\":{n:\"Sky Jinks (1982) (Activision) (16K)\"},\n\t\"8BD8F65377023BDB7C5FCF46DDDA5D31\":{n:\"Sky Jinks (1982) (Activision) (4K)\"},\n\t\"A4790224BD5AFABD53CBE93E46A7F241\":{n:\"Sky Jinks (1982) (Activision) (8K)\"},\n\t\"50A410A5DED0FC9AA6576BE45A04F215\":{n:\"Sky Jinks (1982) (Activision) (PAL)\"},\n\t\"502168660BFD9C1D2649D415DC89C69D\":{n:\"Sky Jinks (1982) (Activision) (PAL) (4K)\"},\n\t\"93DC15D15E77A7B23162467F95A5F22D\":{n:\"Sky Jinks (CCE)\"},\n\t\"8764462D7D19A33B0717AF22B99FC88F\":{n:\"Sky Jinks (CCE) (4K)\"},\n\t\"E1B90F1E01B1A316D7BBF141525CC00E\":{n:\"Sky Jinks (Unknown) (PAL) (4K) (Hack)\"},\n\t\"F992A39B46AA48188FAB12AD3809AE4A\":{n:\"Sky Jinks (Unknown) (PAL) (Hack)\"},\n\t\"4C9307DE724C36FD487AF6C99CA078F2\":{n:\"Sky Patrol (1982) (Imagic) (Prototype)\"},\n\t\"3B91C347D8E6427EDBE942A7A405290D\":{n:\"Sky Skipper (1983) (Parker Bros)\"},\n\t\"514F911ECFF2BE5EEFF2F39C49A9725C\":{n:\"Sky Skipper (1983) (Parker Bros) (PAL)\"},\n\t\"1AA7344B563C597EECFBFCF8E7093C27\":{n:\"Slot Invaders (David Marli) (Hack)\"},\n\t\"F90B5DA189F24D7E1A2117D8C8ABC952\":{n:\"Slot Machine (1979) (Atari)\"},\n\t\"81254EBCE88FA46C4FF5A2F4D2BAD538\":{n:\"Slot Machine (1979) (Atari) (4K)\"},\n\t\"705FE719179E65B0AF328644F3A04900\":{n:\"Slot Machine (1979) (Atari) (4K) [a]\"},\n\t\"FC6052438F339AEA373BBC999433388A\":{n:\"Slot Machine (1979) (Atari) (PAL)\"},\n\t\"75EA128BA96AC6DB8EDF54B071027C4E\":{n:\"Slot Machine (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"1E272D09C0E55F5EF14FCB76A735F6D7\":{n:\"Slot Machine (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"DBDD21E1EE3D72119E8CD14D943C585B\":{n:\"Slot Machine (Unknown) (PAL) (4K)\"},\n\t\"AED82052F7589DF05A3F417BB4E45F0C\":{n:\"Slot Racers (1978) (Atari)\"},\n\t\"5F708CA39627697E859D1C53F8D8D7D2\":{n:\"Slot Racers (1978) (Atari) (4K)\"},\n\t\"A7ED7DC5CBC901388AFA59030FB11D26\":{n:\"Slot Racers (1978) (Atari) (PAL)\"},\n\t\"7A64A8B727C8215D945E37D565CA95A5\":{n:\"Slot Racers (1978) (Atari) (PAL) (4K)\"},\n\t\"D1D704A7146E95709B57B6D4CAC3F788\":{n:\"Slot Racers (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"F6D512BEF1BF253DC935D0E13C3D1462\":{n:\"Slot Racers (Unknown) (PAL) (4K)\"},\n\t\"92D1F6AC179EBE5963868D6BC1BDDA8D\":{n:\"Smash Hit Pak - Frogger, Boxing, Seaquest, Skiing, Stampede (HES) (PAL)\"},\n\t\"73C545DB2AFD5783D37C46004E4024C2\":{n:\"Smurf (1982) (CBS Electronics) (PAL)\"},\n\t\"24AFF972D58990F9B88A6D787C796F1E\":{n:\"Smurf (1982) (CBS Electronics) (PAL) [a]\"},\n\t\"3D1E83AFDB4265FA2FB84819C9CFD39C\":{n:\"Smurf - Rescue in Gargamel's Castle (1982) (Coleco)\"},\n\t\"A204CD4FB1944C86E800120706512A64\":{n:\"Smurfs Save the Day (1983) (Coleco)\"},\n\t\"898B5467551D32AF48A604802407B6E8\":{n:\"Snail Against Squirrel (1983) (BitCorp) (PAL)\"},\n\t\"AC26D7D37248D1D8EAC5ECCACDBEF8DB\":{n:\"Snail Against Squirrel (Unknown) (PAL)\"},\n\t\"9C6FAA4FF7F2AE549BBCB14F582B70E4\":{n:\"Sneak 'n Peek (1982) (U.S. Games)\"},\n\t\"F21813AA050437F0DBC8479864ACEC6D\":{n:\"Sneak 'n Peek (Unknown) (PAL)\"},\n\t\"C54B4207CE1D4BF72FADBB1A805D4A39\":{n:\"Sniper (Feb 30) (2001) (Prototype)\"},\n\t\"01293BD90A4579ABB7AED2F7D440681F\":{n:\"Snoopy (1983) (Century) (PAL)\"},\n\t\"45A095645696A217E416E4BD2BAEA723\":{n:\"Snoopy (Digivision)\"},\n\t\"0F39FC03D579D0D93A6B729A3746843E\":{n:\"Snoopy and the Red Baron (05-27-1983) (Atari) (Prototype)\"},\n\t\"57939B326DF86B74CA6404F64F89FCE9\":{n:\"Snoopy and the Red Baron (1983) (Atari)\"},\n\t\"F844F4C6F3BAAAF5322657442D6F29EB\":{n:\"Snoopy and the Red Baron (1983) (Atari) (PAL)\"},\n\t\"BDA1463E02AE3A6E1107FFE1B572EFD2\":{n:\"Snoopy and the Red Baron (1983) (Atari) (PAL) [a]\"},\n\t\"C5D2834BF98E90245E545573EB7E6BBC\":{n:\"Snoopy and the Red Baron (CCE)\"},\n\t\"D2DEDDB77C8B823E4BE9C57CB3C69ADC\":{n:\"Snoopy and the Red Baron (Canal 3)\"},\n\t\"75028162BFC4CC8E74B04E320F9E6A3F\":{n:\"Snow White and the Seven Dwarfs (02-09-1983) (Atari) (Prototype)\"},\n\t\"75EE371CCFC4F43E7D9B8F24E1266B55\":{n:\"Snow White and the Seven Dwarfs (11-09-1982) (Atari) (Prototype)\"},\n\t\"3F6DBF448F25E2BD06DEA44248EB122D\":{n:\"Soccer (1989) (Telegames)\"},\n\t\"604E09724555807C28108049EFE34A13\":{n:\"Sokoban (01-01-2003) (Adam Wozniak)\"},\n\t\"B4DAEDB43511521DB9036D503B3C1B69\":{n:\"Sokoban (01-01-2003) (Adam Wozniak) [a1]\"},\n\t\"947317A89AF38A49C4864D6BDD6A91FB\":{n:\"Solar Fox (1983) (CBS Electronics)\"},\n\t\"E03B0B091BEA5BC9D3F14EE0221E714D\":{n:\"Solar Fox (1983) (CBS Electronics) (PAL)\"},\n\t\"DF753CB87D3AF4D03F694AB848638108\":{n:\"Solar Fox (1983) (CBS Electronics) (PAL) [a]\"},\n\t\"97842FE847E8EB71263D6F92F7E122BD\":{n:\"Solar Storm (1983) (Imagic)\",p:1},\n\t\"E6DE4EF9AB62E2196962AA6B0DEDAC59\":{n:\"Solar Storm (1983) (Imagic) (PAL)\",p:1},\n\t\"E72EB8D4410152BDCB69E7FBA327B420\":{n:\"Solaris (1986) (Atari)\"},\n\t\"BC4CF38A4BEE45752DC466C98ED7AD09\":{n:\"Solaris (1986) (Atari) (PAL)\"},\n\t\"0ADB21206DE92E8AEC5EF295805EBB90\":{n:\"Solaris (Genesis)\"},\n\t\"F19ABA18F86E415812480AD2BE221425\":{n:\"Solaris Trainer (2002) (Chris Larkin) (Hack)\"},\n\t\"2DFEC1615C49501FEFC02165C81955E6\":{n:\"Song (05-11-2002) (Paul Slocum)\",c:1},\n\t\"CAD982C9B45BC5EFF34E4EA982D5F1CA\":{n:\"Song (17-02-2003) (Paul Slocum)\",c:1},\n\t\"D2C4F8A4A98A905A9DEEF3BA7380ED64\":{n:\"Sorcerer (1983) (Mythicon)\"},\n\t\"5F7AE9A7F8D79A3B37E8FC841F65643A\":{n:\"Sorcerer's Apprentice (1983) (Atari)\"},\n\t\"2E82A1628EF6C735C0AB8FA92927E9B0\":{n:\"Sorcerer's Apprentice (1983) (Atari) (PAL)\"},\n\t\"27C4C2AF4B46394BB98638AF8E0F6E9D\":{n:\"Sorcerer's Apprentice (1983) (Atari) (Prototype)\"},\n\t\"101AB60F4000A5D13792EF0ABAD5F74B\":{n:\"Sorcerer's Apprentice (1983) (Atari) [a]\"},\n\t\"F78C125B5DA483C41E51522947D6C4CE\":{n:\"Sound Paddle V1 (Dennis Caswell & Jim Nitchals) (PD)\",p:1},\n\t\"EEE7695AE3EEA7818321DF0B790B31F3\":{n:\"Sound Paddle V2 (Dennis Caswell & Jim Nitchals) (PD)\",p:1},\n\t\"32F4E47A71601AB06CFB59E1C6A0B846\":{n:\"Sound X (1994) (Ed Federmeyer)\"},\n\t\"7DBC8FA2E488E3F6B87FBE0F76C5B89F\":{n:\"Sound X (1996) (Ed Federmeyer)\"},\n\t\"310BA30E25EA8957E58180B663503C0C\":{n:\"Sound X6 (1994) (Ed Federmeyer)\"},\n\t\"24B9ADAC1B4F85B0BAC9BF9B9E180906\":{n:\"Space 2002 (Angelino) (Hack)\"},\n\t\"17BADBB3F54D1FC01EE68726882F26A6\":{n:\"Space Attack (1982) (M Network)\"},\n\t\"ABB741C83F665D73C86D90A7D9292A9B\":{n:\"Space Attack (1989) (Telegames) (PAL)\"},\n\t\"F047DF70D3D08E331122CD2DE61D6AF8\":{n:\"Space Battle (NTSC)\"},\n\t\"CC12581E079CD18330A89902625B8347\":{n:\"Space Battle (PAL)\"},\n\t\"559317712F989F097EA464517F1A8318\":{n:\"Space Canyon (1983) (Panda)\"},\n\t\"DF6A28A89600AFFE36D94394EF597214\":{n:\"Space Cavern (1981) (Apollo)\"},\n\t\"D9548AD44E67EDEC202D1B8B325E5ADF\":{n:\"Space Cavern (1981) (Apollo) (PAL)\"},\n\t\"7AC4F4FB425DB38288FA07FB8FF4B21D\":{n:\"Space Eagle (1983) (Goliath) (PAL)\"},\n\t\"0D27C7F5DB349B592F70F68DAF5E8F3B\":{n:\"Space Instigators (21-10-2002) (CT)\"},\n\t\"B2A6F31636B699AEDA900F07152BAB6E\":{n:\"Space Instigators (Public Release 2) (06-01-2003) (CT)\"},\n\t\"18BEBBBD41C234F82B1717B1905E6027\":{n:\"Space Instigators (Public Release) (02-01-2003) (CT)\"},\n\t\"CDA38714267978B9A8B0B24BEE3529AE\":{n:\"Space Instigators (V1.6) (17-10-2002) (CT)\"},\n\t\"98E6E34AF45A0664597972C3BB31180F\":{n:\"Space Instigators (V1.7) (17-10-2002) (CT)\"},\n\t\"52BAE1726D2D7A531C9CA81E25377FC3\":{n:\"Space Instigators (V1.8 Fixed) (20-10-2002) (CT)\"},\n\t\"CFEE10BD7119F10B136921CED2EE8972\":{n:\"Space Instigators (V1.8) (19-10-2002) (CT)\"},\n\t\"E927ECF80F3784D745ABD8368D78F2F3\":{n:\"Space Instigators (V1.8) (19-10-2002) (CT) [a1]\"},\n\t\"DD10B5EE37FDBF909423F2998A1F3179\":{n:\"Space Instigators (V1.9) (21-10-2002) (CT)\"},\n\t\"E10BF1AF6BF3B4A253C5BEF6577FE923\":{n:\"Space Invaders (1978) (Atari) [h1]\"},\n\t\"07F91E33E76F53BB9D2731FD5D8A35A5\":{n:\"Space Invaders (1978) (Atari) [t1]\"},\n\t\"72FFBEF6504B75E69EE1045AF9075F66\":{n:\"Space Invaders (1980) (Atari)\"},\n\t\"F1B7EDFF81CEEF5AF7AE1FA76C8590FC\":{n:\"Space Invaders (1980) (Atari) (PAL)\"},\n\t\"8747BA79CD39FA83A529BB26010DB21B\":{n:\"Space Invaders (1980) (Atari) (PAL) [different speed and colors]\"},\n\t\"7CC77F6745E1F2B20DF4A4327D350545\":{n:\"Space Invaders (1980) (Atari) (PAL) [fixed]\"},\n\t\"61DBE94F110F30CA4EC524AE5CE2D026\":{n:\"Space Invaders (1983) (CCE)\"},\n\t\"C126656DF6BADFA519CC63E681FB3596\":{n:\"Space Invaders (2002) (Ron Corcoran) (Hack)\"},\n\t\"2EF36341D1BF42E02C7EA2F71E024982\":{n:\"Space Invaders (Explosion Hack)\"},\n\t\"270229C6D5578446E6A588492E4E5910\":{n:\"Space Invaders 2 (Hack)\"},\n\t\"0963AA9F7F6CF5A36FF700001583624E\":{n:\"Space Invaders 2 (Hack) [o1]\"},\n\t\"2CFB188C1091CC7EC2A7E60064D2A758\":{n:\"Space Invaders Hack Demo (2003) (SnailSoft)\"},\n\t\"6F2AAFFAAF53D23A28BF6677B86AC0E3\":{n:\"Space Jockey (1982) (U.S. Games)\"},\n\t\"D1A9478B99D6A55E13A9FD4262DA7CD4\":{n:\"Space Jockey (1982) (U.S. Games) (4K)\"},\n\t\"457E7D4FCD56EBC47F5925DBEA3EE427\":{n:\"Space Jockey (1983) (Carrere Video) (PAL)\"},\n\t\"EE9CAEE4EB958284FB10C277B14537F1\":{n:\"Space Jockey (1983) (Carrere Video) (PAL) (4K)\"},\n\t\"E1D79E4E7C150F3861256C541EC715A1\":{n:\"Space Jockey (208 in 1) (Unknown) (PAL)\"},\n\t\"822A950F27FF0122870558A89A49CAD3\":{n:\"Space Jockey (Unknown) (PAL)\"},\n\t\"C689148AD9275667924AB334107B517E\":{n:\"Space Raid (Jone Yuan)\"},\n\t\"690A6049DB78B9400C13521646708E9C\":{n:\"Space Raid (King Tripod) (PAL)\"},\n\t\"345769D085113D57937198262AF52298\":{n:\"Space Raid (Rainbow Vision) (PAL)\"},\n\t\"1A624E236526C4C8F31175E9C89B2A22\":{n:\"Space Raid (Rainbow Vision) (PAL) [a]\"},\n\t\"1BEF389E3DD2D4CA4F2F60D42C932509\":{n:\"Space Robot (1983) (Dimax - Sinmax) (PAL)\",c:1},\n\t\"3DFB7C1803F937FADC652A3E95FF7DC6\":{n:\"Space Robot (Dimax - Sinmax)\",c:1},\n\t\"82E7AAB602C378CFFDD8186A099E807E\":{n:\"Space Robot (Unknown)\"},\n\t\"C4D888BCF532E7C9C5FDEAFBB145266A\":{n:\"Space Robot (Unknown) (PAL)\",c:1},\n\t\"5894C9C0C1E7E29F3AB86C6D3F673361\":{n:\"Space Shuttle (1983) (Activision)\"},\n\t\"4F6702C3BA6E0EE2E2868D054B00C064\":{n:\"Space Shuttle (1983) (Activision) (PAL)\"},\n\t\"898143773824663EFE88D0A3A0BB1BA4\":{n:\"Space Shuttle (1983) (Activision) [FE]\"},\n\t\"FF5A9E340D96DF6F5A5B6EB038E923BD\":{n:\"Space Shuttle (1983) (Activision) [t1]\"},\n\t\"A8D0A4A77CD71AC601BD71DF5A060E4C\":{n:\"Space Shuttle (1983) (Activision) [t2] (Fuel)\"},\n\t\"D97E3D0B4575CE0B9A6132E19CFEAC6E\":{n:\"Space Treat (061002) (PD)\"},\n\t\"2683D29A282DD059535AC3BB250F540D\":{n:\"Space Treat (12-01-2003) (Fabrizio Zavagli)\"},\n\t\"DED26E1CB17F875A9C17515C900F9933\":{n:\"Space Treat (29-12-2002) (Fabrizio Zavagli)\"},\n\t\"3367EEBA3269AA04720ABE6169767502\":{n:\"Space Treat (30-12-2002) (Fabrizio Zavagli)\"},\n\t\"75B557BE7F08DB84EC5B242207B9F241\":{n:\"Space Treat (30-12-2002) (Fabrizio Zavagli) [a1]\"},\n\t\"E74022CFE31EC8908844718DFBDEDF7A\":{n:\"Space Treat (30-12-2002) (Fabrizio Zavagli) [a2]\"},\n\t\"D49AFF83F77A1B9041AD7185DF3C2277\":{n:\"Space Treat (60% complete) (PD)\"},\n\t\"6C9A32AD83BCFDE3774536E52BE1CCE7\":{n:\"Space Treat (NTSC) (13-08-2002) (Fabrizio Zavagli)\"},\n\t\"B0C47E426C7F799AEE2C40422DF8F56A\":{n:\"Space Treat (PAL) (Fabrizio Zavagli)\"},\n\t\"DFAFA3FA58F5CC3F0342CCA475DF6095\":{n:\"Space Treat (V1.1 Beta) (24-12-2002) (Fabrizio Zavagli)\"},\n\t\"562ACB1B7FF182ABA133BDA8E21AD7C1\":{n:\"Space Treat Deluxe (08-03-2003) (Fabrizio Zavagli)\"},\n\t\"DF2745D585238780101DF812D00B49F4\":{n:\"Space Tunnel (1982) (BitCorp)\"},\n\t\"C5387FC1AA71F11D2FA82459E189A5F0\":{n:\"Space Tunnel (1982) (BitCorp) (PAL)\"},\n\t\"8917F7C1AC5EB05B82331CF01C495AF2\":{n:\"Space Tunnel (1982) (BitCorp) (PAL) [a]\"},\n\t\"BE3F0E827E2F748819DAC2A22D6AC823\":{n:\"Space Tunnel (1982) (Puzzy)\"},\n\t\"D73AD614F1C2357997C88F37E75B18FE\":{n:\"Space Tunnel (1982) (Puzzy) (PAL)\"},\n\t\"7FCD5FB59E88FC7B8473C641F44226C3\":{n:\"Space Tunnel (1983) (CCE)\"},\n\t\"A7EF44CCB5B9000CAF02DF3E6DA71A92\":{n:\"Space War (1978) (Atari)\"},\n\t\"7E9DA5CB84D5BC869854938FE3E85FFA\":{n:\"Space War (1978) (Atari) (4K)\"},\n\t\"F9677B2EC8728A703EB710274474613D\":{n:\"Space War (1978) (Atari) (PAL)\"},\n\t\"0519F395D5F7D76BE813B834AA51C0BE\":{n:\"Space War (1978) (Atari) (PAL) (4K)\"},\n\t\"77887E4192A6B0A781530E6CF9BE7199\":{n:\"Space War (1978) (Atari) [b1]\"},\n\t\"E505BD8E59E31AAED20718D47B15C61B\":{n:\"Space War (1982) (Funvision) (PAL)\"},\n\t\"63D6247F35902BA32AA49E7660B0ECAA\":{n:\"Space War (208 in 1) (Unknown) (PAL)\"},\n\t\"B702641D698C60BCDC922DBD8C9DD49C\":{n:\"Space War (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"8F60551DB6D1535EF0030F155018C738\":{n:\"Space War (Unknown) (PAL) (4K)\"},\n\t\"45040679D72B101189C298A864A5B5BA\":{n:\"SpaceMaster X-7 (1983) (20th Century Fox)\"},\n\t\"E14FEDDEB82F5160ED5CF9CA4078E58D\":{n:\"SpaceMaster X-7 (208 in 1) (Unknown) (PAL)\"},\n\t\"EC5C861B487A5075876AB01155E74C6C\":{n:\"Spacechase (1981) (Apollo)\"},\n\t\"89EABA47A59CBFD26E74AAD32F553CD7\":{n:\"Spacechase (1981) (Apollo) (PAL)\"},\n\t\"FAFFD84F3A8ECEEE2FA5EA5B0A3E6678\":{n:\"Spectracube Invasion (Suntek) (PAL)\"},\n\t\"F3F92AAD3A335F0A1EAD24A0214FF446\":{n:\"Spectrum Color Demo (PD)\"},\n\t\"327FE8CF94F3A45C35A840A453DF1235\":{n:\"Spice Girls Rule Demo (PD)\"},\n\t\"A8A703E073183A89C94D4D99B9661B7F\":{n:\"Spice Invaders (Franklin Cruz) (Hack)\"},\n\t\"24D018C4A6DE7E5BD19A36F2B879B335\":{n:\"Spider Fighter (1982) (Activision)\"},\n\t\"8786F229B974C393222874F73A9F3206\":{n:\"Spider Fighter (1982) (Activision) (PAL)\"},\n\t\"BA3A17EFD26DB8B4F09C0CF7AFDF84D1\":{n:\"Spider Fighter (1983) (Activision) (16K)\"},\n\t\"D25018349C544320BF3FD5092EE072BC\":{n:\"Spider Fighter (1983) (Activision) (8K)\"},\n\t\"0FC161704C46E16F7483F92B06C1558D\":{n:\"Spider Fighter (1983) (CCE)\"},\n\t\"C41E7735F6701DD50E84EE71D3ED1D8F\":{n:\"Spider Fighter (1983) (Dynacom)\"},\n\t\"92E72F7CC569584C44C9530D645AE04E\":{n:\"Spider Fighter (Canal 3)\"},\n\t\"B40DEA357D41C5408546E4E4D5F27779\":{n:\"Spider Fighter (Digivision)\"},\n\t\"7778AC65D775A079F537E97CBDAD541C\":{n:\"Spider Fighter (Unknown) (PAL)\"},\n\t\"F14D5E96EC3380AEF57A4B70132C6677\":{n:\"Spider Kong (1983) (Goliath) (PAL) [a]\"},\n\t\"672012D40336B403EDEA4A98CE70C76D\":{n:\"Spider Kong (208 in 1) (Unknown) (PAL)\"},\n\t\"AE465044DFBA287D344BA468820995D7\":{n:\"Spider Kong (Unknown) (PAL)\"},\n\t\"21299C8C3AC1D54F8289D88702A738FD\":{n:\"Spider Maze (1982) (K-Tel Vision)\"},\n\t\"37B98344C8E0746C486CAF5AAEEC892A\":{n:\"Spider Maze (1982) (K-Tel Vision) (PAL)\"},\n\t\"D39E29B03AF3C28641084DD1528AAE05\":{n:\"Spider Monster (1982) (Funvision) (PAL)\"},\n\t\"199EB0B8DCE1408F3F7D46411B715CA9\":{n:\"Spider-Man (1982) (Parker Bros)\"},\n\t\"E77EC259E1387BC308B0534647A89198\":{n:\"Spider-Man (1982) (Parker Bros) (PAL)\"},\n\t\"8454ED9787C9D8211748CCDDB673E920\":{n:\"Spiderdroid (1987) (Froggo)\"},\n\t\"F7AF41A87533524D9A478575B0D873D0\":{n:\"Spiderman (1983) (Quelle) (PAL)\"},\n\t\"A4E885726AF9D97B12BB5A36792EAB63\":{n:\"Spike's Peak (1983) (Xonox)\"},\n\t\"B37F0FE822B92CA8F5E330BF62D56EA9\":{n:\"Spike's Peak (1983) (Xonox) (PAL)\"},\n\t\"9BB136B62521C67AC893213E01DD338F\":{n:\"Spike's Peak (1983) (Xonox) (PAL) [a]\"},\n\t\"542C6DD5F7280179B51917A4CBA4FAFF\":{n:\"Spinning Fireball (1983) (ZiMAG) (Prototype)\"},\n\t\"D3171407C3A8BB401A3A62EB578F48FB\":{n:\"Spinning Fireball (1983) (ZiMAG) (Prototype) [a]\",c:1},\n\t\"98555B95CB38E0E0B22B482B2B60A5B6\":{n:\"Spinning Fireball (Unknown) (PAL)\",c:1},\n\t\"CEF2287D5FD80216B2200FB2EF1ADFA8\":{n:\"Spitfire Attack (1983) (Milton Bradley)\"},\n\t\"FFEBB0070689B9D322687EDD9C0A2BAE\":{n:\"Spitfire Attack (1983) (Milton Bradley) [h1]\"},\n\t\"FB91DA78455D9B1606913FBF8C859772\":{n:\"Split Screen (Ballblazer) Demo (PD)\"},\n\t\"A4D026A5C200EF98518EBB77719FE8DC\":{n:\"SpongeBob SquarePants (2003) (Kyle Pittman) (Hack)\"},\n\t\"2C3B2843295C9D6B16996971180A3FE9\":{n:\"Sports Action Pak - Enduro, Ice Hockey, Fishing Derby, Dragster (1988) (HES) (PAL)\"},\n\t\"4CD796B5911ED3F1062E805A3DF33D98\":{n:\"Springer (1982) (Tigervision)\"},\n\t\"133456269A03E3FDAE6CDDD65754C50D\":{n:\"Springer (1982) (Tigervision) (PAL)\"},\n\t\"5A8AFE5422ABBFB0A342FB15AFD7415F\":{n:\"Sprint Master (1988) (Atari)\"},\n\t\"B2D5D200F0AF8485413FAD957828582A\":{n:\"Sprint Master (1988) (Atari) (PAL)\"},\n\t\"6B75F8FA4FD011A6698C58315F83D2AC\":{n:\"Sprintmaster DC (TJ)\"},\n\t\"D597D35C6022C590D6E75E865738558A\":{n:\"Sprite Color Demo (PD)\"},\n\t\"F1B2EA568B3E156E3F2849DAC83591F6\":{n:\"Sprite Demo (1997) (Bob Colbert) (PD)\"},\n\t\"E15B5525CF8F77297B322838DF8D999C\":{n:\"Sprite Demo 0 (PD)\"},\n\t\"D5C6B81212AD86FD9542A1FEDAF57CAE\":{n:\"Sprite Demo 1 (PD)\"},\n\t\"FE0BC4BB92C1C4DE7D5706AAA8D8C10D\":{n:\"Sprite Demo 2 (PD)\"},\n\t\"DBABB80E92FF18D8EECF615C0539151E\":{n:\"Sprite Demo 3 (PD)\"},\n\t\"61728C6CFB052E62A9ED088C5BF407BA\":{n:\"Sprite Demo 4 (PD)\"},\n\t\"AD7E97C19BD25D5AA3999430845C755B\":{n:\"Sprite Demo 5 (PD)\"},\n\t\"ACAA27D214039D89D7031609AAFA55C3\":{n:\"Sprite Demo 6 (PD)\"},\n\t\"2D6DA0EB85EABC93270E5BB8A466CA51\":{n:\"Sprite Demo 7 (PD)\"},\n\t\"DFE034297200DFF672DF9533ED1449A9\":{n:\"Sprite Movement Demo 1 (2001) (Roger Williams)\"},\n\t\"D4C590CCFB611A73B3331359700C01A3\":{n:\"Sprite Movement Demo 2 (2001) (Roger Williams)\"},\n\t\"37AB3AFFC7987995784B59FCD3FCBD31\":{n:\"Sprite Test (29-11-2002) (Eric Ball)\"},\n\t\"3105967F7222CC36A5AC6E5F6E89A0B4\":{n:\"Spy Hunter (1984) (Sega)\"},\n\t\"6A8C6940D3BE6FD01274363C4D4B298E\":{n:\"Spy Hunter (Genesis)\"},\n\t\"2A360BC85BF22DE438651CF92FFDA1DE\":{n:\"Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)\"},\n\t\"BA257438F8A78862A9E014D831143690\":{n:\"Squeeze Box (1982) (U.S. Games)\"},\n\t\"68878250E106EB6C7754BC2519D780A0\":{n:\"Squirrel (1983) (CCE)\"},\n\t\"34C808AD6577DBFA46169B73171585A3\":{n:\"Squoosh (1983) (Apollo) (Prototype)\"},\n\t\"22ABBDCB094D014388D529352ABE9B4B\":{n:\"Squoosh (1983) (Apollo) (Prototype) [a]\"},\n\t\"21A96301BB0DF27FDE2E7EEFA49E0397\":{n:\"Sssnake (1982) (Data Age)\"},\n\t\"B3203E383B435F7E43F9492893C7469F\":{n:\"Sssnake (1983) (Gameworld) (PAL)\"},\n\t\"21D7334E406C2407E69DBDDD7CEC3583\":{n:\"Stampede (1981) (Activision)\"},\n\t\"9057694DCE8449521E6164D263702185\":{n:\"Stampede (1981) (Activision) (16K)\"},\n\t\"E66E5AF5DEA661D58420088368E4EF0D\":{n:\"Stampede (1981) (Activision) (4K)\"},\n\t\"53F147B9746FDC997C62F3DD67888EE5\":{n:\"Stampede (1981) (Activision) (8K)\"},\n\t\"75511BB694662301C9E71DF645F4B5A7\":{n:\"Stampede (1981) (Activision) (PAL)\"},\n\t\"F52F40299FD238C6FFD9E6107050DC76\":{n:\"Stampede (1981) (Activision) (PAL) (4K)\"},\n\t\"C9196E28367E46F8A55E04C27743148F\":{n:\"Stampede (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"F20675C8B98518367B9F5B8EE6F7C8EA\":{n:\"Stampede (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"F77F5FC3893DA5D00198E4CD96544AAD\":{n:\"Stampede (Canal 3)\"},\n\t\"866E5150C995C4AE5172E5207BA948C7\":{n:\"Stampede (Canal 3) (16K)\"},\n\t\"43ADF60EBDD6B5A0FAE21594ECF17154\":{n:\"Stampede (Jone Yuan)\"},\n\t\"D170317AE4C7D997A989C7D6567C2840\":{n:\"Stampede (Jone Yuan) (4K) (Hack)\"},\n\t\"1EA1ABCD2D3D3D628F59A99A9D41B13B\":{n:\"Stampede (Jone Yuan) (Hack)\"},\n\t\"869ABE0426E6E9FCB6D75A3C2D6E05D1\":{n:\"Stampede (Unknown) (PAL)\"},\n\t\"0945081A6BD00345FF3D58EB7A07330A\":{n:\"Stampede (Unknown) (PAL) (4K)\"},\n\t\"A8916734FF8C64EC3342F4C73FD5B57D\":{n:\"Stand Alone Test Cart (1982) (Atari) [a]\"},\n\t\"D9C9CECE2E769C7985494B1403A25721\":{n:\"Star Castle 2600 (SolidCorp)\",c:1},\n\t\"54BAFC299423F5A50B8BC3A797914706\":{n:\"Star Castle 2600 (SolidCorp) (PAL)\",c:1},\n\t\"CE8467AE2A3A5BC88CA72A2CE44CE28C\":{n:\"Star Castle 2600 (SolidCorp) (PAL) [015]\",c:1},\n\t\"DD0DE0F61AF2A2A4878E377B880A3933\":{n:\"Star Castle 2600 (SolidCorp) [013]\",c:1},\n\t\"C0589BB73858924389077FA3C2E9441A\":{n:\"Star Castle 2600 (SolidCorp) [014]\",c:1},\n\t\"39B94D41BD3B01C12B4054C1A8733783\":{n:\"Star Castle 2600 (SolidCorp) [016]\",c:1},\n\t\"2AEEDCC6EB1602EFB77161B0CEF832AB\":{n:\"Star Castle 2600 (SolidCorp) [025]\",c:1},\n\t\"1EF04E7E508296A8D9EB61CC7DAE2E5D\":{n:\"Star Castle 2600 (SolidCorp) [069]\",c:1},\n\t\"6E4521989A60A0DDF4FF1FC6E6E5FC3D\":{n:\"Star Fire (01-05-2002) (MP)\"},\n\t\"A443D8557D712845C8CD3699363A42E6\":{n:\"Star Fire (07-01-2003) (MP)\"},\n\t\"1E1817D9CBCC3BA75043B7DB4E6C228F\":{n:\"Star Fire (07-10-2002) (MP)\"},\n\t\"DBA2692A216CB6C262C78F8B111A813E\":{n:\"Star Fire (08-10-2002) (MP)\"},\n\t\"47BB1C677FE7BA5F376372AE7358E790\":{n:\"Star Fire (10-10-2002) (MP)\"},\n\t\"43E6C5159C3A093FCA88656628C6EF34\":{n:\"Star Fire (17-02-2003) (MP)\"},\n\t\"6F75D72E4CF996100CCDD163D57BDAC2\":{n:\"Star Fire (200203) (MP)\"},\n\t\"18760F1F9CA5E18610115CF7B815B824\":{n:\"Star Fire (23-10-2002) (MP)\"},\n\t\"539B7038ACEC0CCEDEAE40F238998579\":{n:\"Star Fire (25-10-2002) (MP)\"},\n\t\"16FBB36A6124567405A235821E8F69EE\":{n:\"Star Fire (28-11-2002) (MP)\"},\n\t\"C473B222B7C5308D0773326416094272\":{n:\"Star Fire (28-11-2002) (MP) [a1]\"},\n\t\"BC6432CBED32C695658514C4EB41D905\":{n:\"Star Fire (MP) (2002) (PD)\"},\n\t\"BF5E2079586CB307BF5EB2413E2E61AF\":{n:\"Star Fire - 1LK Intro (13-11-2002) (TJ)\"},\n\t\"0890A5B089191F45D0F08DD1E3235687\":{n:\"Star Fire - 4K Version (25-10-2002) (MP)\"},\n\t\"D2C305A443DFC49E8430964D7C1BD1B7\":{n:\"Star Fire - Advice on radar needed (16-10-2002) (MP)\"},\n\t\"09D19274C20768F842E8FAE84B766ABE\":{n:\"Star Fire - Animated Patricles (06-10-2002) (MP)\"},\n\t\"BF9DDC5DD9056633D4AC0DAC8B871DFE\":{n:\"Star Fire - Cockpit View (10-10-2002) (MP)\"},\n\t\"EC26FDC87B1D35F1D60EA89CDA4F4DD4\":{n:\"Star Fire - Crash Scene (04-11-2002) (MP)\"},\n\t\"BFCABC6995EF42D0B6C06786993DC4D6\":{n:\"Star Fire - Creating a Universe (09-09-2002) (MP)\"},\n\t\"86F5E55CA9A9BDE7338A157570828E79\":{n:\"Star Fire - Creating a Universe (09-09-2002) (MP) [a1]\"},\n\t\"11CF751BC8173DB105EABD119C5844BA\":{n:\"Star Fire - Crosshair (12-02-2002) (MP)\"},\n\t\"06953ED762220DBA63D63930D4AD0CC3\":{n:\"Star Fire - Eckhard WIP (MP)\"},\n\t\"40D7CCD460C9B1198238AF6CEEA1737D\":{n:\"Star Fire - Enemy Mine (2002) (MP)\"},\n\t\"D79DF06894E3C1585A47C2807332B319\":{n:\"Star Fire - Explosions! (10-10-2002) (MP)\"},\n\t\"5E2928F089490017E88E9F9E5A881A25\":{n:\"Star Fire - Faster Skipping 1 (24-10-2002) (MP)\"},\n\t\"44560E324FFB30741A483218BA5B4342\":{n:\"Star Fire - Faster Skipping 2 (24-10-2002) (MP)\"},\n\t\"562BF02F5031D51C6B53B03972A56B22\":{n:\"Star Fire - Framework Done (30-10-2002) (MP)\"},\n\t\"DC6AA0BB21A6E66E80E75BA5EDC5C0DD\":{n:\"Star Fire - Kernel Done (MP)\"},\n\t\"9E6FA031ECE07919C816FBA5DC8DE43E\":{n:\"Star Fire - Meteor Dance (13-11-2002) (MP)\"},\n\t\"BB9F06B288B5275BC0D38B6731B2526A\":{n:\"Star Fire - Meteor Dance 2 (18-11-2002) (MP)\"},\n\t\"551EF75593EC18D078E8F5CC0229E1C4\":{n:\"Star Fire - New Paulstar WIP (MP)\"},\n\t\"74CA9BDC91EE387A5BD929B73AEC5C2C\":{n:\"Star Fire - New Shields (03-04-2003) (MP)\"},\n\t\"A23FFC86804240CE77134A1C91926685\":{n:\"Star Fire - Paulstar WIP (MP)\"},\n\t\"C6CEDB25B7D390B580EA8EDB614B168B\":{n:\"Star Fire - Radar Completed (22-10-2002) (MP)\"},\n\t\"5F69453A69F21DC49697A80D2E933491\":{n:\"Star Fire - Reduced Flickering (06-10-2002) (MP)\"},\n\t\"2E2885E68FA1045871CE1382B68F6EFC\":{n:\"Star Fire - Return of the Crosshair (MP)\"},\n\t\"DA64F33D0521D5C9958E5D2D4434FF95\":{n:\"Star Fire - Return of the Starfield (MP)\"},\n\t\"92EDE72ED8F61D255BC58D2F166DC6B6\":{n:\"Star Fire - Shootable (26-09-2002) (MP)\"},\n\t\"ED9999911B406DC5F75C850DCC17BDF4\":{n:\"Star Fire - Shootable (Friendlier Collision Detection) (26-09-2002) (MP)\"},\n\t\"92C5ABB7A8BB1C3FC66C92BA353A3D21\":{n:\"Star Fire - Sorting Fixed (MP)\"},\n\t\"103D4C890C2108CB536372C98D093E5F\":{n:\"Star Fire - Star Background (MP)\"},\n\t\"7F73AC39E5E3E13E40FD8AD885561A0F\":{n:\"Star Fire - Warping Star (13-04-2003) (MP)\"},\n\t\"FBD6102E17A5C02C6E1911381B7203F9\":{n:\"Star Fire - Warping!! (10-04-2003) (MP)\"},\n\t\"BB07F917611CDE42B7D83746EE27147D\":{n:\"Star Fire - Warping!! (13-04-2003) (MP)\"},\n\t\"F526D0C519F5001ADB1FC7948BFBB3CE\":{n:\"Star Fox (1983) (Mythicon)\"},\n\t\"C541A5F6FC23B40A211196DD78233780\":{n:\"Star Raiders (1981) (Atari) (Prototype)\"},\n\t\"CBD981A23C592FB9AB979223BB368CD5\":{n:\"Star Raiders (1982) (Atari)\"},\n\t\"C1A83F44137EA914B495FC6AC036C493\":{n:\"Star Raiders (1982) (Atari) (PAL)\"},\n\t\"E363E467F605537F3777AD33E74E113A\":{n:\"Star Ship (1977) (Atari)\"},\n\t\"7B938C7DDF18E8362949B62C7EAA660A\":{n:\"Star Ship (1977) (Atari) (4K)\"},\n\t\"79E5338DBFA6B64008BB0D72A3179D3C\":{n:\"Star Strike (1983) (M Network)\"},\n\t\"405F8591B6941CFF56C9B392C2D5E4E5\":{n:\"Star Strike (1989) (Telegames) (PAL)\"},\n\t\"AB8D318DA4ADDD39C65B7F9C408DF2A6\":{n:\"Star Trek (Genesis)\",c:1},\n\t\"03C3F7BA4585E349DD12BFA7B34B7729\":{n:\"Star Trek - Strategic Operations Simulator (1983) (Sega)\",c:1},\n\t\"30F0B49661CFCFD4EC63395FAB837DC3\":{n:\"Star Trek - Strategic Operations Simulator (1983) (Sega) (PAL)\",c:1},\n\t\"813985A940AA739CC28DF19E0EDD4722\":{n:\"Star Voyager (1982) (Imagic)\"},\n\t\"0ACEB7C3BD13FE048B77A1928ED4267D\":{n:\"Star Voyager (1982) (Imagic) (PAL)\"},\n\t\"D912312349D90E9D41A9DB0D5CD3DB70\":{n:\"Star Voyager (1983) (CCE)\"},\n\t\"2E7E9C6DCFCCEAFFC6FA73F0D08A402A\":{n:\"Star Voyager (1983) (CCE) [a]\"},\n\t\"9D33D31FB1DE58C5460D8A67B57B36DA\":{n:\"Star Voyager (Genesis)\"},\n\t\"5336F86F6B982CC925532F2E80AA1E17\":{n:\"Star Wars - Death Star Battle (1983) (Parker Bros)\",c:1},\n\t\"CB9B2E9806A7FBAB3D819CFE15F0F05A\":{n:\"Star Wars - Death Star Battle (1983) (Parker Bros) (PAL)\"},\n\t\"D44D90E7C389165F5034B5844077777F\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype)\"},\n\t\"2E2ACEF8513EDCCA991E7E5149412E11\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (16K)\"},\n\t\"6DFAD2DD2C7C16AC0FA257B6CE0BE2F0\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL)\"},\n\t\"9D7F04618BB4043F531D087E3AAA7AC8\":{n:\"Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL) (16K)\"},\n\t\"C246E05B52F68AB2E9AEE40F278CD158\":{n:\"Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype)\"},\n\t\"C9F6E521A49A2D15DAC56B6DDB3FB4C7\":{n:\"Star Wars - Jedi Arena (1983) (Parker Bros)\",p:1},\n\t\"05B45BA09C05BEFA75AC70476829EDA0\":{n:\"Star Wars - Jedi Arena (1983) (Parker Bros) (PAL)\",p:1},\n\t\"F4B8A47A95B61895E671C3EC86FFD461\":{n:\"Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype)\",c:1},\n\t\"6651E2791D38EDC02C5A5FD7B47A1627\":{n:\"Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K)\",c:1},\n\t\"E8A3473BF786CF796D1336D2D03A0008\":{n:\"Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype)\",c:1},\n\t\"1E1290EA102E12D7AC52820961457E2B\":{n:\"Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype)\",c:1},\n\t\"AE2F1F69BB38355395C1C75C81ACC644\":{n:\"Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype)\",c:1},\n\t\"6339D28C9A7F92054E70029EB0375837\":{n:\"Star Wars - The Arcade Game (1984) (Parker Bros)\",c:1},\n\t\"6CF054CD23A02E09298D2C6F787EB21D\":{n:\"Star Wars - The Arcade Game (1984) (Parker Bros) (PAL)\",c:1},\n\t\"FFC0FF4305DD46B4B459885BD1818E2E\":{n:\"Star Wars - The Battle of Alderaan (Star Strike Hack)\"},\n\t\"3C8E57A246742FA5D59E517134C0B4E6\":{n:\"Star Wars - The Empire Strikes Back (1982) (Parker Bros)\"},\n\t\"BE060A704803446C02E6F039AB12EB91\":{n:\"Star Wars - The Empire Strikes Back (1982) (Parker Bros) (PAL)\"},\n\t\"D69559F9C9DC6EF528D841BF9D91B275\":{n:\"StarMaster (1982) (Activision)\"},\n\t\"73C839AFF6A055643044D2CE16B3AAF7\":{n:\"StarMaster (1982) (Activision) (PAL)\"},\n\t\"348615FFA30FAB3CEC1441B5A76E9460\":{n:\"StarMaster (1982) (Activision) (PAL) [fixed]\"},\n\t\"D62D7D1A974C31C5803F96A8C1552510\":{n:\"StarMaster (Unknown) (PAL)\"},\n\t\"1542662F665D2FFAA77B4B897DD2E2AF\":{n:\"Starfield (V1.0) (2002) (MP)\"},\n\t\"91D1C82CEAF8AF2ADD3973A3C34BC0CB\":{n:\"Starfield Demo 1 (20-12-2002) (CT)\"},\n\t\"68FEB6D6FF63E80DF1302D8547979AEC\":{n:\"Starfield Demo 2 (20-12-2002) (CT)\"},\n\t\"0C48E820301251FBB6BCDC89BD3555D9\":{n:\"Stargate (1984) (Atari)\"},\n\t\"493DE059B32F84AB29CDE6213964AEEE\":{n:\"Stargate (1984) (Atari) (PAL)\"},\n\t\"A3C1C70024D7AABB41381ADBFB6D3B25\":{n:\"Stargunner (1982) (Telesys)\"},\n\t\"E5BACF526036D3C8C99DB5B030CF00E7\":{n:\"Starmaster (Genesis)\"},\n\t\"C5BAB953AC13DBB2CBA03CD0684FB125\":{n:\"Stay Frosty (SpiceWare)\",c:1},\n\t\"1FA86282403FA35D103AB88A9D603C31\":{n:\"Stay Frosty (SpiceWare) (PAL60)\",c:1},\n\t\"1619BC27632F9148D8480CD813AA74C3\":{n:\"Steeple Chase (Thomas Jentzsch)\",c:1},\n\t\"F75872946E82AD74D48EAE5BC28F5F0E\":{n:\"Steeplechase (04-15-1980) (Sears) (Prototype)\",p:1},\n\t\"656DC247DB2871766DFFD978C71DA80C\":{n:\"Steeplechase (1980) (Sears)\",p:1},\n\t\"A174CECE06B3ABC0AEC3516913CDF9CC\":{n:\"Steeplechase (1980) (Sears) (4K)\",p:1},\n\t\"F1EEECCC4BBA6999345A2575AE96508E\":{n:\"Steeplechase (1983) (Video Gems) (PAL)\",c:1},\n\t\"3CDD91E1C28D28E856C0063D602DA166\":{n:\"Stell-A-Sketch (03-11-1997) (Bob Colbert) (PD)\",c:1},\n\t\"47AEF18509051BAB493589CB2619170B\":{n:\"Stell-A-Sketch (Bob Colbert) (PD)\",c:1},\n\t\"18ED63E3CE5BC3DD2D8BD188B807F1A2\":{n:\"Stell-A-Sketch (Bob Colbert) (PD) [a1]\",c:1},\n\t\"0B8D3002D8F744A753BA434A4D39249A\":{n:\"Stellar Track (1980) (Sears)\",c:1},\n\t\"23FAD5A125BCD4463701C8AD8A0043A9\":{n:\"Stone Age (1983) (CCE)\"},\n\t\"B17B9CC4103844DCDA54F77F44ACC93A\":{n:\"Stopp die Gangster (1983) (Quelle) (PAL)\"},\n\t\"F240BA9F8092D2E8A4C7D82C554BF509\":{n:\"Strahlen der Teufelsvoegel (1983) (Quelle) (PAL)\"},\n\t\"807A8FF6216B00D52ABA2DFEA5D8D860\":{n:\"Strat-O-Gems Deluxe (2005) (J. Payson)\"},\n\t\"EF76EA05655A0B62CB1018C92B9B4B7D\":{n:\"Strategy X (1983) (Gakken) (PAL)\"},\n\t\"9333172E3C4992ECF548D3AC1F2553EB\":{n:\"Strategy X (1983) (Konami)\"},\n\t\"E10D2C785AADB42C06390FAE0D92F282\":{n:\"Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros)\"},\n\t\"516FFD008057A1D78D007C851E6EFF37\":{n:\"Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros) (PAL)\"},\n\t\"8A6C84F481ACF42ABCB78BA5064AD755\":{n:\"Street Racer (128-in-1 Junior Console) (PAL) (4K)\",p:1},\n\t\"396F7BC90AB4FA4975F8C74ABE4E81F0\":{n:\"Street Racer (1977) (Atari)\",p:1},\n\t\"6FF4156D10B357F61F09820D03C0F852\":{n:\"Street Racer (1977) (Atari) (4K)\",p:1},\n\t\"E12E32DEE68201B6765FCD0ED54D6646\":{n:\"Street Racer (1977) (Atari) (PAL)\",p:1},\n\t\"7B3CF0256E1FA0FDC538CAF3D5D86337\":{n:\"Stronghold (1983) (CommaVid)\"},\n\t\"C3BBC673ACF2701B5275E85D9372FACF\":{n:\"Stunt Cycle (07-21-1980) (Atari) (Prototype)\"},\n\t\"D7759FA91902EDD93F1568A37DC70CDB\":{n:\"Stunt Cycle (1980) (Atari) (Prototype) (4K)\"},\n\t\"ED0AB909CF7B30AFF6FC28C3A4660B8E\":{n:\"Stunt Man (1983) (Panda)\"},\n\t\"5AF9CD346266A1F2515E1FBC86F5186A\":{n:\"Sub-Scan (1982) (Sega)\"},\n\t\"B095009004DF341386D22B2A3FAE3C81\":{n:\"Sub-Scan (Unknown) (PAL)\"},\n\t\"F3F5F72BFDD67F3D0E45D097E11B8091\":{n:\"Submarine Commander (1982) (Sears)\"},\n\t\"93C52141D3C4E1B5574D072F1AFDE6CD\":{n:\"Subterranea (1983) (Imagic)\"},\n\t\"38DE7B68379770B9BD3F7BF000136EB0\":{n:\"Subterranea (1983) (Imagic) (PAL)\"},\n\t\"D8E4C8E2D210270CD1E0F6D1B4582B91\":{n:\"Subterranea (1983) (Imagic) (PAL) [a]\"},\n\t\"4AB4AF3ADCDAE8CDACC3D06084FC8D6A\":{n:\"Sucky Zepplin (Nick Bensema) (PD)\"},\n\t\"CFF578E5C60DE8CAECBEE7F2C9BBB57B\":{n:\"Suicide Adventure (George Veeder) (Hack)\"},\n\t\"E4C666CA0C36928B95B13D33474DBB44\":{n:\"Suicide Mission (1982) (Arcadia)\",c:1},\n\t\"EB92193F06B645DF0B2A15D077CE435F\":{n:\"Suicide Mission (1982) (Arcadia) (PAL)\",c:1},\n\t\"CD98BE8A48EBF610C9609A688B9C57F2\":{n:\"Suicide Mission (1982) (Arcadia) (Prototype)\",c:1},\n\t\"753375D183C713CFA0AA7298D1F3067B\":{n:\"Suicide Mission (1982) (Arcadia) [a]\",c:1},\n\t\"463DD4770506E6C0EF993A40C52C47BE\":{n:\"Suicide Mission (Preview) (1982) (Arcadia)\",c:1},\n\t\"B4F05E544834D0238A0C263491775EDF\":{n:\"Suicide Mission (Preview) (1982) (Arcadia) (PAL)\",c:1},\n\t\"45027DDE2BE5BDD0CAB522B80632717D\":{n:\"Summer Games (1987) (Epyx)\"},\n\t\"12BCA8305D5AB8EA51FE1CFD95D7AB0E\":{n:\"Summer Games (1987) (Epyx) (PAL)\"},\n\t\"4F2D47792A06DA224BA996C489A87939\":{n:\"Super Action Pak - Pitfall, Barnstorming, Grand Prix, Laser Blast (1988) (HES) (PAL)\"},\n\t\"7ADBCF78399B19596671EDBFFC3D34AA\":{n:\"Super Baseball (1988) (Atari)\"},\n\t\"0751F342EE4CF28F2C9A6E8467C901BE\":{n:\"Super Baseball (1988) (Atari) (PAL)\"},\n\t\"FAED2EF6B44894F8C83F2B50891C35C6\":{n:\"Super Baseball (CCE)\"},\n\t\"1C85C0FC480BBD69DC301591B6ECB422\":{n:\"Super Box (CCE)\"},\n\t\"8885D0CE11C5B40C3A8A8D9ED28CEFEF\":{n:\"Super Breakout (1982 - 1981) (Atari)\",p:1},\n\t\"EE4C186123D31A279ED7A84D3578DF23\":{n:\"Super Breakout (1982 - 1981) (Atari) (PAL)\",p:1},\n\t\"0AD9A358E361256B94F3FB4F2FA5A3B1\":{n:\"Super Breakout (1982 - 1981) (Atari) [a]\",p:1},\n\t\"9D37A1BE4A6E898026414B8FEE2FC826\":{n:\"Super Challenge Baseball (1982) (M Network)\"},\n\t\"DAB844DEED4C752632B5E786B0F47999\":{n:\"Super Challenge Baseball (208 in 1) (Unknown) (PAL)\"},\n\t\"1D6ED6FE9DFBDE32708E8353548CBB80\":{n:\"Super Challenge Baseball (Jone Yuan)\"},\n\t\"E275CBE7D4E11E62C3BFCFB38FCA3D49\":{n:\"Super Challenge Football (1982) (M Network)\"},\n\t\"FEBA8686FD0376015258D1152923958A\":{n:\"Super Circus (Unknown) (PAL)\"},\n\t\"C29F8DB680990CB45EF7FEF6AB57A2C2\":{n:\"Super Cobra (1982) (Parker Bros)\"},\n\t\"D326DB524D93FA2897AB69C42D6FB698\":{n:\"Super Cobra (1982) (Parker Bros) (PAL)\"},\n\t\"5F7DE62A408B9DE3A1168898298FD31D\":{n:\"Super Cobra (Genesis)\"},\n\t\"C7900A7FE95A47EEF3B325072AD2C232\":{n:\"Super Congo Bongo (2003) (Larry Petit) (Hack)\"},\n\t\"638CC82EA96F67674595BA9AE05DA6C6\":{n:\"Super Ferrari (Rainbow Vision) (PAL)\"},\n\t\"09ABFE9A312CE7C9F661582FDF12EAB6\":{n:\"Super Football (1988) (Atari)\"},\n\t\"262CCB882FF617D9B4B51F24AEE02CBE\":{n:\"Super Football (1988) (Atari) (PAL)\"},\n\t\"2447E17A4E18E6B609DE498FE4AB52BA\":{n:\"Super Futebol (CCE)\",c:1},\n\t\"2F0A8BB4E18839F9B1DCAA2F5D02FD1D\":{n:\"Super Futebol (CCE) [a]\",c:1},\n\t\"C08D0CEE43077D3055FEBB00E5745C1D\":{n:\"Super Hit Pak - River Raid, Sky Jinks, Grand Prix, Fishing Derby, Checkers (HES) (PAL)\"},\n\t\"08D1B6D75206EDB999252CAF542A2C7F\":{n:\"Super Home Run (2003) (Larry Petit) (Hack)\"},\n\t\"645BF7F9146F0E4811FF9C7898F5CD93\":{n:\"Super Kung-Fu (1983) (Xonox) (PAL)\"},\n\t\"3B2C32FCD331664D037952BCAA62DF94\":{n:\"Super Kung-Fu (1983) (Xonox) (PAL) [a]\"},\n\t\"0E7E73421606873B544E858C59DC283E\":{n:\"Super Soccer (Digivision)\",c:1},\n\t\"3E7D10D0A911AFC4B492D06C99863E65\":{n:\"Super Tenis (VGS)\"},\n\t\"53B66F11F67C3B53B2995E0E02017BD7\":{n:\"Super Tennis (1983) (CCE)\"},\n\t\"517923E655755086A3B72C0B17B430E6\":{n:\"Super Tennis (Tron)\"},\n\t\"CBC373FBCB1653B4C56BFABBA33EA50D\":{n:\"Super Voleyball (CCE)\"},\n\t\"BDECC81F740200780DB04A107C3A1EBA\":{n:\"Super-Cowboy beim Rodeo (1983) (Quelle) (PAL)\"},\n\t\"CC2973680C150886CCE1ED8693C3ACA2\":{n:\"Super-Cowboy beim Rodeo (1983) (Quelle) (PAL) (4K)\"},\n\t\"2B27EB194E13F3B38D23C879CC1E3ABF\":{n:\"Super-Ferrari (1983) (Quelle) (PAL)\"},\n\t\"85502D69FE46B7F54EF2598225678B47\":{n:\"Super-Ferrari (Jone Yuan)\"},\n\t\"724613EFFAF7743CBCD695FAB469C2A8\":{n:\"Super-Ferrari (Unknown)\"},\n\t\"4565C1A7ABCE773E53C75B35414ADEFD\":{n:\"Supercharger BIOS (1982) (Arcadia)\"},\n\t\"A9531C763077464307086EC9A1FD057D\":{n:\"Superman (1979) (Atari)\"},\n\t\"3619786F6A32EFC1E4A262D5ACA8A070\":{n:\"Superman (1979) (Atari) (8K)\"},\n\t\"DBB10B904242FCFB8428F372E00C01AF\":{n:\"Superman (1979) (Atari) (PAL)\"},\n\t\"FD10915633AEA4F9CD8B518A25D62B55\":{n:\"Superman (1979) (Atari) (PAL) [a]\"},\n\t\"5DE8803A59C36725888346FDC6E7429D\":{n:\"Superman (1979) (Atari) [fixed]\"},\n\t\"149B543C917C180A1B02D33C12415206\":{n:\"Superman (1983) (CCE)\"},\n\t\"CCB807EB79B0ED0F5FDC460445EF703A\":{n:\"Superman (Stunt_Cycle_Rules!) (Hack)\"},\n\t\"6FAC680FC9A72E0E54255567C72AFE34\":{n:\"Superman (Unknown) (PAL)\"},\n\t\"169D4C7BD3A4D09E184A3B993823D048\":{n:\"Superman (Unknown) (PAL) [a]\"},\n\t\"AEC9B885D0E8B24E871925630884095C\":{n:\"Surf's Up (1983) (Amiga) (Prototype)\"},\n\t\"A2170318A8EF4B50A1B1D38567C220D6\":{n:\"Surf's Up (1983) (Amiga) (Prototype) [a]\"},\n\t\"C20F15282A1AA8724D70C117E5C9709E\":{n:\"Surfer's Paradise (1983) (Video Gems) (PAL)\"},\n\t\"59B70658F9DD0E2075770B07BE1A35CF\":{n:\"Surfer's Paradise (Thomas Jentzsch)\"},\n\t\"4D7517AE69F95CFBC053BE01312B7DBA\":{n:\"Surround (1977) (Atari)\"},\n\t\"31D08CB465965F80D3541A57EC82C625\":{n:\"Surround (1977) (Atari) (4K)\"},\n\t\"52A0003EFB3B1C49FCDE4DBC2C685D8F\":{n:\"Surround (1977) (Atari) (4K) [a]\"},\n\t\"C370C3268AD95B3266D6E36FF23D1F0C\":{n:\"Surround (1977) (Atari) (PAL)\"},\n\t\"A60598AD7EE9C5CCAD42D5B0DF1570A1\":{n:\"Surround (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"5C86E938E0845B9D61F458539E9A552B\":{n:\"Surround (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"D89FEDDED0436FDEDA7C3C37E2FB7CF1\":{n:\"Surround (Unknown) (PAL) (4K)\"},\n\t\"4C462B2B6FB0A19A1437EB2C3DC20783\":{n:\"Survival Island (1 of 3) (1983) (Arcadia)\"},\n\t\"B6E40BCE550672E5495A8CDDE7075B8B\":{n:\"Survival Island (1 of 3) (1983) (Arcadia) (PAL)\"},\n\t\"045035F995272EB2DEB8820111745A07\":{n:\"Survival Island (1983) (Arcadia)\"},\n\t\"84DB818CD4111542A15C2A795369A256\":{n:\"Survival Island (1983) (Arcadia) (PAL)\"},\n\t\"691D67910B08B63DE8631901D1887C1F\":{n:\"Survival Island (1983) (Arcadia) [a]\"},\n\t\"B31DC989F594764EACFA7931CEAD0050\":{n:\"Survival Island (2 of 3) (1983) (Arcadia)\"},\n\t\"277C7281AC945B8331E2E6FCAD560C11\":{n:\"Survival Island (2 of 3) (1983) (Arcadia) (PAL)\"},\n\t\"4A9009620038F7F30AAEB2A00AE58FDE\":{n:\"Survival Island (3 of 3) (1983) (Arcadia)\"},\n\t\"76C685D1A60C0107AA54A772113A2972\":{n:\"Survival Island (3 of 3) (1983) (Arcadia) (PAL)\"},\n\t\"59E53894B3899EE164C91CFA7842DA66\":{n:\"Survival Run (1983) (Data Age) (Prototype)\"},\n\t\"85E564DAE5687E431955056FBDA10978\":{n:\"Survival Run (1983) (Milton Bradley)\",c:1},\n\t\"C7600D72247C5DFA1EC1A88D23E6C85E\":{n:\"Sweat! - The Decathlon Game (1 of 3) (1983) (Arcadia) (Prototype)\",p:1},\n\t\"E51C23389E43AB328CCFB05BE7D451DA\":{n:\"Sweat! - The Decathlon Game (1983) (Arcadia) (Prototype)\",p:1},\n\t\"5EC73AC7D2AC95AC9530C6D33E713D14\":{n:\"Sweat! - The Decathlon Game (2 of 3) (1983) (Arcadia) (Prototype)\",p:1},\n\t\"1E060A8025512AD2127E3DA11E212CCC\":{n:\"Sweat! - The Decathlon Game (3 of 3) (1983) (Arcadia) (Prototype)\",p:1},\n\t\"528400FAD9A77FD5AD7FC5FDC2B7D69D\":{n:\"Sword of Saros (1983) (Arcadia)\"},\n\t\"8B7CA29A55432F886CEE3D452FB00481\":{n:\"Sword of Saros (1983) (Arcadia) (PAL)\"},\n\t\"545048CCB045F9EFC6CF2B125CD0DFA8\":{n:\"Sword of Saros (1983) (Arcadia) [a]\"},\n\t\"5AEA9974B975A6A844E6DF10D2B861C4\":{n:\"SwordQuest - EarthWorld (1982) (Atari)\"},\n\t\"A875F0A919129B4F1B5103DDD200D2FE\":{n:\"SwordQuest - EarthWorld (1982) (Atari) (PAL)\"},\n\t\"05EBD183EA854C0A1B56C218246FBBAE\":{n:\"SwordQuest - EarthWorld (1982) (Atari) [a]\"},\n\t\"F9D51A4E5F8B48F68770C89FFD495ED1\":{n:\"SwordQuest - FireWorld (1982) (Atari)\"},\n\t\"BF976CF80BCF52C5F164C1D45F2B316B\":{n:\"SwordQuest - FireWorld (1982) (Atari) (PAL)\"},\n\t\"3882224ADBD0CA7C748B2A1C9B87263E\":{n:\"SwordQuest - FireWorld (1982) (Atari) (PAL) [a]\"},\n\t\"BC5389839857612CFABEB810BA7EFFDC\":{n:\"SwordQuest - WaterWorld (1983) (Atari)\"},\n\t\"87662815BC4F3C3C86071DC994E3F30E\":{n:\"Swordfight (1983) (Intellivision)\"},\n\t\"D0B9F705AA5F61F47A748A66009AE2D2\":{n:\"Synthcart (14-01-2002) (Paul Slocum)\",c:1},\n\t\"2C2AEA31B01C6126C1A43E10CACBFD58\":{n:\"Synthcart (2002) (Paul Slocum)\",c:1},\n\t\"8B556C3D9CA8E5E6E665BD759B93FFAE\":{n:\"Synthcart (2002) (Paul Slocum) (PAL) [!]\",c:1},\n\t\"896EC58F26E930E02F5E4F046602C3A1\":{n:\"Synthcart (Beta) (2002) (Paul Slocum)\",c:1},\n\t\"8933976F2029C0D8492EBD8F4EB21492\":{n:\"Synthcart Plus (09-02-2003) (Paul Slocum)\"},\n\t\"294762000E853B4319F9991C1CED5DFC\":{n:\"T.F. Space Invaders (Hack)\"},\n\t\"BECD908F9D7BB361982C3DC02D6475C6\":{n:\"THX-1138 (Kyle Pittman) (Hack)\"},\n\t\"6FFC95108E5ADD6F9B8ABCAF330BE835\":{n:\"TP Bug (Charles Morgan) (Hack)\"},\n\t\"FB27AFE896E7C928089307B32E5642EE\":{n:\"TRON - Deadly Discs (1982) (M Network)\"},\n\t\"9E5007131695621D06902AB3C960622A\":{n:\"Tac Scan (1983) (Sega) [h1]\",p:1,c:1},\n\t\"D45EBF130ED9070EA8EBD56176E48A38\":{n:\"Tac-Scan (1982) (Sega)\",p:1,c:1},\n\t\"06E5DC181A8EDA1C31CC7C581C68B6EF\":{n:\"Tac-Scan (Unknown) (PAL)\",c:1},\n\t\"C77D3B47F2293E69419B92522C6F6647\":{n:\"Tank Brigade (1983) (Panda)\"},\n\t\"AD8072675109D13FDD31A2E0403D5CFF\":{n:\"Tank City (Funvision)\"},\n\t\"FA6FE97A10EFB9E74C0B5A816E6E1958\":{n:\"Tanks But No Tanks (1983) (ZiMAG)\"},\n\t\"082FDC8BD47FEF01482CE5883C4FFDB8\":{n:\"Tanks DX (Charles Morgan) (Hack)\"},\n\t\"1A613CE60FC834D4970E1E674B9196B3\":{n:\"Tanks War (1983) (Home Vision) (PAL)\"},\n\t\"DE3D0E37729D85AFCB25A8D052A6E236\":{n:\"Tapeworm (1982) (Spectravision)\",c:1},\n\t\"8ED73106E2F42F91447FB90B6F0EA4A4\":{n:\"Tapeworm (1982) (Spectravision) (PAL)\",c:1},\n\t\"33CAC5E767A534C95D292B04F439DC37\":{n:\"Tapeworm (Jone Yuan)\"},\n\t\"C0D2434348DE72FA6EDCC6D8E40F28D7\":{n:\"Tapper (1984) (Sega)\"},\n\t\"2D6741CDA3000230F6BBDD5E31941C01\":{n:\"Targ (1983) (CBS Electronics) (Prototype)\"},\n\t\"3D6FC7A19BE76D808AA233415CB583FC\":{n:\"Target Practice (1983) (CCE)\"},\n\t\"7DD9C5284422F729066AB22A284C8283\":{n:\"Target Practice (1983) (CCE) [a]\"},\n\t\"0C35806FF0019A270A7ACAE68DE89D28\":{n:\"Task Force (1987) (Froggo)\"},\n\t\"A1EAD9C181D67859AA93C44E40F1709C\":{n:\"Tax Avoiders (1982) (American Videogame)\"},\n\t\"360BA640F6810EC902B01A09CC8AB556\":{n:\"Taz (06-15-1983) (Atari) (Prototype) (PAL)\"},\n\t\"B31F178AA0D569CCCAC7959F84E0A724\":{n:\"Taz (07-13-1983) (Atari) (Prototype)\"},\n\t\"9A01115206F32EB0B539C7E5A47CCAFA\":{n:\"Taz (07-15-1983) (Atari) (Prototype)\"},\n\t\"7574480AE2AB0D282C887E9015FDB54C\":{n:\"Taz (1983) (Atari)\"},\n\t\"0D09CFF0D28033C02C3290EDFC3A5CEA\":{n:\"Taz (1983) (Atari) (Prototype)\"},\n\t\"76809EB1EE0DB8A318308A5CDDA0F4E2\":{n:\"Taz (1983) (Atari) (Prototype) [a]\"},\n\t\"4702D8D9B48A332724AF198AEAC9E469\":{n:\"Taz (1983) (Atari) [a]\"},\n\t\"AB60EA7B707C58D356CAD858EB18DB43\":{n:\"Tazer (John K. Harvey)\"},\n\t\"8C2FA33048F055F38358D51EEFE417DB\":{n:\"Teddy Apple (1983) (Home Vision) (PAL)\",c:1},\n\t\"3D7AAD37C55692814211C8B590A0334C\":{n:\"Telepathy (1983) (Atari) (Prototype)\"},\n\t\"AE97CF8ED21F4154B4360A3CF6C95C5E\":{n:\"Teleterm 2600 (John K. Harvey) (PD)\"},\n\t\"203B1EFC6101D4B9D83BB6CC1C71F67F\":{n:\"Teller-Jonglieren! (1983) (Quelle) (PAL)\",c:1},\n\t\"C830F6AE7EE58BCC2A6712FB33E92D55\":{n:\"Tempest (01-05-1984) (Atari) (Prototype)\"},\n\t\"42CDD6A9E42A3639E190722B8EA3FC51\":{n:\"Tennis (1981) (Activision)\"},\n\t\"961112B74A920A5242E233480326C356\":{n:\"Tennis (1981) (Activision) (16K)\"},\n\t\"ACA09FFEA77174B148B96B205109DB4D\":{n:\"Tennis (1981) (Activision) (4K)\"},\n\t\"74EBACA101CC428CF219F15DDA84B6F8\":{n:\"Tennis (1981) (Activision) (8K)\"},\n\t\"A5C96B046D5F8B7C96DAAA12F925BEF8\":{n:\"Tennis (1981) (Activision) (PAL)\"},\n\t\"CA7F166A94EED1A349DEC6D6A358BCAD\":{n:\"Tennis (1981) (Activision) (PAL) (4K)\"},\n\t\"73EFA9F3CBE197F26E0FB87132829232\":{n:\"Tennis (1983) (CCE) (4K)\"},\n\t\"04B488D4EEF622D022A0021375E7E339\":{n:\"Tennis (1983) (Home Vision) (PAL) (4K)\"},\n\t\"A3F8AEBB38182749CB8DA85CFBC63D7C\":{n:\"Tennis (208 in 1) (Unknown) (PAL) (Hack)\"},\n\t\"16E04823887C547DC24BC70DFF693DF4\":{n:\"Tennis (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"30685B9B6EBD9BA71536DD7632A1E3B6\":{n:\"Tennis (Dactari)\"},\n\t\"736388D73198552D77D423962000006F\":{n:\"Tennis (Dactari) (4K)\"},\n\t\"1F5A2927A0B2FAF87540B01D9D7D7FD1\":{n:\"Tennis (Pet Boat) (PAL)\"},\n\t\"61E0F5E1CC207E98704D0758C68DF317\":{n:\"Tennis (Star Game)\"},\n\t\"A3873D7C544AF459F40D58DFCFB78887\":{n:\"Tennis (Unknown)\"},\n\t\"6697F177847C70505824422E76AAD586\":{n:\"Tennis (Unknown) (PAL) (4K)\"},\n\t\"E3ED4BA3361756970F076E46E9CAD1D2\":{n:\"Tennis (Unknown) (PAL) (4K) [a]\"},\n\t\"20AE62FB69C6CC6E8098CCA8CD080487\":{n:\"Tennis (Zirok)\"},\n\t\"67631EA5CFE44066A1E76DDCB6BCB512\":{n:\"Termool (Unknown) (PAL)\"},\n\t\"05C60458EC69E7FE8B1BE973852D84F1\":{n:\"Test (1996) (J.V. Matthews) (PD)\"},\n\t\"F0631C6675033428238408885D7E4FDE\":{n:\"Test Cart (2002) (Paul Slocum)\",c:1},\n\t\"B0E1EE07FBC73493EAC5651A52F90F00\":{n:\"Tetris 2600 (Colin Hughes)\",c:1},\n\t\"CAE8F83C06831EC7BB6A3C07E98E9342\":{n:\"Tetris 2600 (Colin Hughes) [o1]\",c:1},\n\t\"5EEB81292992E057B290A5CD196F155D\":{n:\"Texas Chainsaw Massacre, The (1983) (Wizard Video)\"},\n\t\"3316EE2F887E9CB9B54DD23C5B98C3E2\":{n:\"Texas Golf (miniature Gold Hack)\"},\n\t\"4476C39736090DABAC09F6CAF835FC49\":{n:\"Text Screen (25-01-2003) (AD)\"},\n\t\"3B64A00CE147C3C29F7F8F8E531D08D8\":{n:\"This Planet Sucks (16K) (Greg Troutman)\"},\n\t\"5FB71CC60E293FE10A5023F11C734E55\":{n:\"This Planet Sucks (Fix) (27-12-2002) (Greg Troutman)\"},\n\t\"A98B649912B6CA19EAF5C2D2FAF38562\":{n:\"This Planet Sucks (Greg Troutman) (PAL) [!]\"},\n\t\"DFE6AA7443BB813CEFA35A4CF4887422\":{n:\"This Planet Sucks (Greg Troutman) [a1]\"},\n\t\"0ACAF71E60B89F6B6EAB63DB6AB84510\":{n:\"This Planet Sucks (Greg Troutman) [a2]\"},\n\t\"225522777DC7155627808BDE0C1D0EF0\":{n:\"This Planet Sucks Demo 1 (Greg Troutman) (PD)\"},\n\t\"8530CAAAF40ACBDCD118C282B5F8A37A\":{n:\"This Planet Sucks Demo 2 (Greg Troutman) (PD)\"},\n\t\"7F790939F7EAA8C47A246C4283981F84\":{n:\"This Planet Sucks Demo 3 (Greg Troutman) (PD)\"},\n\t\"E56DA674188BA2F02C7A0A343A01236F\":{n:\"This Planet Sucks Demo 4 (Greg Troutman) (PD)\"},\n\t\"65C6406F5AF934590097C8C032EBB482\":{n:\"Three Hugger (Pave Demo) (20-12-2002) (Billy Eno)\"},\n\t\"E63A87C231EE9A506F9599AA4EF7DFB9\":{n:\"Threshold (1982) (Tigervision)\"},\n\t\"67684A1D18C85FFA5D82DAB48FD1CB51\":{n:\"Threshold (1982) (Tigervision) (PAL)\"},\n\t\"346555779A2D51B48833463B5433472F\":{n:\"Thrust (V0.1) (2000) (TJ)\"},\n\t\"1442D1B35A6478FBA22AE7DD1FCB5634\":{n:\"Thrust (V0.2) (2000) (TJ)\"},\n\t\"BA3B0EEBCCC7B791107DE5B4ABB671B4\":{n:\"Thrust (V0.9) (2000) (TJ)\"},\n\t\"041B5E56BBC650DB574BD8DB3FAE2696\":{n:\"Thrust (V1.0) (2000) (TJ)\"},\n\t\"98FA3AD778A668A79449350DE4B3B95B\":{n:\"Thrust (V1.1) (2000) (TJ)\"},\n\t\"FC668A2251DD79CBD903D4FA0E558F96\":{n:\"Thrust (V1.1) (2000) (TJ) [a1]\"},\n\t\"E1E09E2F280E8E142121A377D0DC1B46\":{n:\"Thrust (V1.21) (2000) (TJ)\"},\n\t\"DE7BCA4E569AD9D3FD08FF1395E53D2D\":{n:\"Thrust (V1.22) (2000) (TJ)\"},\n\t\"CF507910D6E74568A68AC949537BCCF9\":{n:\"Thunderground (1983) (Sega)\",c:1},\n\t\"1428029E762797069AD795CE7C6A1A93\":{n:\"Thunderground (Unknown) (PAL)\",c:1},\n\t\"C032C2BD7017FDFBBA9A105EC50F800E\":{n:\"Thwocker (04-09-1984) (Activision) (Prototype)\"},\n\t\"79D6F61DA3C64688AC8E075667F8A39F\":{n:\"Tie-Fighters (MP)\"},\n\t\"7576DD46C2F8D8AB159D97E3A3F2052F\":{n:\"Time Machine (1983) (Goliath) (PAL)\"},\n\t\"FC2104DD2DADF9A6176C1C1C8F87CED9\":{n:\"Time Pilot (1983) (Coleco)\"},\n\t\"4E99EBD65A967CABF350DB54405D577C\":{n:\"Time Pilot (1983) (Coleco) [b1]\"},\n\t\"5DB9E5BF663CAD6BF159BC395F6EAD53\":{n:\"Time Race (1983) (Goliath) (PAL)\"},\n\t\"71F09F128E76EB14E244BE8F44848759\":{n:\"Time Race (Funvision) (PAL)\"},\n\t\"00EAEE22034AFF602F899B684C107D77\":{n:\"Time Race (Rainbow Vision) (PAL)\"},\n\t\"EFB47D70B2965CE689E2C5757616B286\":{n:\"Time Test Demo (Eckhard Stolberg) (PAL) (PD)\"},\n\t\"D6D1DDD21E9D17EA5F325FA09305069C\":{n:\"Time Warp (1982) (Funvision) (PAL)\"},\n\t\"BC3057A35319AAE3A5CD87A203736ABE\":{n:\"Time Warp (1983) (CCE)\"},\n\t\"619DE46281EB2E0ADBB98255732483B4\":{n:\"Time Warp (Unknown)\"},\n\t\"6D9AFD70E9369C2A6BFF96C4964413B7\":{n:\"Time Warp (Unknown) (PAL)\"},\n\t\"B879E13FD99382E09BCAF1D87AD84ADD\":{n:\"Time Warp (Zellers)\"},\n\t\"FB09EE4CCD47AE74A3C314F0D8A40344\":{n:\"Titans (SnailSoft)\"},\n\t\"12123B534BDEE79ED7563B9AD74F1CBD\":{n:\"Title Match Pro Wrestling (1987) (Absolute)\"},\n\t\"153F40E335E5CB90F5CE02E54934AB62\":{n:\"Title Match Pro Wrestling (1987) (Absolute) (PAL)\"},\n\t\"DA6465A34D2E44D26AA9A2A0CD1BCE4D\":{n:\"Title Match Pro Wrestling (1987) (Absolute) [a]\"},\n\t\"784176346E9422733D55C427230E5BAD\":{n:\"Title Match Pro Wrestling (1989) (Activision)\"},\n\t\"3B9480BB6FB1E358C9C0A64E86945AEE\":{n:\"Title Match Pro Wrestling (2002) (Skyworks)\"},\n\t\"DE61A0B171E909A5A4CFCF81D146DBCB\":{n:\"Tom Boy (Rainbow Vision) (PAL)\"},\n\t\"ECE908D77AB944F7BAC84322B9973549\":{n:\"Tom Boy (Unknown) (PAL60)\"},\n\t\"D85F1E35C5445AC898746719A3D93F09\":{n:\"Tom's Eierjagd (1983) (Quelle) (PAL)\"},\n\t\"C05F367FA4767CEB27ABADF0066DF7F4\":{n:\"TomInv (31-07-2001) (TJ)\"},\n\t\"32DCD1B535F564EE38143A70A8146EFE\":{n:\"Tomarc the Barbarian (1983) (Xonox)\"},\n\t\"8BC0D2052B4F259E7A50A7C771B45241\":{n:\"Tomarc the Barbarian (1983) (Xonox) [a]\"},\n\t\"BE2870A0120FD28D25284E9CCDCBDC99\":{n:\"Tomb Raider 2600 [REV 01] (Montezuma's Revenge Hack)\"},\n\t\"E0221C95AA657F5764EEEB64C8429258\":{n:\"Tomb Raider 2600 [REV 02] (Montezuma's Revenge Hack)\"},\n\t\"5B574FAA56836DA0866BA32AE32547F2\":{n:\"Tomb Raider 2600 [REV 03] (Montezuma's Revenge Hack)\"},\n\t\"3AC6C50A8E62D4CE71595134CBD8035E\":{n:\"Tomcat (1988) (Absolute)\"},\n\t\"155FA7F479DCBA3B10B1494E236D6010\":{n:\"Tomcat (2002) (Skyworks) (PAL)\"},\n\t\"FA2BE8125C3C60AB83E1C0FE56922FCB\":{n:\"Tooth Protectors (1983) (DSD-Camelot)\",c:1},\n\t\"E0B24C3F40A46CDA52E29835AB7AD660\":{n:\"Top Gun (1983) (Quelle) (PAL)\"},\n\t\"01ABCC1D2D3CBA87A3AA0EB97A9D7B9C\":{n:\"Topy (Jone Yuan)\"},\n\t\"0AA208060D7C140F20571E3341F5A3F8\":{n:\"Towering Inferno (1982) (U.S. Games)\",c:1},\n\t\"15FE28D0C8893BE9223E8CB2D032E557\":{n:\"Towering Inferno (208 in 1) (Unknown) (PAL)\",c:1},\n\t\"F39E4BC99845EDD8621B0F3C7B8C4FD9\":{n:\"Toyshop Trouble (AtariAge)\",p:1},\n\t\"6AE4DC6D7351DACD1012749CA82F9A56\":{n:\"Track and Field (1984) (Atari)\"},\n\t\"66706459E62514D0C39C3797CBF73FF1\":{n:\"Treasure Below (1983) (Video Gems) (PAL)\"},\n\t\"81414174F1816D5C1E583AF427AC89FC\":{n:\"Treasure Below (Thomas Jentzsch)\"},\n\t\"B86A12E53AB107B6CAEDD4E0272AA034\":{n:\"Treasure Hunting (Funvision)\"},\n\t\"1BB91BAE919DDBD655FA25C54EA6F532\":{n:\"Treasure Island (Suntek) (PAL)\"},\n\t\"D6A44277C3EB4F9D039185E0ECF7BFA6\":{n:\"Trick (1997) (Eckhard Stolberg)\"},\n\t\"0CC8224FF1EDFE458E8629E9E5FE3F5B\":{n:\"Trick 12 (2001) (TJ)\"},\n\t\"24DF052902AA9DE21C2B2525EB84A255\":{n:\"Trick Shot (1982) (Imagic)\",c:1},\n\t\"097936B07E0E0117B9026AE6835EB168\":{n:\"Trick Shot (1982) (Imagic) (PAL)\",c:1},\n\t\"DCA90EA1084A2FDBE300D7178CA1A138\":{n:\"Trick Shot (1982) (Imagic) (PAL) [a]\",c:1},\n\t\"8F613EA7C32A587D6741790E32872DDD\":{n:\"Troll Demo (PD)\"},\n\t\"E7A758BB0B43D0F7004E92B9ABF4BC83\":{n:\"Troll's Adventure (Hack)\"},\n\t\"DF3E6A9B6927CF59B7AFB626F6FD7EEA\":{n:\"Tuby Bird (208 in 1) (Unknown) (PAL)\"},\n\t\"E957EB4612D6BD5940D3492DFA749668\":{n:\"Tunnel Demo (27-03-2003) (CT)\"},\n\t\"A14D8A388083C60283E00592B18D4C6C\":{n:\"Tunnel Demo (28-03-2003) (AD)\"},\n\t\"18D26111CEF66DFF0C8AF8CF0E117843\":{n:\"Tunnel Demo (Cycling Colours 2) (29-03-2003) (AD)\"},\n\t\"265A85F66544EAF95FDA06C3D9E48ABF\":{n:\"Tunnel Demo (Cycling Colours) (29-03-2003) (AD)\"},\n\t\"AE047E9468BDA961D8E9E9D8FF52980F\":{n:\"Tunnel Demo (Red Spiral) (30-03-2003) (AD)\"},\n\t\"D8B2C81CEA5AF04F795EB3DC6573D72B\":{n:\"Tunnel Demo 2 (27-03-2003) (CT)\"},\n\t\"B2737034F974535F5C0C6431AB8CAF73\":{n:\"Tunnel Runner (1983) (CBS Electronics)\"},\n\t\"7648E72A5B5899076688DF18A1DDCF72\":{n:\"Tunnel Runner (1983) (CBS Electronics) (Prototype)\"},\n\t\"EFEFC02BBC5258815457F7A5B8D8750A\":{n:\"Tunnel Runner (1983) (CBS Electronics) [a]\"},\n\t\"D9AB6B67A17DA51E5AD13717E93FA2E2\":{n:\"Turbo (Coleco) Prototype Fake v0.1 (TJ)\"},\n\t\"DD4F4E0FBD81762533E39E6F5B55BB3A\":{n:\"Turbo WIP (TJ)\"},\n\t\"7A5463545DFB2DCFDAFA6074B2F2C15E\":{n:\"Turmoil (1982) (20th Century Fox)\"},\n\t\"46258BD92B1F66F4CB47864D7654F542\":{n:\"Turmoil (Zellers)\"},\n\t\"085322BAE40D904F53BDCC56DF0593FC\":{n:\"Tutankham (1983) (Parker Bros)\"},\n\t\"66C2380C71709EFA7B166621E5BB4558\":{n:\"Tutankham (1983) (Parker Bros) (PAL)\"},\n\t\"6FC27A9233FC69D28D3F190B4FF80F03\":{n:\"UFO #6 (Charles Morgan) (Hack)\"},\n\t\"6BB09BC915A7411FE160D0B2E4D66047\":{n:\"UFO (32 in 1) (1988) (Atari) (PAL)\"},\n\t\"B290C2B139344FCFF5B312C71B9AC3B2\":{n:\"UFO (32 in 1) (1988) (Atari) (PAL) (4K)\"},\n\t\"CA50CC4B21B0155255E066FCD6396331\":{n:\"UFO Patrol (Suntek) (PAL)\",c:1},\n\t\"1278F74CA1DFAA9122DF3ECA3C5BCAAD\":{n:\"Ungeheuer der Tiefe (Quelle) (PAL)\"},\n\t\"81A010ABDBA1A640F7ADF7F84E13D307\":{n:\"Universal Chaos (1989) (Telegames)\",c:1},\n\t\"E020F612255E266A8A6A9795A4DF0C0F\":{n:\"Universal Chaos (1989) (Telegames) (PAL)\"},\n\t\"5F950A2D1EB331A1276819520705DF94\":{n:\"Unknown 20th Century Fox Game (1983) (20th Century Fox) (Prototype)\",c:1},\n\t\"841B7BC1CAD05F5408302308777D49DC\":{n:\"Unknown Activision Game #1 (10-22-1982) (Activision) (Prototype)\"},\n\t\"EE681F566AAD6C07C61BBBFC66D74A27\":{n:\"Unknown Activision Game #1 (10-29-1982) (Activision) (Prototype)\"},\n\t\"8055B9C2622136FD91EDFEA6DF642DAF\":{n:\"Unknown Activision Game #1 (1983) (Activision) (Prototype) (PAL)\"},\n\t\"700A786471C8A91EC09E2F8E47F14A04\":{n:\"Unknown Activision Game #2 (1983) (Activision) (Prototype)\"},\n\t\"06B0194CE992584C365278E0D7323279\":{n:\"Unknown Activision Game #2 (Prototype) (PAL)\"},\n\t\"73E66E82AC22B305EB4D9578E866236E\":{n:\"Unknown Datatech Game (Jone Yuan)\"},\n\t\"C3205E3707F646E1A106E09C5C49C1BF\":{n:\"Unknown Title (bin00003 (200206)) (PD)\"},\n\t\"3C3A2BB776DEC245C7D6678B5A56AC10\":{n:\"Unknown Title (bin00003) (PD)\"},\n\t\"B00088418FC891F3FAA3D4DDDE6ACE94\":{n:\"Unknown Title (bin00007 (200102)) (PD)\"},\n\t\"143918368F4F4DFFF90999188C0197C9\":{n:\"Unknown Title (bin00016 (200110)) (PD)\"},\n\t\"4DCC7E7C2EC0738E26C817B9383091AF\":{n:\"Unknown Title (bin00026 (200110)) (PD)\"},\n\t\"C150C76CBDE2C9B5A97EB5399D46C64F\":{n:\"Unknown Title (xxx00000 (200203)) (PD)\"},\n\t\"A499D720E7EE35C62424DE882A3351B6\":{n:\"Up 'n Down (1984) (Sega)\"},\n\t\"C6556E082AAC04260596B4045BC122DE\":{n:\"Vanguard (1982) (Atari)\"},\n\t\"3CAA902AC0CE4509308990645876426A\":{n:\"Vanguard (1982) (Atari) (PAL)\"},\n\t\"9D0BEFA555F003069A21D2F6847AD962\":{n:\"Vanguard (1982) (Atari) (PAL) [a]\"},\n\t\"88D7B6B3967DE0DB24CDAE1C7F7181BD\":{n:\"Vanguard (1982) (Atari) (Prototype)\"},\n\t\"7EF74879D7CB9FA0EF161B91AD55B3BB\":{n:\"Vanguard (CCE)\"},\n\t\"F9660EBED66FEE8BDFDF07B4FAA22941\":{n:\"Vanguard (VGS)\"},\n\t\"787EBC2609A31EB5C57C4A18837D1AEE\":{n:\"Vault Assault (19xx) (Prescott)\"},\n\t\"D08FCCFBEBAA531C4A4FA7359393A0A9\":{n:\"Venetian Blinds Demo (1982) (Activision)\"},\n\t\"FB884FFD89013331A6F01AE3F6ABD214\":{n:\"Venetian Blinds Demo (1982) (Activision) (PAL)\"},\n\t\"39DA69FF9833F8C143F03B6E0E7A996B\":{n:\"Ventrra Invaders 2002 (Charles Morgan) (Hack)\"},\n\t\"345758747B893E4C9BDDE8877DE47788\":{n:\"Venture (1982) (CBS Electronics) (PAL)\",c:1},\n\t\"3E899EBA0CA8CD2972DA1AE5479B4F0D\":{n:\"Venture (1982) (Coleco)\",c:1},\n\t\"82DE957D155FC041FC6AFB8315A28550\":{n:\"Venture (1982) (Coleco) (Prototype)\"},\n\t\"C63A98CA404AA5EE9FCFF1DE488C3F43\":{n:\"Venture (1987) (Atari)\",c:1},\n\t\"7CA7A471D70305C673FEDD08174A81E8\":{n:\"Venture II (2001) (Tim Snider)\",c:1},\n\t\"6CD1DC960E3E8D5C5E0FBE67AB49087A\":{n:\"Vertical Playfield Demo 1 (PD)\"},\n\t\"EA6D40DB5498D6386571A76DF448AA4C\":{n:\"Vertical Playfield Demo 2 (PD)\"},\n\t\"CE6C4270F605AD3CE5E82678B0FC71F8\":{n:\"Vertical Rainbow Demo (PD)\"},\n\t\"BDC381BAF7C252C63739C5E9ED087A5C\":{n:\"Vertical Ship Demo 1 (PD)\"},\n\t\"6A091B8FFEACD0939850DA2094B51564\":{n:\"Vertically Scrolling Playfield (02-02-2003) (Aaron Bergstrom)\"},\n\t\"0956285E24A18EFA10C68A33846CA84D\":{n:\"Viagem Espacial (Dismac)\"},\n\t\"539D26B6E9DF0DA8E7465F0F5AD863B7\":{n:\"Video Checkers (1980) (Atari)\"},\n\t\"193F060553BA0A2A2676F91D9EC0C555\":{n:\"Video Checkers (1980) (Atari) (PAL)\"},\n\t\"F0B7DB930CA0E548C41A97160B9F6275\":{n:\"Video Chess (1979) (Atari)\"},\n\t\"3EF9573536730DCD6D9C20B6822DBDC4\":{n:\"Video Chess (1979) (Atari) (PAL)\"},\n\t\"A58B11148C18D85E4C2AEF4FF46ADE67\":{n:\"Video Chess (Unknown) (PAL)\"},\n\t\"ED1492D4CAFD7EBF064F0C933249F5B0\":{n:\"Video Cube (CCE)\"},\n\t\"4191B671BCD8237FC8E297B4947F2990\":{n:\"Video Jogger (1983) (Exus)\"},\n\t\"497F3D2970C43E5224BE99F75E97CBBB\":{n:\"Video Life (1981) (CommaVid)\",c:1},\n\t\"3EC12372CA3E870B11CA70EDC7EC26A4\":{n:\"Video Life (1981) (CommaVid) (4K)\",c:1},\n\t\"4209E9DCDF05614E290167A1C033CFD2\":{n:\"Video Life (1981) (CommaVid) [higher sounds]\",c:1},\n\t\"14D365BBFAAC3D20C6119591F57ACCA4\":{n:\"Video Life (Unknown) (4K) (Hack)\",c:1},\n\t\"60E0EA3CBE0913D39803477945E9E5EC\":{n:\"Video Olympics (1977) (Atari)\",p:1},\n\t\"C00B65D1BAE0AEF6A1B5652C9C2156A1\":{n:\"Video Olympics (1977) (Atari) (4K)\",p:1},\n\t\"77D0A577636E1C9212AECCDE9D0BAA4B\":{n:\"Video Olympics (1977) (Atari) (PAL)\",p:1},\n\t\"FE3B461D4C8B179FE68BC77760294C25\":{n:\"Video Olympics (1977) (Atari) (PAL) (4K)\",p:1},\n\t\"107CC025334211E6D29DA0B6BE46AEC7\":{n:\"Video Pinball (1981) (Atari)\"},\n\t\"6E59DD52F88C00D5060EAC56C1A0B0D3\":{n:\"Video Pinball (1981) (Atari) (PAL)\"},\n\t\"A2424C1A0C783D7585D701B1C71B5FDC\":{n:\"Video Pinball (Unknown) (PAL)\"},\n\t\"EE659AE50E9DF886AC4F8D7AD10D046A\":{n:\"Video Reflex (1983) (Exus)\"},\n\t\"16F494F20AF5DC803BC35939EF924020\":{n:\"Video Simon (Mark De Smet)\"},\n\t\"93ACD5020AE8EB5673601E2EDECBC158\":{n:\"Video Time Machine (Chris Cracknell)\"},\n\t\"3B80B8F52A0939E16B5059F93A3FC19A\":{n:\"Virtual Pet (V007) (after Demo 2) (CRACKERS) (PD)\"},\n\t\"4F0071946E80CA68EDFDCCBAC86DCCE0\":{n:\"Virtual Pet Demo 1 (CRACKERS) (PD)\"},\n\t\"1F349DD41C3F93C4214E5E308DCCB056\":{n:\"Virtual Pet Demo 2 (CRACKERS) (PD)\"},\n\t\"E17699A54C90F3A56AE4820F779F72C4\":{n:\"Vogel Flieh (1983) (Quelle) (PAL)\"},\n\t\"6C128BC950FCBDBCAF0D99935DA70156\":{n:\"Volleyball (1983) (Digitel)\"},\n\t\"4D8396DEEABB40B5E8578276EB5A8B6D\":{n:\"Volleyball (1983) (Quelle) (PAL)\"},\n\t\"5FAFFE1C4C57430978DEC5CED32B9F4A\":{n:\"Volleyball (Dactari - Milmar)\"},\n\t\"42B3AB3CF661929BDC77B621A8C37574\":{n:\"Volleyball (Robby)\"},\n\t\"8108162BC88B5A14ADC3E031CF4175AD\":{n:\"Vom Himmel durch die Hoelle (1983) (Quelle) (PAL)\"},\n\t\"1F21666B8F78B65051B7A609F1D48608\":{n:\"Vulture Attack (1982) (K-Tel Vision)\"},\n\t\"B00A8BC9D7FE7080980A514005CBAD13\":{n:\"Vulture Attack (1982) (K-Tel Vision) (PAL)\"},\n\t\"6041F400B45511AA3A69FAB4B8FC8F41\":{n:\"Wabbit (1982) (Apollo)\"},\n\t\"38CF93EACFB2FA9A2C5E39059FF35A74\":{n:\"WacMan (2003) (Greg Zumwalt) (Hack)\"},\n\t\"1C5796D277D9E4DF3F6648F7012884C4\":{n:\"Wachroboter jagt Jupy (Quelle) (PAL)\"},\n\t\"7FF53F6922708119E7BF478D7D618C86\":{n:\"Walker (Suntek) (PAL)\"},\n\t\"D175258B2973B917A05B46DF4E1CF15D\":{n:\"Walker (Suntek) (PAL) [a]\"},\n\t\"D3456B4CF1BD1A7B8FB907AF1A80EE15\":{n:\"Wall Ball (1983) (Avalon Hill)\",c:1},\n\t\"C16FBFDBFDF5590CC8179E4B0F5F5AEB\":{n:\"Wall Break (Unknown)\"},\n\t\"EAE6A5510055341D3ABEB45667BB3E9B\":{n:\"Wall Defender (HES) (PAL)\"},\n\t\"03FF9E8A7AF437F16447FE88CEA3226C\":{n:\"Wall-Defender (1983) (Bomb)\"},\n\t\"372BDDF113D088BC572F94E98D8249F5\":{n:\"Wall-Defender (1983) (Bomb) (PAL)\"},\n\t\"6522717CFD75D1DBA252CBDE76992090\":{n:\"War 2000 (1983) (Home Vision) (PAL)\"},\n\t\"9436B7AD131B5A1F7753CE4309BA3DEE\":{n:\"War of The Worlds (Kyle Pittman) (Hack)\"},\n\t\"CBE5A166550A8129A5E6D374901DFFAD\":{n:\"Warlords (1981) (Atari)\",p:1},\n\t\"0C80751F6F7A3B370CC9E9F39AD533A7\":{n:\"Warlords (1981) (Atari) (PAL)\",p:1},\n\t\"679E910B27406C6A2072F9569AE35FC8\":{n:\"Warplock (1982) (Data Age)\",p:1,c:1},\n\t\"D1C3520B57C348BC21D543699BC88E7E\":{n:\"Warplock (1983) (Gameworld) (PAL)\",p:1,c:1},\n\t\"D88691C995008B9AB61A44BB686B32E4\":{n:\"Warring Worms (07-02-2002) (Billy Eno)\"},\n\t\"FA3DE71841C0841DB6A741884A6B6B2F\":{n:\"Warring Worms (17-02-2002) (Billy Eno)\"},\n\t\"2351D26D0BFDEE3095BEC9C05CBCF7B0\":{n:\"Warring Worms (19-01-2002) (Billy Eno)\"},\n\t\"7E7C4C59D55494E66EEF5E04EC1C6157\":{n:\"Warring Worms (2002) (Baroque Gaming)\"},\n\t\"A2F296EA2D6D4B59979BAC5DFBF4EDF0\":{n:\"Warring Worms (28-01-2002) (Billy Eno)\"},\n\t\"7A64B5A6E90619C6AACF244CDD7502F8\":{n:\"Warring Worms (Beta 1) (2002) (Baroque Gaming)\"},\n\t\"2F66EBF037321ED0442AC4B89CE22633\":{n:\"Warring Worms (Beta 2) (2002) (Baroque Gaming)\"},\n\t\"D17A8C440D6BE79FAE393A4B46661164\":{n:\"Warring Worms (Beta 3) (2002) (Billy Eno)\"},\n\t\"4A2FE6F0F6317F006FD6D4B34515448B\":{n:\"Warring Worms (Midwest Classic Edition) (08-06-2002) (Billy Eno)\"},\n\t\"E171558C51BB3BAC97BFA79FA2C1A19C\":{n:\"Warring Worms (Tim Strauss Edition) (20-12-2002) (Billy Eno)\"},\n\t\"0D7E630A14856F4D52C9666040961D4D\":{n:\"Wavy Line Test (PD)\"},\n\t\"5C73693A89B06E5A09F1721A13176F95\":{n:\"Wavy Line Test 2 (PD)\"},\n\t\"BCE4C291D0007F16997FAA5C4DB0A6B8\":{n:\"Weltraumtunnel (1983) (Quelle) (PAL)\"},\n\t\"D47387658ED450DB77C3F189B969CC00\":{n:\"Westward Ho (1982) (PlayAround) (PAL)\"},\n\t\"4C39A2C97917D3D71739B3E21F60BBA5\":{n:\"Whale (Sub Scan Hack)\"},\n\t\"AB10F2974DEE73DAB4579F0CAB35FCA6\":{n:\"Wilma Wanderer (1983) (ITT Family Games) (PAL)\"},\n\t\"4E02880BEEB8DBD4DA724A3F33F0971F\":{n:\"Wing War (1983) (Imagic) (PAL)\"},\n\t\"9D2938EB2B17BB73E9A79BBC06053506\":{n:\"Wing War (1983) (Imagic) (PAL) [a]\"},\n\t\"0CDD9CC692E8B04BA8EB31FC31D72E5E\":{n:\"Wing War (Thomas Jentzsch)\"},\n\t\"8E48EA6EA53709B98E6F4BD8AA018908\":{n:\"Wings (06-03-1983) (CBS Electronics) (Prototype)\",c:1},\n\t\"827A22B9DFFEE24E93ED0DF09FF8414A\":{n:\"Wings (10-10-1983) (CBS Electronics) (Prototype) (PAL)\",c:1},\n\t\"83FAFD7BD12E3335166C6314B3BDE528\":{n:\"Winter Games (1987) (Epyx)\"},\n\t\"8C36ED2352801031516695D1EEEFE617\":{n:\"Winter Games (1987) (Epyx) (PAL)\"},\n\t\"6C1553CA90B413BF762DFC65F2B881C7\":{n:\"Winterjagd (1983) (Quelle) (PAL)\"},\n\t\"7B24BFE1B61864E758ADA1FE9ADAA098\":{n:\"Wizard (1980) (Atari) (Prototype)\"},\n\t\"3B86A27132FB74D9B35D4783605A1BCB\":{n:\"Wizard (1980) (Atari) (Prototype) (4K)\"},\n\t\"1F40EEFC7447336AE6CD8FFA5EB325BE\":{n:\"Wizard (1980) (Atari) (Prototype) (4K) [a]\"},\n\t\"C43BD363E1F128E73BA5F0380B6FD7E3\":{n:\"Wizard (1980) (Atari) (Prototype) [a]\"},\n\t\"7E8AA18BC9502EB57DAAF5E7C1E94DA7\":{n:\"Wizard of Wor (1982) (CBS Electronics)\",c:1},\n\t\"663EF22EB399504D5204C543B8A86BCD\":{n:\"Wizard of Wor (1982) (CBS Electronics) (PAL)\",c:1},\n\t\"EC3BEB6D8B5689E867BAFB5D5F507491\":{n:\"Word Zapper (1982) (U.S. Games)\"},\n\t\"3A53963F053B22599DB6AC9686F7722F\":{n:\"Word Zapper (208 in 1) (Unknown) (PAL)\"},\n\t\"E1143B72A30D4D3FEE385EEC38B4AA4D\":{n:\"Word Zapper (Unknown)\"},\n\t\"37527966823EE9243D34C7DA8302774F\":{n:\"Word Zapper (Unknown) (PAL)\"},\n\t\"2FACD460A6828E0E476D3AC4B8C5F4F7\":{n:\"Words-Attack (1983) (Sancho) (PAL)\",c:1},\n\t\"130C5742CD6CBE4877704D733D5B08CA\":{n:\"World End (1983) (Home Vision) (PAL)\"},\n\t\"E62E60A3E6CB5563F72982FCD83DE25A\":{n:\"World End (Jone Yuan)\"},\n\t\"87F020DAA98D0132E98E43DB7D8FEA7E\":{n:\"Worm War I (1982) (20th Century Fox)\"},\n\t\"007D18DEDC1F0565F09C42AA61A6F585\":{n:\"Worm War I (1983) (CCE)\"},\n\t\"FB531FEBF8E155328EC0CD39EF77A122\":{n:\"Worm War I (208 in 1) (Unknown) (PAL)\",c:1},\n\t\"52B448757081FD9FABF859F4E2F91F6B\":{n:\"Worm War I (Unknown) (PAL)\"},\n\t\"5C0520C00163915A4336E481CA4E7EF4\":{n:\"Wuestenschlacht (1983) (Quelle) (PAL)\"},\n\t\"332F01FD18E99C6584F61AA45EE7791E\":{n:\"X'Mission (Unknown) (PAL)\",c:1},\n\t\"0D35618B6D76DDD46D2626E9E3E40DB5\":{n:\"X-Doom V.26 (PD)\"},\n\t\"F613AAD84D2163D6B197B220BFEC1B7E\":{n:\"X-Doom V.27 (PD)\"},\n\t\"5961D259115E99C30B64FE7058256BCF\":{n:\"X-Man (1983) (Universal)\"},\n\t\"5E201D6BFC520424A28F129EE5E56835\":{n:\"X-Man (1983) (Universal) (PAL)\"},\n\t\"F38358CD8F5ECFEDFFD5ACA1AA939F18\":{n:\"X-Man (1983) (Universal) [a]\"},\n\t\"9E2C7299C69B602443D327C7DAD51CBF\":{n:\"Xaxyrax Road (Charles Morgan) (Hack)\"},\n\t\"972486110933623039A3581DB308FDA6\":{n:\"Xeno Plus (Hack)\"},\n\t\"EAF744185D5E8DEF899950BA7C6E7BB5\":{n:\"Xenophobe (1990) (Atari)\"},\n\t\"F02BA8B5292BF3017D10553C9B7B2861\":{n:\"Xenophobe (1990) (Atari) (PAL)\"},\n\t\"5494B9EE403D9757F0FD1F749E80214A\":{n:\"Xenophobe Arcade (2003) (Larry Petit) (Hack)\"},\n\t\"284CA61B2407BDBA3938048B0A559015\":{n:\"Xevious (05-25-1983) (Atari) (Prototype)\",c:1},\n\t\"C6688781F4AB844852F4E3352772289B\":{n:\"Xevious (08-02-1983) (Atari) (Prototype)\",c:1},\n\t\"24385BA7F5109FBE76AADC0A375DE573\":{n:\"Xevious (CCE)\",c:1},\n\t\"D090836F0A4EA8DB9AC7ABB7D6ADF61E\":{n:\"Yahtzee (Hozer Video Games)\",c:1},\n\t\"096649575E451508006B17E0353259A5\":{n:\"Yar Vs. Yar (2002) (Justin J. Scott) (Hack)\",c:1},\n\t\"159E5CD6CCB968015F49AED5ADBC91EB\":{n:\"Yar's Defeat (2002) (Justin J. Scott) (Hack)\",c:1},\n\t\"C5930D0E8CDAE3E037349BFA08E871BE\":{n:\"Yars' Revenge (1982) (Atari)\",c:1},\n\t\"E91D2ECF8803AE52B55BBF105AF04D4B\":{n:\"Yars' Revenge (1982) (Atari) (PAL)\",c:1},\n\t\"75EA60884C05BA496473C23A58EDF12F\":{n:\"Yars' Revenge (1982) (Atari) (PAL) [a]\",c:1},\n\t\"5F681403B1051A0822344F467B05A94D\":{n:\"Yars' Revenge (1982) (Atari) [a]\",c:1},\n\t\"2F7772879A1ED04F660AA9D77A86A4BD\":{n:\"Yars' Revenge (Genesis)\",c:1},\n\t\"522C9CF684ECD72DB2F85053E6F6F720\":{n:\"Year 1999, The (Rainbow Vision) (PAL)\"},\n\t\"2179DFD7EDEE76EFAFE698C1BC763735\":{n:\"Yellow Submarine (Cody Pittman) (PD)\"},\n\t\"3856B9425CC0185ED770376A62AF0282\":{n:\"Yellow Submarine (Kyle Pittman) (Hack)\"},\n\t\"C1E6E4E7EF5F146388A090F1C469A2FA\":{n:\"Z-Tack (1983) (Bomb)\"},\n\t\"D6DC9B4508DA407E2437BFA4DE53D1B2\":{n:\"Z-Tack (1983) (Bomb) (PAL)\"},\n\t\"25BB080457351BE724AAC8A02021AA92\":{n:\"Zaxxon (1982) (CBS Electronics) (PAL)\"},\n\t\"EEA0DA9B987D661264CCE69A7C13C3BD\":{n:\"Zaxxon (1982) (Coleco)\"},\n\t\"1367E41858BE525710EB04D0DAB53505\":{n:\"Zelda (2003) (Kyle Pittman) (Hack)\"},\n\t\"C5A76BAFC4676EDB76E0126FB9F0FB2D\":{n:\"Zero Patrol (Charles Morgan) (Hack)\"},\n\t\"692202772D8B38CCF85A90C8003A1324\":{n:\"Zi - The Flie Buster (2002) (Fernando Mora) (PD)\"},\n\t\"FB833ED50C865A9A505A125FC9D79A7E\":{n:\"Zoo Fun (1983) (Home Vision) (PAL)\"},\n\t\"0FCFF6FE3B0769AD5D0CF82814D2A6D9\":{n:\"Zoo Fun (Suntek) (PAL)\"},\n\t\"A336BEAC1F0A835614200ECD9C41FD70\":{n:\"Zoo Keeper Sounds (1984) (Atari) (Prototype)\"},\n\t\"527B2893F202E0B4930E18E739C81EF4\":{n:\"Star Castle Arcade 124cu\",l:\"Star Castle Arcade\",c:1},\n\t\"2CEE5D587E6A2240233C93A5035D5748\":{n:\"Star Castle Arcade 124\",l:\"Star Castle Arcade\",c:1},\n\t\"DCBDD2C1E201637C30369CE657E1B5CC\":{n:\"Star Castle Arcade 133cu\",l:\"Star Castle Arcade\",c:1},\n\t\"B503531C719AECEF6E97C4961F97F5E8\":{n:\"Star Castle Arcade 133\",l:\"Star Castle Arcade\",c:1},\n\t\"33AB116244C57F6726D0D64BA9F5B6A4\":{n:\"Star Castle Arcade 140cu\",l:\"Star Castle Arcade\",c:1},\n\t\"15A6D61D04D50B5C4DC77964AF812469\":{n:\"Star Castle Arcade 140\",l:\"Star Castle Arcade\",c:1}\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/CartridgeFormats.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.CartridgeFormats = {\n\n    \"4K\": {\n        name: \"4K\",\n        desc: \"4K Atari\",\n        priority: 101,\n        tryFormat: function (rom) {\n            if (rom.content.length >= 8 && rom.content.length <= 4096 && 4096 % rom.content.length === 0) return this;\n        },\n        createCartridgeFromRom: function (rom) {\n            return new jt.Cartridge4K(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge4K.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"CV\": {\n        name: \"CV\",\n        desc: \"2K Commavid +RAM\",\n        priority: 102,\n        tryFormat: function (rom) {\n            if (rom.content.length === 2048 || rom.content.length === 4096) return this;\t// Also accepts 4K ROMs\n        },\n        createCartridgeFromRom: function (rom) {\n            return new jt.Cartridge2K_CV(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge2K_CV.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"E0\": {\n        name: \"E0\",\n        desc: \"8K Parker Bros.\",\n        priority: 102,\n        tryFormat: function (rom) {\n            if (rom.content.length === 8192) return this;\n        },\n        createCartridgeFromRom: function (rom) {\n            return new jt.Cartridge8K_E0(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_E0.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"F0\": {\n        name: \"F0\",\n        desc: \"64K Dynacom Megaboy\",\n        priority: 101,\n        tryFormat: function (rom) {\n            if (rom.content.length === 65536) return this;\n        },\n        createCartridgeFromRom: function (rom) {\n            return new jt.Cartridge64K_F0(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge64K_F0.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"FE\": {\n        name: \"FE\",\n        desc: \"8K Robotank/Decathlon\",\n        priority: 103,\n        tryFormat: function (rom) {\n            if (rom.content.length === 8192) return this;\n        },\n        createCartridgeFromRom: function (rom) {\n            return new jt.Cartridge8K_FE(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_FE.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"E7\": {\n        name: \"E7\",\n        desc: \"16K M-Network\",\n        priority: 102,\n        tryFormat: function (rom) {\n            if (rom.content.length === 16384) return this;\n        },\n        createCartridgeFromRom: function (rom) {\n            return new jt.Cartridge16K_E7(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge16K_E7.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"F8\": {\n        name: \"F8\",\n        desc: \"8K Atari (+RAM)\",\n        priority: 101,\n        tryFormat: function(rom) {\n            if (rom.content.length === 8192) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.CartridgeBankedByMaskedRange(rom, this, 0x0ff8, null, 128);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"F6\": {\n        name: \"F6\",\n        desc: \"16K Atari (+RAM)\",\n        priority: 101,\n        tryFormat: function(rom) {\n            if (rom.content.length === 16384) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.CartridgeBankedByMaskedRange(rom, this, 0x0ff6, null, 128);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"F4\": {\n        name: \"F4\",\n        desc: \"32K Atari (+RAM)\",\n        priority: 101,\n        tryFormat: function(rom) {\n            if (rom.content.length === 32768) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.CartridgeBankedByMaskedRange(rom, this, 0x0ff4, null, 128);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"FA2cu\": {\n        name: \"FA2cu\",\n        desc: \"32K CBS RAM+ CU Image\",\n        priority: 103,\n        tryFormat: function(rom) {\n            if (rom.content.length === 32768) {\n                // Check for the values $10adab1e, for \"loadable\", starting at position 32 (33rd byte)\n                // This is a hint that the content is in CU format\n                var foundHint = jt.Util.arraysEqual(rom.content.slice(32, 32 + 4), this.cuMagicWord);\n                this.priority = 103 - (foundHint ? 30 : 0);\n                return this;\n            }\n        },\n        createCartridgeFromRom: function(rom) {\n            // ROM is only 28K. The first 1024 bytes are custom ARM content. ROM begins after that\n            return new jt.Cartridge24K_28K_32K_FA2(rom, this, 1024);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(state, cart);\n        },\n        cuMagicWord: [0x1e, 0xab, 0xad, 0x10]\n    },\n\n    \"FA2\": {\n        name: \"FA2\",\n        desc: \"24K/28K/32K CBS RAM+\",\n        priority: 102,\n        tryFormat: function(rom) {\n            if (rom.content.length === 24576 || rom.content.length === 28672 || rom.content.length === 32768) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge24K_28K_32K_FA2(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge24K_28K_32K_FA2.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"FA\": {\n        name: \"FA\",\n        desc: \"12K CBS RAM Plus\",\n        priority: 101,\n        tryFormat: function(rom) {\n            if (rom.content.length === 12288) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.CartridgeBankedByMaskedRange(rom, this, 0x0ff8, true, 256);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"EF\": {\n        name: \"EF\",\n        desc: \"8K-64K H. Runner (+RAM)\",\n        priority: 114,\n        tryFormat: function(rom) {\n            if (rom.content.length % 4096 === 0 && rom.content.length >= 8192 && rom.content.length <= 65536) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.CartridgeBankedByMaskedRange(rom, this, 0x0fe0, null, 128);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.CartridgeBankedByMaskedRange.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"DPC\": {\n        name: \"DPC\",\n        desc: \"10K DPC Pitfall 2 (Enhanced)\",\n        priority: 101,\n        tryFormat: function(rom) {\n            if (rom.content.length >= (8192 + 2048) && rom.content.length <= (8192 + 2048 + 256)) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge10K_DPCa(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge10K_DPCa.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"3F\": {\n        name: \"3F\",\n        desc: \"8K-512K Tigervision\",\n        priority: 112,\n        tryFormat: function(rom) {\n            if (rom.content.length % 2048 === 0 && rom.content.length >= 2048 && rom.content.length <= 256 * 2048) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge8K_512K_3F(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_512K_3F.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"3E\": {\n        name: \"3E\",\n        desc: \"8K-512K Tigervision (+RAM)\",\n        priority: 111,\n        tryFormat: function(rom) {\n            if (rom.content.length % 2048 === 0 && rom.content.length >= 2048 && rom.content.length <= 256 * 2048) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge8K_512K_3E(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_512K_3E.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"X07\": {\n        name: \"X07\",\n        desc: \"64K AtariAge\",\n        priority: 102,\n        tryFormat: function(rom) {\n            if (rom.content.length === 65536) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge64K_X07(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge64K_X07.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"0840\": {\n        name: \"0840\",\n        desc: \"8K Econobanking\",\n        priority: 116,\n        tryFormat: function(rom) {\n            if (rom.content.length === 8192) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge8K_0840(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_0840.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"UA\": {\n        name: \"UA\",\n        desc: \"8K UA Limited\",\n        priority: 115,\n        tryFormat: function(rom) {\n            if (rom.content.length === 8192) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge8K_UA(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_UA.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"SB\": {\n        name: \"SB\",\n        desc: \"8K-256K Superbanking\",\n        priority: 113,\n        tryFormat: function(rom) {\n            if (rom.content.length % 4096 === 0 && rom.content.length >= 8192 && rom.content.length <= 64 * 4096) return this;\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge8K_256K_SB(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_256K_SB.recreateFromSaveState(state, cart);\n        }\n    },\n\n    \"AR\": {\n        name: \"AR\",\n        desc: \"8K-64K Arcadia/Supercharger\",\n        priority: 101,\n        tryFormat: function(rom) {\n            // Any number of parts between 1 and 8\n            if (rom.content.length % jt.Cartridge8K_64K_AR.PART_SIZE === 0 && rom.content.length / jt.Cartridge8K_64K_AR.PART_SIZE >= 1\n                && rom.content.length / jt.Cartridge8K_64K_AR.PART_SIZE <= 8) {\n                // Check if the content starts with Part 0\n                if (jt.Cartridge8K_64K_AR.checkTape(rom)) return this;       // Accepts only a Tape Start or Full Tape\n            }\n        },\n        createCartridgeFromRom: function(rom) {\n            return new jt.Cartridge8K_64K_AR(rom, this);\n        },\n        recreateCartridgeFromSaveState: function(state, cart) {\n            return jt.Cartridge8K_64K_AR.recreateFromSaveState(state, cart);\n        }\n    }\n\n};\n\n\n// Formats available for user selection, in order\njt.CartridgeFormatsUserOptions = [\n    \"4K\",\n    \"CV\",\n    \"E0\",\n    \"F0\",\n    \"FE\",\n    \"E7\",\n    \"F8\",\n    \"F6\",\n    \"F4\",\n    \"FA2cu\",\n    \"FA2\",\n    \"FA\",\n    \"EF\",\n    \"DPC\",\n    \"3F\",\n    \"3E\",\n    \"X07\",\n    \"0840\",\n    \"UA\",\n    \"SB\",\n    \"AR\"\n];"
  },
  {
    "path": "src/main/atari/cartridge/ROM.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.ROM = function(source, content, info, formatHint) {\n\"use strict\";\n\n    this.source = source;\n    this.content = content;\n    if (info) this.info = info;\n    else this.info = jt.CartridgeCreator.produceInfo(this, formatHint);\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function(includeContent) {\n        return {\n            s: this.source,\n            i: this.info,\n            c: includeContent ? jt.Util.compressInt8BitArrayToStringBase64(this.content) : null     // content may not be needed in savestates\n        };\n    };\n\n};\n\njt.ROM.loadState = function(state) {\n\"use strict\";\n    var c = state.c ? jt.Util.uncompressStringBase64ToInt8BitArray(state.c) : null;\n    return new jt.ROM(state.s, c, state.i);\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge10K_DPCa.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K + 2K \"DPCa\" (Pitfall2) format, enhanced version with TIA audio updates every DPC audio clock!\n\njt.Cartridge10K_DPCa = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.powerOn = function() {\n        audioClockStep = AUDIO_CLOCK_DEFAULT_STEP;\n        audioClockCycles = 0;\n    };\n\n    this.connectBus = function(bus) {\n        dpcAudioChannel = bus.getTia().getAudioOutput().getChannel0();\n    };\n\n    this.needsAudioClock = function() {\n        return true;\n    };\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        // Check for DPC register read\n        if (maskedAddress <= 0x03f || (maskedAddress >= 0x800 && maskedAddress <= 0x83f))\n            return readDPCRegister(maskedAddress & 0x00ff);\n        // Always add the correct bank offset\n        return bytes[bankAddressOffset + maskedAddress];\t// ROM\n    };\n\n    this.write = function(address, val) {\n        var maskedAddress = maskAddress(address);\n        // Check for DPC register write\n        if ((maskedAddress >= 0x040 && maskedAddress <= 0x07f) ||\n            (maskedAddress >= 0x840 && maskedAddress <= 0x87f))\n            writeDPCRegister(maskedAddress & 0x00ff, val);\n    };\n\n    this.audioClockPulse = function() {\n        if (((audioClockCycles + audioClockStep) | 0) > (audioClockCycles | 0)) {\n            // Actual integer clock\n            for (var f = 5; f <= 7; f++) {\n                if (!audioMode[f]) continue;\n                fetcherPointer[f]--;\n                if ((fetcherPointer[f] & 0x00ff) == 0xff)\n                    setFetcherPointer(f, fetcherPointer[f] & 0xff00 | fetcherStart[f]);\n                updateFetcherMask(f);\n                if (!audioChanged) audioChanged = true;\n            }\n        }\n        audioClockCycles += audioClockStep;\n        if (!audioChanged) return;\n        // Send a volume update directly to TIA Audio Channel 0\n        updateAudioOutput();\n        dpcAudioChannel.setVolume(audioOutput);\n    };\n\n    var maskAddress = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        // Check and perform bank-switch as necessary\n        if (maskedAddress === 0xff8) bankAddressOffset = 0;\n        else if (maskedAddress === 0xff9) bankAddressOffset = 4096;\n        return maskedAddress;\n    };\n\n    var updateAudioOutput = function() {\n        audioOutput = AUDIO_MIXED_OUTPUT[\n        (audioMode[5] ? fetcherMask[5] & 0x04 : 0) |\n        (audioMode[6] ? fetcherMask[6] & 0x02 : 0) |\n        (audioMode[7] ? fetcherMask[7] & 0x01 : 0)];\n        audioChanged = false;\n    };\n\n    // TODO Fix bug when reading register as normal fetcher while in audio mode\n    var readDPCRegister = function(reg) {\n        var res;\n        // Random number\n        if (reg >= 0x00 && reg <= 0x03) {\n            clockRandomNumber();\n            return randomNumber;\n        }\n        // Audio value (MOVAMT not supported)\n        if (reg >= 0x04 && reg <= 0x07) {\n            if (audioChanged) updateAudioOutput();\n            return audioOutput;\n        }\n        // Fetcher unmasked value\n        if (reg >= 0x08 && reg <= 0x0f) {\n            res = bytes[DPC_ROM_END - fetcherPointer[reg - 0x08]];\n            clockFetcher(reg - 0x08);\n            return res;\n        }\n        // Fetcher masked value\n        if (reg >= 0x10 && reg <= 0x17) {\n            res = bytes[DPC_ROM_END - fetcherPointer[reg - 0x10]] & fetcherMask[reg - 0x10];\n            clockFetcher(reg - 0x10);\n            return res;\n        }\n        // Fetcher masked value, nibbles swapped\n        if (reg >= 0x18 && reg <= 0x1f) {\n            res = bytes[DPC_ROM_END - fetcherPointer[reg - 0x18]] & fetcherMask[reg - 0x18];\n            clockFetcher(reg - 0x18);\n            res = (res & 0x0f << 4) | (res & 0xf0 >>> 4);\n            return res;\n        }\n        // Fetcher masked value, byte reversed\n        if (reg >= 0x20 && reg <= 0x27) {\n            res = bytes[DPC_ROM_END - fetcherPointer[reg - 0x20]] & fetcherMask[reg - 0x20];\n            clockFetcher(reg - 0x20);\n            res = (res & 0x01 << 7) |  (res & 0x02 << 5) |  (res & 0x04 << 3) |  (res & 0x08 << 1) |\n                  (res & 0x10 >>> 1) | (res & 0x20 >>> 3) | (res & 0x40 >>> 5) | (res & 0x80 >> 7);\n            return res;\n        }\n        // Fetcher masked value, byte rotated right\n        if (reg >= 0x28 && reg <= 0x2f) {\n            res = bytes[DPC_ROM_END - fetcherPointer[reg - 0x28]] & fetcherMask[reg - 0x28];\n            clockFetcher(reg - 0x28);\n            res = ((res >>> 1) | (res << 7)) & 0xff;\n            return res;\n        }\n        // Fetcher masked value, byte rotated left\n        if (reg >= 0x30 && reg <= 0x37) {\n            res = bytes[DPC_ROM_END - fetcherPointer[reg - 0x30]] & fetcherMask[reg - 0x30];\n            clockFetcher(reg - 0x30);\n            res = ((res << 1) | ((res >> 7) & 0x01)) & 0xff;\n            return res;\n        }\n        // Fetcher mask\n        if (reg >= 0x38 && reg <= 0x3f) {\n            return fetcherMask[reg - 0x38];\n        }\n        return 0;\n    };\n\n    var writeDPCRegister = function(reg, b) {\n        // Fetchers Start\n        if (reg >= 0x40 && reg <= 0x47) {\n            var f = reg - 0x40;\n            fetcherStart[f] = b;\n            if ((fetcherPointer[f] & 0xff) === fetcherStart[f]) fetcherMask[f] = 0xff;\n            return;\n        }\n        // Fetchers End\n        if (reg >= 0x48 && reg <= 0x4f) {\n            fetcherEnd[reg - 0x48] = b; fetcherMask[reg - 0x48] = 0x00; return;\n        }\n        // Fetchers Pointers LSB\n        if (reg >= 0x50 && reg <= 0x57) {\n            setFetcherPointer(reg - 0x50, (fetcherPointer[reg - 0x50] & 0xff00) | (b & 0xff)); return;\t\t\t// LSB\n        }\n        // Fetchers 0-3 Pointers MSB\n        if (reg >= 0x58 && reg <= 0x5b) {\n            setFetcherPointer(reg - 0x58, (fetcherPointer[reg - 0x58] & 0x00ff) | ((b & (0x07)) << 8)); return;\t// MSB bits 0-2\n        }\n        // Fetchers 4 Pointers MSB (Draw Line enable not supported)\n        if (reg == 0x5c) {\n            setFetcherPointer(4, (fetcherPointer[4] & 0x00ff) | ((b & (0x07)) << 8));\t\t\t\t\t\t\t// MSB bits 0-2\n            return;\n        }\n        // Fetchers 5-7 Pointers MSB and Audio Mode enable\n        if (reg >= 0x5d && reg <= 0x5f) {\n            setFetcherPointer(reg - 0x58, (fetcherPointer[reg - 0x58] & 0x00ff) + ((b & (0x07)) << 8));\t\t\t// MSB bits 0-2\n            audioMode[reg - 0x58] = ((b & 0x10) >>> 4);\n            return;\n        }\n        // Draw Line MOVAMT value (not supported)\n        if (reg >= 0x60 && reg <= 0x67) {\n            return;\n        }\n        // 0x68 - 0x6f Not used\n        // Random Number reset\n        if (reg >= 0x70 && reg <= 0x77) {\n            randomNumber = 0x00;\n        }\n        // 0x78 - 0x7f Not used\n    };\n\n    var setFetcherPointer = function(f, pointer) {\n        fetcherPointer[f] = pointer;\n    };\n\n    var clockFetcher = function(f) {\n        var newPointer = fetcherPointer[f] - 1;\n        if (newPointer < 0 ) newPointer = 0x07ff;\n        setFetcherPointer(f, newPointer);\n        updateFetcherMask(f);\n    };\n\n    var updateFetcherMask = function(f) {\n        var lsb = fetcherPointer[f] & 0xff;\n        if (lsb == fetcherStart[f]) fetcherMask[f] = 0xff;\n        else if (lsb == fetcherEnd[f]) fetcherMask[f] = 0x00;\n    };\n\n    var clockRandomNumber = function() {\n        randomNumber = ((randomNumber << 1) |\n            (~((randomNumber >> 7) ^ (randomNumber >> 5) ^\n            (randomNumber >> 4) ^ (randomNumber >> 3)) & 0x01)) & 0xff;\n        if (randomNumber === 0xff) randomNumber = 0;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset,\n            rn: randomNumber,\n            fp: jt.Util.compressInt8BitArrayToStringBase64(fetcherPointer),\n            fs: jt.Util.compressInt8BitArrayToStringBase64(fetcherStart),\n            fe: jt.Util.compressInt8BitArrayToStringBase64(fetcherEnd),\n            fm: jt.Util.compressInt8BitArrayToStringBase64(fetcherMask),\n            a:  jt.Util.compressInt8BitArrayToStringBase64(audioMode)\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n        randomNumber = state.rn;\n        fetcherPointer = jt.Util.uncompressStringBase64ToInt8BitArray(state.fp, fetcherPointer);\n        fetcherStart = jt.Util.uncompressStringBase64ToInt8BitArray(state.fs, fetcherStart);\n        fetcherEnd = jt.Util.uncompressStringBase64ToInt8BitArray(state.fe, fetcherEnd);\n        fetcherMask = jt.Util.uncompressStringBase64ToInt8BitArray(state.fm, fetcherMask);\n        audioMode = jt.Util.uncompressStringBase64ToInt8BitArray(state.a, audioMode);\n    };\n\n\n    var AUDIO_MIXED_OUTPUT = [0x0, 0x5, 0x5, 0xa, 0x5, 0xa, 0xa, 0xf];\n    // var AUDIO_MIXED_OUTPUT = [0x0, 0x4, 0x5, 0x9, 0x6, 0xa, 0xb, 0xf];   // Per specification\n\n    var ADDRESS_MASK = 0x0fff;\n    var AUDIO_CLOCK_DEFAULT_STEP = 0.62;\n    var DPC_ROM_END = 8192 + 2048 - 1;\n\n    var dpcAudioChannel;\n\n    var bytes;\n    var bankAddressOffset = 0;\n    var randomNumber = 0;\n    var fetcherPointer = jt.Util.arrayFill(new Array(8), 0);\n    var fetcherStart =   jt.Util.arrayFill(new Array(8), 0);\n    var fetcherEnd =     jt.Util.arrayFill(new Array(8), 0);\n    var fetcherMask =    jt.Util.arrayFill(new Array(8), 0);\n    var audioMode =      jt.Util.arrayFill(new Array(8), 0);\n    var audioClockStep = AUDIO_CLOCK_DEFAULT_STEP;\n    var audioClockCycles = 0;\n    var audioChanged = true;\n    var audioOutput = 0;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge10K_DPCa.prototype = jt.Cartridge.base;\n\njt.Cartridge10K_DPCa.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge10K_DPCa();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge16K_E7.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 16K \"E7\" M-Network format\n\njt.Cartridge16K_E7 = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM Slice1 (always ON)\n        if (maskedAddress >= 0x0900 && maskedAddress <= 0x09ff)\n            return extraRAM[extraRAMSlice1Offset + maskedAddress - 0x0900];\n        // Check for Extra RAM Slice0\n        if (extraRAMSlice0Active && maskedAddress >= 0x0400 && maskedAddress <= 0x07ff)\n            return extraRAM[maskedAddress - 0x0400];\n        // ROM\n        if (maskedAddress < ROM_FIXED_SLICE_START)\n            return bytes[bankAddressOffset + maskedAddress];\t\t// ROM Selectable Slice\n        else\n            return bytes[ROM_FIXED_SLICE_OFFSET + maskedAddress];\t// ROM Fixed Slice\n    };\n\n    this.write = function(address, val) {\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM Slice1 (always ON)\n        if (maskedAddress >= 0x0800 && maskedAddress <= 0x08ff)\n            extraRAM[extraRAMSlice1Offset + maskedAddress - 0x0800] = val;\n        else // Check for Extra RAM Slice0\n            if (extraRAMSlice0Active && maskedAddress <= 0x03ff)\n                extraRAM[maskedAddress] = val;\n    };\n\n    var maskAddress = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        // Check if address is within range of bank selection\n        if (maskedAddress >= 0x0fe0 && maskedAddress <= 0x0feb) {\n            if (/* maskedAddress >= 0x0fe0 && */ maskedAddress <= 0x0fe6)\t    // Selectable ROM Slice\n                bankAddressOffset = BANK_SIZE * (maskedAddress - 0x0fe0);\n            else if (maskedAddress == 0x0fe7)\t\t\t\t\t\t\t\t    // Extra RAM Slice0\n                extraRAMSlice0Active = true;\n            else if (/* maskedAddress >= 0x0fe8 && */ maskedAddress <= 0x0feb)\t// Extra RAM Slice1\n                extraRAMSlice1Offset = EXTRA_RAM_SLICE1_START + EXTRA_RAM_SLICE1_BANK_SIZE * (maskedAddress - 0x0fe8);\n        }\n        return maskedAddress;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset,\n            rs: extraRAMSlice0Active,\n            ro: extraRAMSlice1Offset,\n            ra: jt.Util.compressInt8BitArrayToStringBase64(extraRAM)\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n        extraRAMSlice0Active = state.rs;\n        extraRAMSlice1Offset = state.ro;\n        extraRAM = jt.Util.uncompressStringBase64ToInt8BitArray(state.ra, extraRAM);\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n\n    var EXTRA_RAM_SLICE1_START = 1024;\n\n    var extraRAM = jt.Util.arrayFill(new Array(2048), 0);\n    var extraRAMSlice0Active = false;\n    var extraRAMSlice1Offset = EXTRA_RAM_SLICE1_START;\n\n    var ADDRESS_MASK = 0x0fff;\n    var SIZE = 16384;\n    var BANK_SIZE = 2048;\n    var ROM_FIXED_SLICE_START = 0x0800;\n    var ROM_FIXED_SLICE_OFFSET = SIZE - BANK_SIZE - ROM_FIXED_SLICE_START;\n    var EXTRA_RAM_SLICE1_BANK_SIZE = 256;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge16K_E7.prototype = jt.Cartridge.base;\n\njt.Cartridge16K_E7.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge16K_E7();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge24K_28K_32K_FA2.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 24K/28K/32K \"FA2\" CBS RAM Plus format\n// Also supports SC RAM Saving on Harmony Flash memory (emulated to a \"savestate\" file)\n\njt.Cartridge24K_28K_32K_FA2 = function(rom, format, pRomStartAddress) {\n\"use strict\";\n\n    var self = this;\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n        romStartAddress = pRomStartAddress || 0;\n        bankAddressOffset = romStartAddress;\n        var numBanks = (bytes.length - romStartAddress) / BANK_SIZE;\n        topBankSwitchAddress = baseBankSwitchAddress + numBanks - 1;\n    }\n\n    this.connectBus = function(pBus) {\n        bus = pBus;\n    };\n\n    this.connectSaveStateSocket = function(socket) {\n        saveStateSocket = socket;\n    };\n\n    this.read = function(address) {\n        var val;\n        var maskedAddress = maskAddress(address);\n\n        // Check for SuperChip Extra RAM reads\n        if (maskedAddress >= 256 && maskedAddress < (256 * 2))\n            val = extraRAM[maskedAddress - 256];\n        else\n            val = bytes[bankAddressOffset + maskedAddress];\n\n        // Normal behavior if not the Flash Operation Hotspot address\n        if (maskedAddress !== FLASH_OP_HOTSPOT) return val;\n\n        // Should trigger new operation?\n        if (harmonyFlashOpInProgress === 0) {\n            var op = extraRAM[FLASH_OP_CONTROL];\n            if (op === 1 || op === 2) {\n                performFlashOperation(op);\n                return val | 0x40;\t    // In progress, set bit 6\n            }\n        }\n\n        // Report operation completion\n        if (harmonyFlashOpInProgress !== 0) detectFlashOperationCompletion();\n        else return val & 0xbf;\t        // Not busy, clear bit 6\n\n        if (harmonyFlashOpInProgress !== 0) return val | 0x40;\t    // Still in progress, set bit 6\n        else return val & 0xbf;\t\t        \t\t\t\t\t\t// Finished, clear bit 6\n\n    };\n\n    this.write = function(address, val) {\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM writes\n        if (maskedAddress < 256) extraRAM[maskedAddress] = val;\n    };\n\n    var maskAddress = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        // Check and perform bank-switch as necessary\n        if (maskedAddress >= baseBankSwitchAddress && maskedAddress <= topBankSwitchAddress)\n            bankAddressOffset = romStartAddress + BANK_SIZE * (maskedAddress - baseBankSwitchAddress);\n        return maskedAddress;\n    };\n\n    var performFlashOperation = function(op) {\n        harmonyFlashOpInProgress = op;\n        harmonyFlashOpChecksCount = 0;\n        // 1 = read, 2 = write\n        if (op === 1) readMemoryFromFlash();\n        else if (op === 2) saveMemoryToFlash();\n    };\n\n    var readMemoryFromFlash = function() {\n        bus.getTia().getVideoOutput().showOSD(\"Reading from Cartridge Flash Memory...\", true);\n        if (saveStateSocket) {\n            var data = saveStateSocket.getMedia().loadResource(flashMemoryResourceName());\n            if (data) harmonyFlashMemory = jt.Util.uncompressStringBase64ToInt8BitArray(data, harmonyFlashMemory);\n        }\n        jt.Util.arrayCopy(harmonyFlashMemory, 0, extraRAM);\n    };\n\n    var saveMemoryToFlash = function() {\n        bus.getTia().getVideoOutput().showOSD(\"Writing to Cartridge Flash Memory...\", true);\n        jt.Util.arrayCopy(extraRAM, 0, harmonyFlashMemory);\n        if (saveStateSocket)\n            saveStateSocket.getMedia().saveResource(flashMemoryResourceName(), jt.Util.compressInt8BitArrayToStringBase64(harmonyFlashMemory));\n    };\n\n    var detectFlashOperationCompletion = function() {\n        if (++harmonyFlashOpChecksCount > 140) {\n            harmonyFlashOpChecksCount = 0;\n            harmonyFlashOpInProgress = 0;\n            extraRAM[FLASH_OP_CONTROL] = 0;\t\t\t// Set return code for Successful operation\n            bus.getTia().getVideoOutput().showOSD(\"Done.\", true);\n            // Signal a external state modification, Flash memory may have been loaded from file and changed\n            if (saveStateSocket) saveStateSocket.externalStateChange();\n        }\n    };\n\n    var flashMemoryResourceName = function() {\n        return \"hfm\" + self.rom.info.h;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            rs: romStartAddress,\n            bo: bankAddressOffset,\n            tb: topBankSwitchAddress,\n            e: jt.Util.compressInt8BitArrayToStringBase64(extraRAM),\n            ho: harmonyFlashOpInProgress,\n            ht: harmonyFlashOpChecksCount\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        romStartAddress = state.rs || 0;\n        bankAddressOffset = state.bo;\n        topBankSwitchAddress =  state.tb;\n        extraRAM = jt.Util.uncompressStringBase64ToInt8BitArray(state.e, extraRAM);\n        harmonyFlashOpInProgress = state.ho || 0;\n        harmonyFlashOpChecksCount = state.ht || 0;\n    };\n\n\n    var bus;\n    var saveStateSocket;\n\n    var bytes;\n    var romStartAddress = 0;\n    var bankAddressOffset = 0;\n    var baseBankSwitchAddress = 0x0ff5;\n    var topBankSwitchAddress;\n    var extraRAM = jt.Util.arrayFill(new Array(256), 0);\n\n    var harmonyFlashOpChecksCount = 0;\n    var harmonyFlashOpInProgress = 0;\t\t\t\t\t// 0 = none, 1 = read, 2 = write\n    var harmonyFlashMemory = jt.Util.arrayFill(new Array(256), 0);\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n    var FLASH_OP_HOTSPOT = 0x0ff4;\n    var FLASH_OP_CONTROL = 0x00ff;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge24K_28K_32K_FA2.prototype = jt.Cartridge.base;\n\njt.Cartridge24K_28K_32K_FA2.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge24K_28K_32K_FA2();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge2K_CV.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 2K \"CV\" Commavid + 1K RAM format\n\njt.Cartridge2K_CV = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        // Always use a 4K ROM image, multiplying the ROM internally\n        bytes = new Array(4096);\n        self.bytes = bytes;\n        var len = rom.content.length;\n        for (var pos = 0; pos < bytes.length; pos += len)\n            jt.Util.arrayCopy(rom.content, 0, bytes, pos, len);\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM reads\n        if (maskedAddress < 0x0400)\t\t\t\t// RAM\n            return extraRAM[maskedAddress];\n        else\n            return bytes[maskedAddress];\t    // ROM\n    };\n\n    this.write = function(address, val) {\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM writes\n        if (maskedAddress >= 0x0400 && maskedAddress <= 0x07ff)\n            extraRAM[maskedAddress - 0x0400] = val;\n    };\n\n    var maskAddress = function(address) {\n        return address & ADDRESS_MASK;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b:  jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            ra: jt.Util.compressInt8BitArrayToStringBase64(extraRAM)\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        extraRAM = jt.Util.uncompressStringBase64ToInt8BitArray(state.ra, extraRAM);\n    };\n\n\n    var bytes;\n    var extraRAM = jt.Util.arrayFill(new Array(1024), 0);\n\n    var ADDRESS_MASK = 0x0fff;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge2K_CV.prototype = jt.Cartridge.base;\n\njt.Cartridge2K_CV.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge2K_CV();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge4K.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 4K unbanked format. Smaller ROMs will be copied multiple times to fill the entire 4K\n\njt.Cartridge4K = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        // Always use a 4K ROM image, multiplying the ROM internally\n        bytes = new Array(4096);\n        self.bytes = bytes;\n        var len = rom.content.length;\n        for (var pos = 0; pos < bytes.length; pos += len)\n            jt.Util.arrayCopy(rom.content, 0, bytes, pos, len);\n    }\n\n    this.read = function(address) {\n        return bytes[address & ADDRESS_MASK];\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes)\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n    };\n\n\n    var bytes;\n\n    var ADDRESS_MASK = 0x0fff;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge4K.prototype = jt.Cartridge.base;\n\njt.Cartridge4K.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge4K();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge64K_F0.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 64K \"F0\" Dynacom Megaboy format\n\njt.Cartridge64K_F0 = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        return bytes[bankAddressOffset + maskedAddress];\n    };\n\n    this.write = function(address, val) {\n        maskAddress(address);\n        // Writing to ROMs is possible, but nothing is changed\n    };\n\n    var maskAddress = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        // Check and perform bank-switch as necessary\n        if (maskedAddress == BANKSW_ADDRESS) {\t// Bank selection. Increments bank\n            bankAddressOffset += BANK_SIZE;\n            if (bankAddressOffset >= SIZE) bankAddressOffset = 0;\n        }\n        return maskedAddress;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n\n    var ADDRESS_MASK = 0x0fff;\n    var SIZE = 65536;\n    var BANK_SIZE = 4096;\n    var BANKSW_ADDRESS = 0x0ff0;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge64K_F0.prototype = jt.Cartridge.base;\n\njt.Cartridge64K_F0.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge64K_F0();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge64K_X07.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 64K \"X07\" AtariAge format\n\njt.Cartridge64K_X07 = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        // Always add the correct offset to access bank selected\n        return bytes[bankAddressOffset + (address & ADDRESS_MASK)];\n    };\n\n    this.performBankSwitchOnMonitoredAccess = function(address) {\n        if ((address & 0x180f) === 0x080d)\t\t                                            // Method 1\n            bankAddressOffset = ((address & 0x00f0) >> 4) * BANK_SIZE;\t                    // Pick bank from bits 7-4\n        else if (bankAddressOffset >= BANK_14_ADDRESS && (address & 0x1880) === 0x0000) \t// Method 2, only if at bank 14 or 15\n            bankAddressOffset = ((address & 0x0040) === 0 ? 14 : 15) * BANK_SIZE;\t        // Pick bank 14 or 15 from bit 6\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n    var BANK_14_ADDRESS = 14 * BANK_SIZE;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge64K_X07.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge64K_X07.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge64K_X07();\n    cart.loadState(state);\n    return cart;\n};\n\n\n\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_0840.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K \"0840\" Econobanking format\n\njt.Cartridge8K_0840 = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        // Always add the correct offset to access bank selected\n        return bytes[bankAddressOffset + (address & ADDRESS_MASK)];\n    };\n\n    this.performBankSwitchOnMonitoredAccess = function(address) {\n        var addrBank = address & 0x1840;\n        if (addrBank === 0x0800) {\n            if (bankAddressOffset !== 0) bankAddressOffset = 0;\n        } else if (addrBank === 0x0840) {\n            if (bankAddressOffset !== BANK_SIZE) bankAddressOffset = BANK_SIZE;\n        }\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_0840.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge8K_0840.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_0840();\n    cart.loadState(state);\n    return cart;\n};\n\n\n\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_256K_SB.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K-256K \"SB\" Superbanking format\n\njt.Cartridge8K_256K_SB = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n        maxBank = bytes.length / BANK_SIZE - 1;\n    }\n\n    this.read = function(address) {\n        // Always add the correct offset to access bank selected\n        return bytes[bankAddressOffset + (address & ADDRESS_MASK)];\n    };\n\n    this.performBankSwitchOnMonitoredAccess = function(address) {\n        if ((address & 0x1800) !== 0x0800) return;\n        var bank = address & 0x007f;\n        if (bank > maxBank) return;\n        bankAddressOffset = bank * BANK_SIZE;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset,\n            m: maxBank\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n        maxBank = state.m;\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n    var maxBank;\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_256K_SB.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge8K_256K_SB.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_256K_SB();\n    cart.loadState(state);\n    return cart;\n};\n\n\n\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_512K_3E.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K-512K \"3E\" Tigervision (+RAM) format\n\njt.Cartridge8K_512K_3E = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n        selectableSliceMaxBank = (bytes.length - BANK_SIZE) / BANK_SIZE - 1;\n        fixedSliceAddressOffset = bytes.length - BANK_SIZE * 2;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        if (maskedAddress >= FIXED_SLICE_START_ADDRESS)\t\t\t\t\t\t// ROM Fixed Slice\n            return bytes[fixedSliceAddressOffset + maskedAddress];\n        else\n        if (extraRAMBankAddressOffset >= 0 && maskedAddress < 0x0400)\t\t// RAM\n            return extraRAM[extraRAMBankAddressOffset + maskedAddress] || 0;\n        else\n            return bytes[bankAddressOffset + maskedAddress];\t\t\t\t// ROM Selectable Slice\n    };\n\n    this.write = function(address, val) {\n        // Check if Extra RAM bank is selected\n        if (extraRAMBankAddressOffset < 0) return;\n\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM writes\n        if (maskedAddress >= 0x0400 && maskedAddress <= 0x07ff)\n            extraRAM[extraRAMBankAddressOffset + maskedAddress - 0x0400] = val;\n    };\n\n    var maskAddress = function(address) {\n        return address & ADDRESS_MASK;\n    };\n\n    // Bank switching is done only on monitored writes\n    this.monitorBusBeforeWrite = function(address, data) {\n        // Perform ROM bank switching as needed\n        if (address === 0x003f) {\n            var bank = data & 0xff;\t\t// unsigned\n            if (bank <= selectableSliceMaxBank) {\n                bankAddressOffset = bank * BANK_SIZE;\n                extraRAMBankAddressOffset = -1;\n            }\n            return;\n        }\n        // Perform RAM bank switching as needed\n        if (address === 0x003e) {\n            var ramBank = data & 0xff;\t// unsigned\n            extraRAMBankAddressOffset = ramBank * EXTRA_RAM_BANK_SIZE;\n        }\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset,\n            sm: selectableSliceMaxBank,\n            fo: fixedSliceAddressOffset,\n            ro: extraRAMBankAddressOffset,\n            ra: jt.Util.compressInt8BitArrayToStringBase64(extraRAM)\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n        selectableSliceMaxBank = state.sm;\n        fixedSliceAddressOffset = state.fo;\n        extraRAMBankAddressOffset = state.ro;\n        extraRAM = jt.Util.uncompressStringBase64ToInt8BitArray(state.ra, extraRAM);\n    };\n\n\n    var bytes;\n\n    var EXTRA_RAM_BANK_SIZE = 1024;\n\n    var bankAddressOffset = 0;\n    var selectableSliceMaxBank;\n    var fixedSliceAddressOffset;\t\t                                // This slice is fixed at the last bank\n    var extraRAMBankAddressOffset = -1;\t\t                            // No Extra RAM bank selected\n    var extraRAM = jt.Util.arrayFill(new Array(EXTRA_RAM_BANK_SIZE), 0);   // Pre allocate minimum RAM bank for performance\n\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 2048;\n    var FIXED_SLICE_START_ADDRESS = 2048;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_512K_3E.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge8K_512K_3E.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_512K_3E();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_512K_3F.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K-512K \"Enhanced 3F\" Tigervision format\n\njt.Cartridge8K_512K_3F = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n        selectableSliceMaxBank = (bytes.length - BANK_SIZE) / BANK_SIZE - 1;\n        fixedSliceAddressOffset = bytes.length - BANK_SIZE * 2;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        if (maskedAddress >= FIXED_SLICE_START_ADDRESS)\t\t\t// Fixed slice\n            return bytes[fixedSliceAddressOffset + maskedAddress];\n        else\n            return bytes[bankAddressOffset + maskedAddress];\t// Selectable slice\n    };\n\n     // Bank switching is done only on monitored writes\n    this.monitorBusBeforeWrite = function(address, data) {\n        // Perform bank switching as needed\n        if (address <= 0x003f) {\n            var bank = data & 0xff;\t\t// unsigned\n            if (bank <= selectableSliceMaxBank)\n                bankAddressOffset = bank * BANK_SIZE;\n        }\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset,\n            sm: selectableSliceMaxBank,\n            fo: fixedSliceAddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n        selectableSliceMaxBank = state.sm;\n        fixedSliceAddressOffset = state.fo;\n    };\n\n\n    var bytes;\n\n    var bankAddressOffset = 0;\n    var selectableSliceMaxBank;\n    var fixedSliceAddressOffset;\t\t    // This slice is fixed at the last bank\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 2048;\n    var FIXED_SLICE_START_ADDRESS = 2048;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_512K_3F.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge8K_512K_3F.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_512K_3F();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_64K_AR.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the n * 8448 byte \"AR\" Arcadia/Starpath/Supercharger tape format\n\njt.Cartridge8K_64K_AR = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        // Cannot use the contents of the ROM directly, as cartridge is all RAM and can be modified\n        // Also, ROM content represents the entire tape and can have multiple parts\n        bytes = jt.Util.arrayFill(new Array(4 * BANK_SIZE));\n        self.bytes = bytes;\n        loadBIOS();\n        // Initialize Random seeds\n        for (var i = 0; i < 31; ++i) randomSeeds[i] = (Math.random() * 256) | 0;\n    }\n\n    this.powerOn = function() {\n        // Always start with bank configuration 000 (bank2, bank3 = BIOS ROM), writes disabled and BIOS ROM powered on\n        setControlRegister(0x00);\n        // Rewind Tape\n        tapeOffset = 0;\n        // BIOS will ask to load Part Number 0 at System Reset\n    };\n\n    this.connectBus = function(pBus) {\n        bus = pBus;\n    };\n\n    this.read = function(address) {\n        // maskedAddress already set on bus monitoring method\n        // bank0\n        if (maskedAddress < BANK_SIZE)\n            return bytes[bank0AddressOffset + maskedAddress];\n        else\n        // bank1\n            return bytes[bank1AddressOffset + maskedAddress - BANK_SIZE];\n    };\n\n    this.write = function(address, b) {\n        // No direct writes are possible\n        // But check for BIOS Load Part Hotspot range\n        if (bank1AddressOffset === BIOS_BANK_OFFSET &&\n            maskedAddress >= BIOS_INT_EMUL_LOAD_HOTSPOT && maskedAddress < BIOS_INT_EMUL_LOAD_HOTSPOT + 256) {\n            loadPart(maskedAddress - BIOS_INT_EMUL_LOAD_HOTSPOT);\n        }\n    };\n\n    this.performBankSwitchOnMonitoredAccess = function(address) {\n        maskedAddress = address & ADDRESS_MASK;\n        address &= 0x1fff;\n\n        // Set ControlRegister if the hotspot was triggered\n        if (address === 0x1ff8) {\n            setControlRegister(valueToWrite);\n            return;\n        }\n\n        // Check for writes pending and watch for address transitions\n        if (addressChangeCountdown > 0) {\n            if (address !== lastAddress) {\n                lastAddress = address;\n                if (--addressChangeCountdown === 0) {\n                    // 5th address transition detected, perform write\n                    if ((address & CHIP_MASK) === CHIP_SELECT) {\t\t// Do not write outside Cartridge range\n                        // bank0\n                        if (maskedAddress < BANK_SIZE)\n                            bytes[bank0AddressOffset + maskedAddress] = valueToWrite;\n                        // bank1\n                        else if (bank1AddressOffset < BIOS_BANK_OFFSET)\t// Do not write to BIOS ROM\n                            bytes[bank1AddressOffset + maskedAddress - BANK_SIZE] = valueToWrite;\n                    }\n                }\n            }\n            return;\n        }\n\n        // Check and store desired value to write\n        if (((address & CHIP_MASK) === CHIP_SELECT) && maskedAddress <= 0x00ff) {\n            valueToWrite = maskedAddress;\n            if (writeEnabled) {\n                lastAddress = address;\t\t// Will be watched for the 5th address change\n                addressChangeCountdown = 5;\n            }\n        }\n    };\n\n    var setControlRegister = function(controlRegister) {\n        var banksConfig = (controlRegister >> 2) & 0x07;\n        switch (banksConfig) {\n            case 0: bank0AddressOffset = 2 * BANK_SIZE; bank1AddressOffset = BIOS_BANK_OFFSET; break;\n            case 1: bank0AddressOffset = 0 * BANK_SIZE; bank1AddressOffset = BIOS_BANK_OFFSET; break;\n            case 2: bank0AddressOffset = 2 * BANK_SIZE; bank1AddressOffset = 0 * BANK_SIZE; break;\t// as used in Commie Mutants and many others\n            case 3: bank0AddressOffset = 0 * BANK_SIZE; bank1AddressOffset = 2 * BANK_SIZE; break;\t// as used in Suicide Mission\n            case 4: bank0AddressOffset = 2 * BANK_SIZE; bank1AddressOffset = BIOS_BANK_OFFSET; break;\n            case 5: bank0AddressOffset = 1 * BANK_SIZE; bank1AddressOffset = BIOS_BANK_OFFSET; break;\n            case 6: bank0AddressOffset = 2 * BANK_SIZE; bank1AddressOffset = 1 * BANK_SIZE; break;\t// as used in Killer Satellites\n            case 7: bank0AddressOffset = 1 * BANK_SIZE; bank1AddressOffset = 2 * BANK_SIZE; break;\t// as we use for 2k/4k ROM cloning\t\t}\n            default: throw new Error(\"Invalid bank configuration\");\n        }\n        addressChangeCountdown = 0;\t// Setting ControlRegister cancels any pending write\n        writeEnabled = (controlRegister & 0x02) !== 0;\n        biosRomPower = (controlRegister & 0x01) === 0;\n        // System.out.println(\"Banks: \" + banksConfig + \", Writes: \" + (writeEnabled ? \"ON\" : \"OFF\"));\n    };\n\n    var loadPart = function(part) {\n        var tapeRewound = false;\n        do {\n            // Check for tape end\n            if (tapeOffset > rom.content.length - 1) {\n                // Check if tape was already rewound once to avoid infinite tries\n                if (tapeRewound) {\n                    if (part === 0) bus.getTia().getVideoOutput().showOSD(\"Could not load Tape from Start. Not a Start Tape ROM!\", true);\n                    else bus.getTia().getVideoOutput().showOSD(\"Could not find next Part to load in Tape!\", true);\n                    signalPartLoadedOK(false);\t\t// BIOS will handle this\n                    return;\n                }\n                // Rewind tape\n                tapeOffset = 0;\n                tapeRewound = true;\n            }\n            // Check if the next part is the one we are looking for\n            if (jt.Cartridge8K_64K_AR.peekPartNoOnTape(rom.content, tapeOffset) === part) {\n                if (part === 0) bus.getTia().getVideoOutput().showOSD(\"Loaded Tape from Start\", true);\n                else bus.getTia().getVideoOutput().showOSD(\"Loaded next Part from Tape\", true);\n                loadNextPart();\n                return;\n            } else {\n                // Advance tape\n                tapeOffset += PART_SIZE;\n            }\n        } while(true);\n    };\n\n    var loadNextPart = function() {\n        loadHeaderData();\n        loadPagesIntoBanks();\n        patchPartDataIntoBIOS();\n    };\n\n    var loadHeaderData = function() {\n        // Store header info\n        jt.Util.arrayCopy(rom.content, tapeOffset + 4 * BANK_SIZE, header, 0, header.length);\n        romStartupAddress = (header[1] << 8) | (header[0] & 0xff);\n        romControlRegister = header[2];\n        romPageCount = header[3];\n        romChecksum = header[4];\n        romMultiLoadIndex = header[5];\n        romProgressBarSpeed = (header[7] << 8) | (header[6] & 0xff);\n        romPageOffsets = jt.Util.arrayFill(new Array(romPageCount), 0);\n        jt.Util.arrayCopy(header, 16, romPageOffsets, 0, romPageCount);\n    };\n\n    var loadPagesIntoBanks = function() {\n        // Clear last page of first bank, as per original BIOS\n        jt.Util.arrayFillSegment(bytes, 7 * PAGE_SIZE, 8 * PAGE_SIZE - 1, 0);\n\n        // Load pages\n        var romOffset = tapeOffset;\n        for (var i = 0, len = romPageOffsets.length; i < len; i++) {\n            var pageInfo = romPageOffsets[i];\n            var bankOffset = (pageInfo & 0x03) * BANK_SIZE;\n            var pageOffset = (pageInfo >> 2) * PAGE_SIZE;\n            // Only write if not in BIOS area\n            if (bankOffset + pageOffset + 255 < BIOS_BANK_OFFSET)\n                jt.Util.arrayCopy(rom.content, romOffset, bytes, bankOffset + pageOffset, PAGE_SIZE);\n            romOffset += PAGE_SIZE;\n        }\n        // Advance tape\n        tapeOffset += PART_SIZE;\n    };\n\n    var patchPartDataIntoBIOS = function() {\n        // Patch BIOS interface area with correct values from stored Header data\n        bytes[BIOS_BANK_OFFSET + BIOS_INT_CONTROL_REG_ADDR - 0xf800] = romControlRegister;\n        bytes[BIOS_BANK_OFFSET + BIOS_INT_PART_NO_ADDR - 0xf800] = romMultiLoadIndex;\n        bytes[BIOS_BANK_OFFSET + BIOS_INT_RANDOM_SEED_ADDR - 0xf800] = randomSeeds[currentRandomSeed++]; if (currentRandomSeed > 30) currentRandomSeed = 0;\n        bytes[BIOS_BANK_OFFSET + BIOS_INT_START_ADDR - 0xf800] = romStartupAddress & 0xff;\n        bytes[BIOS_BANK_OFFSET + BIOS_INT_START_ADDR + 1 - 0xf800] = (romStartupAddress >> 8) & 0xff;\n        signalPartLoadedOK(true);\n    };\n\n    var signalPartLoadedOK = function(ok) {\n        bytes[BIOS_BANK_OFFSET + BIOS_INT_PART_LOADED_OK - 0xf800] = (ok ? 1 : 0);\n    };\n\n    var loadBIOS = function() {\n        var bios = jt.Util.uncompressStringBase64ToInt8BitArray(STARPATH_BIOS);\n        jt.Util.arrayCopy(bios, 0, bytes, BIOS_BANK_OFFSET, BANK_SIZE);\n    };\n\n\n    var bus;\n\n    var bytes;\n\n    var bank0AddressOffset = 0;\n    var bank1AddressOffset = 0;\n    var valueToWrite = 0;\n    var writeEnabled = false;\n    var lastAddress = -1;\n    var addressChangeCountdown = 0;\n    var biosRomPower = false;\n\n    var romStartupAddress = 0;\n    var romControlRegister = 0;\n    var romPageCount = 0;\n    var romChecksum = 0;\n    var romMultiLoadIndex = 0;\n    var romProgressBarSpeed = 0;\n    var romPageOffsets;\n\n    var randomSeeds = new Array(31);    // Circular Random seeds pre-determined at init() and preserved at saveStates to avoid indeterminism\n    var currentRandomSeed = 0;\n\n    var tapeOffset = 0;\n\n    var HEADER_SIZE = 256;\n    var header = jt.Util.arrayFill(new Array(HEADER_SIZE), 0);      // local buffer, not part of the state\n\n    var maskedAddress;\n\n    var BIOS_INT_PART_NO_ADDR \t\t= 0xfb00;\n    var BIOS_INT_CONTROL_REG_ADDR\t= 0xfb01;\n    var BIOS_INT_START_ADDR \t\t= 0xfb02;\n    var BIOS_INT_RANDOM_SEED_ADDR\t= 0xfb04;\n    var BIOS_INT_PART_LOADED_OK \t= 0xfb05;\n    var BIOS_INT_EMUL_LOAD_HOTSPOT\t= 0x0c00;\n\n    var PAGE_SIZE = 256;\n    var BANK_SIZE = 8 * PAGE_SIZE;\n    var BIOS_BANK_OFFSET = 3 * BANK_SIZE;\n    var PART_SIZE = 4 * BANK_SIZE + HEADER_SIZE;\t// 4 * 2048 banks + header\n\n    // Bios is 2048 bytes. This is compressed (zip) and stored in base64\n    var STARPATH_BIOS = \"7dSxCsIwEAbgv6niGkeddPVZ8kCOXc43yCIokkGIUN+gLxAoZHTxHRxjYq2xk7vSIPS75bb7uYNTuOJWu/bod3iU42BzUTiBe9sTzSj\" +\n        \"ToBnNBVxfQz/nQ+2NhA2a05KYmhhjmxhoQZymxGil8gpeesOdyioW5DN25yxsiri3chQOUO1WeCSI/hPx9AJ/m/576KROMUhlfdE4dQ+AfJoPNBikgOZdLw==\";\n\n    var ADDRESS_MASK = 0x0fff;\n    var CHIP_MASK = 0x1000;\n    var CHIP_SELECT = 0x1000;\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(true),    // ROM contents needed for later part loads\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            b0o: bank0AddressOffset,\n            b1o: bank1AddressOffset,\n            vw: valueToWrite,\n            we: writeEnabled,\n            la: lastAddress,\n            ac: addressChangeCountdown,\n            bp: biosRomPower,\n            rs: romStartupAddress,\n            rc: romControlRegister,\n            rp: romPageCount,\n            rk: romChecksum,\n            rm: romMultiLoadIndex,\n            rb: romProgressBarSpeed,\n            ro: romPageOffsets,\n            to: tapeOffset,\n            rnd: jt.Util.storeInt8BitArrayToStringBase64(randomSeeds),\n            rnc: currentRandomSeed\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bank0AddressOffset = state.b0o;\n        bank1AddressOffset = state.b1o;\n        valueToWrite = state.vw;\n        writeEnabled = state.we;\n        lastAddress = state.la;\n        addressChangeCountdown = state.ac;\n        biosRomPower = state.bp;\n        romStartupAddress = state.rs;\n        romControlRegister = state.rc;\n        romPageCount = state.rp;\n        romChecksum = state.rk;\n        romMultiLoadIndex = state.rm;\n        romProgressBarSpeed = state.rb;\n        romPageOffsets = state.ro;\n        tapeOffset = state.to;\n        jt.Util.restoreStringBase64ToInt8BitArray(state.rnd, randomSeeds);\n        currentRandomSeed = state.rnc;\n    };\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_64K_AR.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge8K_64K_AR.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_64K_AR();\n    cart.loadState(state);\n    return cart;\n};\n\njt.Cartridge8K_64K_AR.HEADER_SIZE = 256;\njt.Cartridge8K_64K_AR.PAGE_SIZE = 256;\njt.Cartridge8K_64K_AR.BANK_SIZE = 8 * jt.Cartridge8K_64K_AR.PAGE_SIZE;\njt.Cartridge8K_64K_AR.PART_SIZE = 4 * jt.Cartridge8K_64K_AR.BANK_SIZE + jt.Cartridge8K_64K_AR.HEADER_SIZE;\t// 4 * 2048 banks + header\n\njt.Cartridge8K_64K_AR.peekPartNoOnTape = function(tapeContent, tapeOffset) {\n    return tapeContent[tapeOffset + 4*jt.Cartridge8K_64K_AR.BANK_SIZE + 5];\n};\n\njt.Cartridge8K_64K_AR.checkTape = function(rom) {\n    if (jt.Cartridge8K_64K_AR.peekPartNoOnTape(rom.content, 0) === 0) return true;\n\n    jt.Util.warning(\"Wrong Supercharger Tape Part ROM! Please load a Full Tape ROM file\");\n    return false;\n};\n\n\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_E0.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K \"E0\" Parker Bros. format\n\njt.Cartridge8K_E0 = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        // Always add the correct offset to access bank selected on the corresponding slice\n        if (maskedAddress < 0x0400)\t\t// Slice 0\n            return bytes[slice0AddressOffset + maskedAddress];\n        if (maskedAddress < 0x0800)\t\t// Slice 1\n            return bytes[slice1AddressOffset + maskedAddress - 0x0400];\n        if (maskedAddress < 0x0c00)\t\t// Slice 2\n            return bytes[slice2AddressOffset + maskedAddress - 0x0800];\n        // Slice 3 (0x0c00 - 0x0fff) is always at 0x1c00 (bank 7)\n        return bytes[0x1000 + maskedAddress];\n    };\n\n    this.write = function(address, val) {\n        maskAddress(address);\n        // Writing to ROMs is possible, but nothing is changed\n    };\n\n    var maskAddress = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        // Check if address is within range of bank selection\n        if (maskedAddress >= 0x0fe0 && maskedAddress <= 0x0ff7) {\n            // Each bank is 0x0400 bytes each, 0 to 7\n            if (/* maskedAddress >= 0x0fe0 && */ maskedAddress <= 0x0fe7)\t    // Slice 0 bank selection\n                slice0AddressOffset = (maskedAddress - 0x0fe0) * 0x0400;\n            else if (/* maskedAddress >= 0x0fe8 && */ maskedAddress <= 0x0fef)\t// Slice 1 bank selection\n                slice1AddressOffset = (maskedAddress - 0x0fe8) * 0x0400;\n            else if (/* maskedAddress >= 0x0ff0 && */ maskedAddress <= 0x0ff7)\t// Slice 2 bank selection\n                slice2AddressOffset = (maskedAddress - 0x0ff0) * 0x0400;\n        }\n        return maskedAddress;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            s0: slice0AddressOffset,\n            s1: slice1AddressOffset,\n            s2: slice2AddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        slice0AddressOffset = state.s0;\n        slice1AddressOffset = state.s1;\n        slice2AddressOffset = state.s2;\n    };\n\n\n    var bytes;\n    var slice0AddressOffset = 0;\n    var slice1AddressOffset = 0;\n    var slice2AddressOffset = 0;\n    // Slice 3 is fixed at bank 7\n\n\n    var ADDRESS_MASK = 0x0fff;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_E0.prototype = jt.Cartridge.base;\n\njt.Cartridge8K_E0.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_E0();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_FE.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K \"FE\" Robotank/Decathlon format\n\njt.Cartridge8K_FE = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        return bytes[bankAddressOffset + maskedAddress];\n    };\n\n    this.write = function(address, val) {\n        maskAddress(address);\n        // Writing to ROMs is possible, but nothing is changed\n    };\n\n    var maskAddress = function(address) {\n        // Bankswitching: Look at the address to determine the correct bank to be\n        if ((address & 0x2000) !== 0) {\t\t// Check bit 13. Address is like Fxxx or Dxxx?\n            if (bankAddressOffset !== 0) bankAddressOffset = 0;\n        } else {\n            if (bankAddressOffset != BANK_SIZE) bankAddressOffset = BANK_SIZE;\n        }\n        return address & ADDRESS_MASK;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_FE.prototype = jt.Cartridge.base;\n\njt.Cartridge8K_FE.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_FE();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/Cartridge8K_UA.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements the 8K \"UA\" UA Limited format\n\njt.Cartridge8K_UA = function(rom, format) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n    }\n\n    this.read = function(address) {\n        // Always add the correct offset to access bank selected\n        return bytes[bankAddressOffset + (address & ADDRESS_MASK)];\n    };\n\n    this.performBankSwitchOnMonitoredAccess = function(address) {\n        if (address === 0x0220) {\n            if (bankAddressOffset !== 0) bankAddressOffset = 0;\n        } else if (address === 0x0240) {\n            if (bankAddressOffset !== BANK_SIZE) bankAddressOffset = BANK_SIZE;\n        }\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n    };\n\n\n    var bytes;\n    var bankAddressOffset = 0;\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n\n\n    if (rom) init(this);\n\n};\n\njt.Cartridge8K_UA.prototype = jt.CartridgeBankedByBusMonitoring.base;\n\njt.Cartridge8K_UA.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.Cartridge8K_UA();\n    cart.loadState(state);\n    return cart;\n};\n\n\n\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/CartridgeBankedByBusMonitoring.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Implements generic bank switching using unmasked address access via bus monitoring (outside Cart area)\n\njt.CartridgeBankedByBusMonitoring = function(rom, format) {\n\"use strict\";\n\n    this.needsBusMonitoring = function() {\n        return true;\n    };\n\n    this.monitorBusBeforeRead = function(address) {\n        this.performBankSwitchOnMonitoredAccess(address)\n    };\n\n    this.monitorBusBeforeWrite = function(address, data) {\n        this.performBankSwitchOnMonitoredAccess(address)\n    };\n\n    this.performBankSwitchOnMonitoredAccess = function(address) {\n    };\n\n};\n\njt.CartridgeBankedByBusMonitoring.prototype = jt.Cartridge.base;\n\njt.CartridgeBankedByBusMonitoring.base = new jt.CartridgeBankedByBusMonitoring();\n\n\n"
  },
  {
    "path": "src/main/atari/cartridge/formats/CartridgeBankedByMaskedRange.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n/**\n * Implements the simple bank switching method by masked address range access (within Cart area)\n * Supports SuperChip extra RAM (ON/OFF/AUTO).\n * Used by several n * 4K bank formats with varying extra RAM sizes\n */\n\njt.CartridgeBankedByMaskedRange = function(rom, format, pBaseBankSwitchAddress, superChip, pExtraRAMSize) {\n\"use strict\";\n\n    function init(self) {\n        self.rom = rom;\n        self.format = format;\n        bytes = rom.content;        // uses the content of the ROM directly\n        self.bytes = bytes;\n        var numBanks = bytes.length / BANK_SIZE;\n        baseBankSwitchAddress = pBaseBankSwitchAddress;\n        topBankSwitchAddress = baseBankSwitchAddress + numBanks - 1;\n        extraRAMSize = pExtraRAMSize;\n        // SuperChip mode. null = automatic mode\n        if (superChip == null || superChip == undefined) {\n            superChipMode = false;\n            superChipAutoDetect = true;\n        } else {\n            superChipMode = !!superChip;\n            superChipAutoDetect = false;\n        }\n        extraRAM = superChip !== false ? jt.Util.arrayFill(new Array(extraRAMSize), 0) : null;\n    }\n\n    this.read = function(address) {\n        var maskedAddress = maskAddress(address);\n        // Check for SuperChip Extra RAM reads\n        if (superChipMode && (maskedAddress >= extraRAMSize) && (maskedAddress < extraRAMSize * 2))\n            return extraRAM[maskedAddress - extraRAMSize];\n        else\n        // Always add the correct offset to access bank selected\n            return bytes[bankAddressOffset + maskedAddress];\n    };\n\n    this.write = function(address, val) {\n        var maskedAddress = maskAddress(address);\n        // Check for Extra RAM writes and then turn superChip mode on\n        if (maskedAddress < extraRAMSize && (superChipMode || superChipAutoDetect)) {\n            if (!superChipMode) superChipMode = true;\n            extraRAM[maskedAddress] = val;\n        }\n    };\n\n    var maskAddress = function(address) {\n        var maskedAddress = address & ADDRESS_MASK;\n        // Check and perform bank-switch as necessary\n        if (maskedAddress >= baseBankSwitchAddress && maskedAddress <= topBankSwitchAddress)\n            bankAddressOffset = BANK_SIZE * (maskedAddress - baseBankSwitchAddress);\n        return maskedAddress;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            f: this.format.name,\n            r: this.rom.saveState(),\n            b: jt.Util.compressInt8BitArrayToStringBase64(bytes),\n            bo: bankAddressOffset,\n            bb: baseBankSwitchAddress,\n            es: extraRAMSize,\n            tb: topBankSwitchAddress,\n            s: superChipMode | 0,\n            sa: superChipAutoDetect | 0,\n            e: extraRAM && jt.Util.compressInt8BitArrayToStringBase64(extraRAM)\n        };\n    };\n\n    this.loadState = function(state) {\n        this.format = jt.CartridgeFormats[state.f];\n        this.rom = jt.ROM.loadState(state.r);\n        bytes = jt.Util.uncompressStringBase64ToInt8BitArray(state.b, bytes);\n        this.bytes = bytes;\n        bankAddressOffset = state.bo;\n        baseBankSwitchAddress = state.bb;\n        extraRAMSize = state.es;\n        topBankSwitchAddress =  state.tb;\n        superChipMode = !!state.s;\n        superChipAutoDetect = !!state.sa;\n        extraRAM = state.e && jt.Util.uncompressStringBase64ToInt8BitArray(state.e, extraRAM);\n    };\n\n\n    var bytes;\n\n    var bankAddressOffset = 0;\n    var baseBankSwitchAddress;\n    var topBankSwitchAddress;\n\n    var superChipMode = false;\n    var superChipAutoDetect;\n    var extraRAMSize;\n    var extraRAM;\n\n\n    var ADDRESS_MASK = 0x0fff;\n    var BANK_SIZE = 4096;\n\n\n    if (rom) init(this);\n\n};\n\njt.CartridgeBankedByMaskedRange.prototype = jt.Cartridge.base;\n\njt.CartridgeBankedByMaskedRange.recreateFromSaveState = function(state, prevCart) {\n    var cart = prevCart || new jt.CartridgeBankedByMaskedRange();\n    cart.loadState(state);\n    return cart;\n};\n"
  },
  {
    "path": "src/main/atari/console/AtariConsole.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.AtariConsole = function(mainVideoClock) {\n\"use strict\";\n\n    var self = this;\n\n    function init() {\n        mainComponentsCreate();\n        socketsCreate();\n    }\n\n    this.socketsConnected = function() {\n        setDefaults();\n    };\n\n    this.powerOn = function(fromState) {\n        if (this.powerIsOn) this.powerOff();\n        bus.powerOn();\n        this.powerIsOn = true;\n        consoleControlsSocket.controlsStatesRedefined();\n        updateVideoSynchronization();\n        videoStandardAutoDetectionStart();\n        if (!fromState) consoleControlsSocket.firePowerAndUserPauseStateUpdate();   // loadState will fire it\n    };\n\n    this.powerOff = function() {\n        bus.powerOff();\n        this.powerIsOn = false;\n        // consoleControlsSocket.releaseControllers();      TODO Really needed? Causing problems...\n        consoleControlsSocket.controlsStatesRedefined();\n        if (userPaused) this.userPause(false);\n        else consoleControlsSocket.firePowerAndUserPauseStateUpdate();\n    };\n\n    this.userPowerOn = function() {\n        if (isLoading) return;\n\n        this.powerOn();\n        if (!bus.getCartridge()) this.showOSD(\"NO CARTRIDGE INSERTED!\", false, true);\n    };\n\n    this.setLoading = function(state) {\n        isLoading = state;\n    };\n\n    this.userPause = function(pause, keepAudio) {\n        var prev = userPaused;\n        if (userPaused !== pause) {\n            userPaused = !!pause; userPauseMoreFrames = -1;\n            if (userPaused && !keepAudio) audioSocket.muteAudio();\n            else audioSocket.unMuteAudio();\n            consoleControlsSocket.firePowerAndUserPauseStateUpdate();\n        }\n        return prev;\n    };\n\n    this.systemPause = function(val) {\n        var prev = systemPaused;\n        if (systemPaused !== val) {\n            systemPaused = !!val;\n            if (systemPaused) audioSocket.pauseAudio();\n            else audioSocket.unpauseAudio();\n        }\n        return prev;\n    };\n\n    this.isSystemPaused = function() {\n        return systemPaused;\n    };\n\n    this.videoClockPulse = function() {\n        // Video clock will be the Tia Frame video clock (60Hz/50Hz)\n        // CPU and other clocks (Pia, Audio) will be sent by the Tia\n\n        this.videoClockPulseApplyPulldowns(self.videoClockPulseGetNextPulldowns());\n    };\n\n    this.videoClockPulseApplyPulldowns = function(pulls) {\n        if (!self.powerIsOn) return;\n\n        while(pulls-- > 0) videoFrame();\n\n        // Finish audio signal (generate any missing samples to adjust to sample rate)\n        if (!userPaused) audioSocket.audioFinishFrame();\n    };\n\n    this.videoClockPulseGetNextPulldowns = function() {\n        // Simple pulldown with 1:1 cadence\n        if (videoPulldown.steps === 1) return 1;\n\n        // Complex pulldown\n        if (--videoPulldownStep < 0) videoPulldownStep = videoPulldown.steps - 1;\n        return videoPulldown.cadence[videoPulldownStep];\n    };\n\n    function videoFrame() {\n        if (userPaused && userPauseMoreFrames-- <= 0) return;\n        if (videoStandardAutoDetectionInProgress) videoStandardAutoDetectionTry();\n        tia.frame();\n    }\n\n    this.getCartridgeSocket = function() {\n        return cartridgeSocket;\n    };\n\n    this.getConsoleControlsSocket = function() {\n        return consoleControlsSocket;\n    };\n\n    this.getVideoOutput = function() {\n        return tia.getVideoOutput();\n    };\n\n    this.getAudioOutput = function() {\n        return tia.getAudioOutput();\n    };\n\n    this.getSavestateSocket = function() {\n        return saveStateSocket;\n    };\n\n    this.getVideoClockSocket = function() {\n        return videoClockSocket;\n    };\n\n    this.getAudioSocket = function() {\n        return audioSocket;\n    };\n\n    this.showOSD = function(message, overlap, error) {\n        this.getVideoOutput().showOSD(message, overlap, error);\n    };\n\n    this.vSynchSetSupported = function(boo) {\n        // To be called once and only by Room during Native Video Freq detection\n        var user = Javatari.userPreferences.current.vSynch;\n        vSynchMode = Javatari.SCREEN_VSYNCH_MODE !== -1 && boo\n            ? Javatari.SCREEN_VSYNCH_MODE >= 0\n                ? Javatari.SCREEN_VSYNCH_MODE\n                : user !== null && user >= 0 ? user : 1\n            : -1;\n    };\n\n    function vSynchToggleMode() {\n        if (vSynchMode === -1) {\n            self.showOSD(\"V-Synch is DISABLED / UNSUPPORTED\", true, true);\n            return;\n        }\n        vSynchMode = vSynchMode ? 0 : 1;\n        updateVideoSynchronization();\n        self.showOSD(\"V-Synch: \" + (vSynchMode ? \"ON\" : \"OFF\"), true);\n\n        // Persist\n        Javatari.userPreferences.current.vSynch = vSynchMode;\n        Javatari.userPreferences.setDirty();\n        Javatari.userPreferences.save();\n    }\n\n    var setCartridge = function(cartridge) {\n        Javatari.cartridge = cartridge;\n        var removedCartridge = getCartridge();\n        bus.setCartridge(cartridge);\n        cartridgeSocket.cartridgeInserted(cartridge, removedCartridge);\n    };\n\n    var getCartridge = function() {\n        return bus.getCartridge();\n    };\n\n    var setVideoStandard = function (pVideoStandard) {\n        if (videoStandard !== pVideoStandard) {\n            videoStandard = pVideoStandard;\n            tia.setVideoStandard(videoStandard);\n            updateVideoSynchronization();\n        }\n    };\n\n    function showVideoStandardMessage() {\n        self.showOSD((videoStandardIsAuto ? \"AUTO: \" : \"\") + videoStandard.name, true);\n    }\n\n    var setVideoStandardAuto = function(state) {\n        videoStandardIsAuto = state;\n        if (state) {\n            if (self.powerIsOn) videoStandardAutoDetectionStart();\n            else setVideoStandard(jt.VideoStandard.NTSC);\n        }\n    };\n\n    var videoStandardAutoDetectionStart = function() {\n        if (!videoStandardIsAuto || videoStandardAutoDetectionInProgress) return;\n        // If no Cartridge present, use NTSC\n        if (!bus.getCartridge()) {\n            setVideoStandard(jt.VideoStandard.NTSC);\n            return;\n        }\n        // Otherwise use the VideoStandard detected by the monitor\n        if (!tia.getVideoOutput().monitor) return;\n        videoStandardAutoDetectionInProgress = true;\n        videoStandardAutoDetectionTries = 0;\n        tia.getVideoOutput().monitor.videoStandardDetectionStart();\n    };\n\n    var videoStandardAutoDetectionTry = function() {\n        videoStandardAutoDetectionTries++;\n        var standard = tia.getVideoOutput().monitor.getVideoStandardDetected();\n        if (!standard && videoStandardAutoDetectionTries < VIDEO_STANDARD_AUTO_DETECTION_FRAMES)\n            return;\n\n        if (standard) {\n            if (standard !== videoStandard) {\n                setVideoStandard(standard);\n                showVideoStandardMessage();\n            }\n        } else\n            self.showOSD(\"AUTO: FAILED\", true, true);\n        videoStandardAutoDetectionInProgress = false;\n    };\n\n    var setVideoStandardForced = function(forcedVideoStandard) {\n        videoStandardIsAuto = false;\n        setVideoStandard(forcedVideoStandard);\n    };\n\n    function updateVideoSynchronization() {\n        // According to the native video frequency detected, target Video Standard and vSynchMode, use a specific pulldown configuration\n        if (vSynchMode === 1) {    // ON\n            // Will V-synch to host freq if detected and supported, or use optimal timer configuration)\n            videoPulldown = videoStandard.pulldowns[videoClockSocket.getVSynchNativeFrequency()] || videoStandard.pulldowns.TIMER;\n        } else {                  // OFF, DISABLED\n            // No V-synch. Always use the optimal timer configuration)\n            videoPulldown = videoStandard.pulldowns.TIMER;\n        }\n\n        videoPulldownStep = 0;\n        videoClockUpdateSpeed();\n\n        //console.error(\"Update Synchronization: \" + videoPulldown.frequency);\n    }\n\n    var powerFry = function() {\n        ram.powerFry();\n        saveStateSocket.externalStateChange();\n    };\n\n    var cycleCartridgeFormat = function() {\n    };\n\n    var saveState = function(extended) {\n        var s = {\n            t: tia.saveState(extended),\n            p: pia.saveState(),\n            r: ram.saveState(),\n            b: bus.saveState(),\n            c: cpu.saveState(),\n            ca: getCartridge() && getCartridge().saveState(),\n            vsa: videoStandardIsAuto,\n            vs: videoStandard.name\n        };\n        if (extended) {\n            s.pw = self.powerIsOn;\n            s.up = userPaused;\n            s.upf = userPauseMoreFrames;\n        }\n        return s;\n    };\n    this.saveState = saveState;\n\n    var loadState = function(s) {\n        // Extended\n        if (s.pw !== undefined) if (self.powerIsOn !== s.pw) s.pw ? self.powerOn() : self.powerOff();\n        if (s.up !== undefined) self.userPause(s.up);\n        if (s.upf !== undefined) userPauseMoreFrames = s.upf;\n\n        // Normal\n        videoClockUpdateSpeed();\n        tia.loadState(s.t);\n        pia.loadState(s.p);\n        ram.loadState(s.r);\n        if (s.b) bus.loadState(s.b);\n        cpu.loadState(s.c);\n        setCartridge(s.ca && jt.CartridgeCreator.recreateCartridgeFromSaveState(s.ca, getCartridge()));\n        if (s.vsa !== undefined) setVideoStandardAuto(s.vsa);\n        setVideoStandard(jt.VideoStandard[s.vs]);\n        consoleControlsSocket.firePowerAndUserPauseStateUpdate();\n        consoleControlsSocket.controlsStatesRedefined();\n        saveStateSocket.externalStateChange();\n    };\n    this.loadState = loadState;\n\n    function setDefaults() {\n        setVideoStandardAuto(true);\n        speedControl = 1;\n        alternateSpeed = null;\n        videoClockUpdateSpeed();\n        tia.debug(0);\n        tia.debugNoCollisions(false);\n    }\n\n    function videoClockUpdateSpeed() {\n        videoClockSocket.setVSynch(vSynchMode === 1);\n        var hostFreq = (videoPulldown.frequency * (alternateSpeed || speedControl)) | 0;\n        videoClockSocket.setFrequency(hostFreq, videoPulldown.divider);\n        audioSocket.setFps(hostFreq / videoPulldown.divider);\n    }\n\n    var mainComponentsCreate = function() {\n        cpu = new jt.M6502();\n        pia = new jt.Pia();\n        tia = new jt.Tia(cpu, pia);\n        self.tia = tia;\n        ram = new jt.Ram();\n        bus = new jt.Bus(cpu, tia, pia, ram);\n    };\n\n    var socketsCreate = function() {\n        videoClockSocket = new VideoClockSocket();\n        consoleControlsSocket = new ConsoleControlsSocket();\n        cartridgeSocket = new CartridgeSocket();\n        saveStateSocket = new SaveStateSocket();\n        audioSocket = new AudioSocket();\n        tia.getAudioOutput().connectAudioSocket(audioSocket);\n    };\n\n\n    this.powerIsOn = false;\n\n    var isLoading = false;\n    var userPaused = false;\n    var userPauseMoreFrames = 0;\n    var systemPaused = false;\n\n    var speedControl = 1;\n    var alternateSpeed = false;\n\n    var cpu;\n    var pia;\n    var tia;\n    var ram;\n    var bus;\n\n    var videoStandard;\n    var videoPulldown, videoPulldownStep;\n\n    var videoClockSocket;\n    var consoleControlsSocket;\n    var cartridgeSocket;\n    var saveStateSocket;\n    var audioSocket;\n\n    var videoStandardIsAuto = false;\n    var videoStandardAutoDetectionInProgress = false;\n    var videoStandardAutoDetectionTries = 0;\n\n    var vSynchMode = -1;\n\n    var VIDEO_STANDARD_AUTO_DETECTION_FRAMES = 90;\n\n    var SPEEDS = [ 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.25, 1.5, 2, 3, 5, 10 ];\n    var SPEED_FAST = 10, SPEED_SLOW = 0.3;\n\n\n    // Controls interface  --------------------------------------------\n\n    var controls = jt.ConsoleControls;\n\n    this.controlStateChanged = function (control, state) {\n        // Normal state controls\n        if (control === controls.FAST_SPEED) {\n            if (state && alternateSpeed !== SPEED_FAST) {\n                alternateSpeed = SPEED_FAST;\n                videoClockUpdateSpeed();\n                self.showOSD(\"FAST FORWARD\", true);\n            } else if (!state && alternateSpeed === SPEED_FAST) {\n                alternateSpeed = null;\n                videoClockUpdateSpeed();\n                self.showOSD(null, true);\n            }\n            return;\n        }\n        if (control === controls.SLOW_SPEED) {\n            if (state && alternateSpeed !== SPEED_SLOW) {\n                alternateSpeed = SPEED_SLOW;\n                videoClockUpdateSpeed();\n                self.showOSD(\"SLOW MOTION\", true);\n            } else if (!state && alternateSpeed === SPEED_SLOW) {\n                alternateSpeed = null;\n                videoClockUpdateSpeed();\n                self.showOSD(null, true);\n            }\n            return;\n        }\n        // Toggles\n        if (!state) return;\n        switch (control) {\n            case controls.POWER:\n                if (self.powerIsOn) self.powerOff();\n                else self.userPowerOn();\n                break;\n            case controls.POWER_OFF:\n                if (self.powerIsOn) self.powerOff();\n                break;\n            case controls.POWER_FRY:\n                powerFry();\n                break;\n            case controls.PAUSE:\n                self.userPause(!userPaused, false);\n                self.getVideoOutput().showOSD(userPaused ? \"PAUSE\" : \"RESUME\", true);\n                return;\n            case controls.PAUSE_AUDIO_ON:\n                self.userPause(!userPaused, true);\n                self.getVideoOutput().showOSD(userPaused ? \"PAUSE with AUDIO ON\" : \"RESUME\", true);\n                return;\n            case controls.FRAME:\n                if (userPaused) userPauseMoreFrames = 1;\n                return;\n            case controls.INC_SPEED: case controls.DEC_SPEED: case controls.NORMAL_SPEED: case controls.MIN_SPEED:\n                var speedIndex = SPEEDS.indexOf(speedControl);\n                if (control === controls.INC_SPEED && speedIndex < SPEEDS.length - 1) ++speedIndex;\n                else if (control === controls.DEC_SPEED && speedIndex > 0) --speedIndex;\n                else if (control === controls.MIN_SPEED) speedIndex = 0;\n                else if (control === controls.NORMAL_SPEED) speedIndex = SPEEDS.indexOf(1);\n                speedControl = SPEEDS[speedIndex];\n                self.showOSD(\"Speed: \" + ((speedControl * 100) | 0) + \"%\", true);\n                videoClockUpdateSpeed();\n                break;\n            case controls.SAVE_STATE_0: case controls.SAVE_STATE_1: case controls.SAVE_STATE_2: case controls.SAVE_STATE_3: case controls.SAVE_STATE_4: case controls.SAVE_STATE_5:\n            case controls.SAVE_STATE_6: case controls.SAVE_STATE_7: case controls.SAVE_STATE_8: case controls.SAVE_STATE_9: case controls.SAVE_STATE_10: case controls.SAVE_STATE_11: case controls.SAVE_STATE_12:\n                var wasPaused = self.systemPause(true);\n                saveStateSocket.saveState(control & 0xff);  // get binary encoded slot number\n                if (!wasPaused) self.systemPause(false);\n                break;\n            case controls.SAVE_STATE_FILE:\n                wasPaused = self.systemPause(true);\n                saveStateSocket.saveStateFile();\n                if (!wasPaused) self.systemPause(false);\n                break;\n            case controls.LOAD_STATE_0: case controls.LOAD_STATE_1: case controls.LOAD_STATE_2: case controls.LOAD_STATE_3: case controls.LOAD_STATE_4: case controls.LOAD_STATE_5:\n            case controls.LOAD_STATE_6: case controls.LOAD_STATE_7: case controls.LOAD_STATE_8: case controls.LOAD_STATE_9: case controls.LOAD_STATE_10: case controls.LOAD_STATE_11: case controls.LOAD_STATE_12:\n                wasPaused = self.systemPause(true);\n                saveStateSocket.loadState(control & 0xff);  // get binary encoded slot number\n                if (!wasPaused) self.systemPause(false);\n                break;\n            case controls.VIDEO_STANDARD:\n                if (videoStandardIsAuto) setVideoStandardForced(jt.VideoStandard.NTSC);\n                else if (videoStandard == jt.VideoStandard.NTSC) setVideoStandardForced(jt.VideoStandard.PAL);\n                else setVideoStandardAuto(true);\n                showVideoStandardMessage();\n                break;\n            case controls.VSYNCH:\n                vSynchToggleMode();\n                break;\n            case controls.CARTRIDGE_FORMAT:\n                cycleCartridgeFormat();\n                break;\n            case controls.DEFAULTS:\n                setDefaults();\n                self.showOSD(\"Default Settings\", true);\n                break;\n        }\n    };\n\n    this.controlsStateReport = function (report) {\n        //  Only Power Control is visible from outside\n        report[controls.POWER] = self.powerIsOn;\n    };\n\n\n    // Video Clock Socket  -----------------------------------------\n\n    function VideoClockSocket() {\n        this.connectClock = function(clock) {\n            videoClock = clock;\n        };\n        this.getVSynchNativeFrequency = function() {\n            return videoClock.getVSynchNativeFrequency();\n        };\n        this.setVSynch = function(state) {\n            videoClock.setVSynch(state);\n        };\n        this.setFrequency = function(freq, div) {\n            videoClock.setFrequency(freq, div);\n        };\n        var videoClock;\n    }\n\n\n    // CartridgeSocket  -----------------------------------------\n\n    function CartridgeSocket() {\n\n        this.insert = function (cartridge, autoPower) {\n            if (autoPower && self.powerIsOn) self.powerOff();\n            setCartridge(cartridge);\n            if (autoPower && !self.powerIsOn) self.powerOn();\n            saveStateSocket.externalStateChange();\n        };\n\n        this.inserted = function () {\n            return getCartridge();\n        };\n\n        this.cartridgeInserted = function (cartridge, removedCartridge) {\n            tia.getAudioOutput().cartridgeInserted(cartridge, removedCartridge);\n            consoleControlsSocket.cartridgeInserted(cartridge, removedCartridge);\n            saveStateSocket.cartridgeInserted(cartridge, removedCartridge);\n            tia.getVideoOutput().monitor.cartridgeInserted(cartridge, removedCartridge);\n        };\n\n        // Data operations unavailable\n        this.loadCartridgeData = function (port, name, arrContent) {\n            // would need: saveStateSocket.externalStateChange();\n        };\n        this.saveCartridgeDataFile = function (port) {\n        };\n\n    }\n\n\n    // ConsoleControlsSocket  -----------------------------------------\n\n    function ConsoleControlsSocket() {\n\n        this.connectControls = function(pControls) {\n            controls = pControls;\n        };\n\n        this.cartridgeInserted = function(cartridge, removedCartridge) {\n            if (controls) controls.cartridgeInserted(cartridge, removedCartridge);\n        };\n\n        this.controlStateChanged = function(control, state) {\n            self.controlStateChanged(control, state);\n            pia.controlStateChanged(control, state);\n            tia.controlStateChanged(control, state);\n            tia.getVideoOutput().monitor.controlStateChanged(control, state);\n        };\n\n        this.controlValueChanged = function(control, position) {\n            tia.controlValueChanged(control, position);\n        };\n\n        this.controlsStateReport = function(report) {\n            self.controlsStateReport(report);\n            pia.controlsStateReport(report);\n        };\n\n        this.controlsStatesRedefined = function() {\n            tia.getVideoOutput().monitor.controlsStatesRedefined();\n        };\n\n        this.firePowerAndUserPauseStateUpdate = function() {\n            controls.consolePowerAndUserPauseStateUpdate(self.powerIsOn, userPaused);\n            tia.getVideoOutput().monitor.consolePowerAndUserPauseStateUpdate(self.powerIsOn, userPaused);\n        };\n\n        this.releaseControllers = function() {\n            controls.releaseControllers();\n        };\n\n        this.controlsClockPulse = function() {\n            controls.controlsClockPulse();\n        };\n\n        this.getControlReport = function(control) {\n            switch(control) {\n                case jt.ConsoleControls.VIDEO_STANDARD:\n                    return { label: videoStandardIsAuto ? \"Auto\" : videoStandard.name, active: !videoStandardIsAuto };\n                case jt.ConsoleControls.VSYNCH:\n                    return { label: vSynchMode === -1 ? \"DISABL\" : vSynchMode ? \"ON\" : \"OFF\", active: vSynchMode === 1 };\n                case jt.ConsoleControls.NO_COLLISIONS:\n                    return { label: tia.getDebugNoCollisions() ? \"ON\" : \"OFF\", active: tia.getDebugNoCollisions() };\n                default:\n                    return { label: \"Unknown\", active: false };\n            }\n        };\n\n        var controls;\n    }\n\n\n    // SavestateSocket  -----------------------------------------\n\n    function SaveStateSocket() {\n\n        this.connectMedia = function(pMedia) {\n            media = pMedia;\n        };\n\n        this.getMedia = function() {\n            return media;\n        };\n\n        this.cartridgeInserted = function(cartridge) {\n            if (cartridge) cartridge.connectSaveStateSocket(this);\n        };\n\n        this.externalStateChange = function() {\n            media.externalStateChange();\n        };\n\n        this.saveState = function(slot) {\n            if (!self.powerIsOn) return;\n            var state = saveState();\n            state.v = VERSION;\n            if (media.saveState(slot, state))\n                self.showOSD(\"State \" + slot + \" saved\", true);\n            else\n                self.showOSD(\"State \" + slot + \" save failed\", true);\n        };\n\n        this.loadState = function(slot) {\n            var state = media.loadState(slot);\n            if (!state) {\n                self.showOSD(\"State \" + slot + \" not found\", true);\n                return;\n            }\n            if (state.v !== VERSION) {\n                self.showOSD(\"State \" + slot + \" load failed, wrong version\", true);\n                return;\n            }\n            if (!self.powerIsOn) self.powerOn(true);    // true = from state loading\n            loadState(state);\n            self.showOSD(\"State \" + slot + \" loaded\", true);\n        };\n\n        this.saveStateFile = function() {\n            if (!self.powerIsOn) return;\n            // Use Cartrige label as file name\n            var fileName = cartridgeSocket.inserted() && cartridgeSocket.inserted().rom.info.l;\n            var state = saveState();\n            state.v = VERSION;\n            if (media.saveStateFile(fileName, state))\n                self.showOSD(\"State Cartridge saved\", true);\n            else\n                self.showOSD(\"State file save failed\", true);\n        };\n\n        this.loadStateFile = function(data) {       // Return true if data was indeed a SaveState\n            var state = media.loadStateFile(data);\n            if (!state) return;\n            if (state.v !== VERSION) {\n                self.showOSD(\"State file load failed, wrong version\", true);\n                return true;\n            }\n            if (!self.powerIsOn) self.powerOn();\n            loadState(state);\n            self.showOSD(\"State file loaded\", true);\n            return true;\n        };\n\n        var media;\n        var VERSION = 2;\n    }\n\n\n    // Audio Socket  ---------------------------------------------\n\n    function AudioSocket() {\n\n        this.connectMonitor = function (pMonitor) {\n            monitor = pMonitor;\n            for (var i = signals.length - 1; i >= 0; i--) monitor.connectAudioSignal(signals[i]);\n        };\n\n        this.connectAudioSignal = function(signal) {\n            if (signals.indexOf(signal) >= 0) return;\n            jt.Util.arrayAdd(signals, signal);\n            this.flushAllSignals();                            // To always keep signals in synch\n            signal.setFps(fps);\n            if (monitor) monitor.connectAudioSignal(signal);\n        };\n\n        this.disconnectAudioSignal = function(signal) {\n            jt.Util.arrayRemoveAllElement(signals, signal);\n            if (monitor) monitor.disconnectAudioSignal(signal);\n        };\n\n        this.audioClockPulse = function() {\n            for (var i = signals.length - 1; i >= 0; --i) signals[i].audioClockPulse();\n        };\n\n        this.audioFinishFrame = function() {\n            for (var i = signals.length - 1; i >= 0; --i) signals[i].audioFinishFrame();\n        };\n\n        this.muteAudio = function() {\n            if (monitor) monitor.mute();\n        };\n\n        this.unMuteAudio = function() {\n            if (monitor) monitor.unMute();\n        };\n\n        this.setFps = function(pFps) {\n            fps = pFps;\n            for (var i = signals.length - 1; i >= 0; --i) signals[i].setFps(fps);\n        };\n\n        this.pauseAudio = function() {\n            if (monitor) monitor.pause();\n        };\n\n        this.unpauseAudio = function() {\n            if (monitor) monitor.unpause();\n        };\n\n        this.flushAllSignals = function() {\n            for (var i = signals.length - 1; i >= 0; --i) signals[i].flush();\n        };\n\n        var signals = [];\n        var monitor;\n        var fps;\n    }\n\n\n    // Debug methods  ------------------------------------------------------\n\n    this.eval = function(str) {\n        return eval(str);\n    };\n\n\n    init();\n\n};"
  },
  {
    "path": "src/main/atari/console/Bus.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Bus = function(pCpu, pTia, pPia, pRam) {\n\"use strict\";\n\n    function init(self) {\n        cpu = pCpu;\n        tia = pTia;\n        pia = pPia;\n        ram = pRam;\n        cpu.connectBus(self);\n        tia.connectBus(self);\n        pia.connectBus(self);\n    }\n\n    this.powerOn = function() {\n        // Power on devices connected to the BUS\n        if (cartridge != null) cartridge.powerOn();\n        ram.powerOn();\n        pia.powerOn();\n        cpu.powerOn();\n        tia.powerOn();\n    };\n\n    this.powerOff = function() {\n        tia.powerOff();\n        cpu.powerOff();\n        pia.powerOff();\n        ram.powerOff();\n    };\n\n    this.setCartridge = function(pCartridge) {\n        cartridge = pCartridge;\n        if (cartridge) {\n            data = 0;\n            cartridge.connectBus(this);\n        }\n        cartridgeNeedsBusMonitoring = cartridge && cartridge.needsBusMonitoring();\n    };\n\n    this.getCartridge = function() {\n        return cartridge;\n    };\n\n    this.getTia = function() {\n        return tia;\n    };\n\n    this.clockPulse = function() {\n        pia.clockPulse();\n        cpu.clockPulse();\n    };\n\n    this.read = function(address) {\n        // CART Bus monitoring\n        if (cartridgeNeedsBusMonitoring) cartridge.monitorBusBeforeRead(address);\n\n        if ((address & CART_MASK) === CART_SELECT) {\n            if (cartridge) return data = cartridge.read(address);\n            else return data;\n        } else if ((address & RAM_MASK) === RAM_SELECT) {\n            return data = ram.read(address);\n        } else if ((address & PIA_MASK) === PIA_SELECT) {\n            return data = pia.read(address);\n        } else {\n            // Only bit 7 and 6 are connected to TIA read registers.\n            return data = data & 0x3f | tia.read(address);\t\t// Use the retained data for bits 5-0\n        }\n    };\n\n    this.write = function(address, val) {\n        // CART Bus monitoring\n        if (cartridgeNeedsBusMonitoring) cartridge.monitorBusBeforeWrite(address, val);\n\n        data = val;\n\n        if ((address & TIA_MASK) === TIA_SELECT) tia.write(address, val);\n        else if ((address & RAM_MASK) === RAM_SELECT) ram.write(address, val);\n        else if ((address & PIA_MASK) === PIA_SELECT) pia.write(address, val);\n        else if (cartridge) cartridge.write(address, val);\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            d: data\n        };\n    };\n\n    this.loadState = function(state) {\n        data = state.d;\n    };\n\n\n    var cpu;\n    var tia;\n    var pia;\n    var ram;\n    var cartridge;\n    var cartridgeNeedsBusMonitoring = false;\n\n    var data = (Math.random()* 256) | 0;            // Comes random ate creation!\n\n\n    var CART_MASK = 0x1000;\n    var CART_SELECT = 0x1000;\n    var RAM_MASK = 0x1280;\n    var RAM_SELECT = 0x0080;\n    var TIA_MASK = 0x1080;\n    var TIA_SELECT = 0x0000;\n    var PIA_MASK = 0x1280;\n    var PIA_SELECT = 0x0280;\n\n\n    init(this);\n\n};"
  },
  {
    "path": "src/main/atari/controls/ConsoleControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.ConsoleControls = {\n\n    // CAUTION: cannot use 0 or falsy values for controls\n\n    JOY0_UP: 11, JOY0_DOWN: 12, JOY0_LEFT: 13, JOY0_RIGHT: 14, JOY0_BUTTON: 15,\n    JOY1_UP: 21, JOY1_DOWN: 22, JOY1_LEFT: 23, JOY1_RIGHT: 24, JOY1_BUTTON: 25,\n    PADDLE0_BUTTON: 41, PADDLE1_BUTTON: 42,\n    PADDLE0_POSITION: 16384, PADDLE1_POSITION: 16384 + 512,\t\t    // Value controls (not press). Value will be from 380 (Left) to 190 (Center) to 0 (Right); -1 = disconnected, won't charge POTs\n\n    POWER: 51, BLACK_WHITE: 52, SELECT: 53, RESET: 54,\n    DIFFICULTY0: 55, DIFFICULTY1: 56,\n    POWER_OFF: 57, POWER_FRY: 58,\n\n    CARTRIDGE_FORMAT: 91,\n\n    DEBUG: 101, TRACE: 102, SHOW_INFO: 103, NO_COLLISIONS: 104, PAUSE: 105, PAUSE_AUDIO_ON: 106, FRAME: 107,\n    FAST_SPEED: 111, SLOW_SPEED: 112, INC_SPEED: 113, DEC_SPEED: 114, NORMAL_SPEED: 115, MIN_SPEED: 116,\n\n    VIDEO_STANDARD: 123, VSYNCH: 124,\n\n    DEFAULTS: 130,\n\n    SAVE_STATE_0: 256 + 0, SAVE_STATE_1: 256 + 1, SAVE_STATE_2: 256 + 2, SAVE_STATE_3: 256 + 3, SAVE_STATE_4: 256 + 4, SAVE_STATE_5: 256 + 5,\n    SAVE_STATE_6: 256 + 6, SAVE_STATE_7: 256 + 7, SAVE_STATE_8: 256 + 8, SAVE_STATE_9: 256 + 9, SAVE_STATE_10: 256 + 10, SAVE_STATE_11: 256 + 11, SAVE_STATE_12: 256 + 12,\n    LOAD_STATE_0: 512 + 0, LOAD_STATE_1: 512 + 1, LOAD_STATE_2: 512 + 2, LOAD_STATE_3: 512 + 3, LOAD_STATE_4: 512 + 4, LOAD_STATE_5: 512 + 5,\n    LOAD_STATE_6: 512 + 6, LOAD_STATE_7: 512 + 7, LOAD_STATE_8: 512 + 8, LOAD_STATE_9: 512 + 9, LOAD_STATE_10: 512 + 10, LOAD_STATE_11: 512 + 11, LOAD_STATE_12: 512 + 12,\n\n    SAVE_STATE_FILE: 201\n\n};\n"
  },
  {
    "path": "src/main/atari/controls/JoystickButtons.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.JoystickButtons = {\n\n    // Real Atari 2600 buttons, register mask\n    J_UP:     { button: \"J_UP\",    mask: 0x01, n: \"UP\" },\n    J_DOWN:   { button: \"J_DOWN\",  mask: 0x02, n: \"DOWN\" },\n    J_LEFT:   { button: \"J_LEFT\",  mask: 0x04, n: \"LEFT\" },\n    J_RIGHT:  { button: \"J_RIGHT\", mask: 0x08, n: \"RIGHT\" },\n    J_A:      { button: \"J_A\",     mask: 0x10, n: \"A\" },\n    J_B:      { button: \"J_B\",     mask: 0x20, n: \"B\" },\n\n    J_AB:     { button: \"J_AB\",    mask: 0x30, n: \"AB\" },        // Special case, both A and B buttons\n\n    // Virtual buttons, no valid mask\n    J_X:      { button: \"J_X\",     n: \"X\" },\n    J_Y:      { button: \"J_Y\",     n: \"Y\" },\n    J_L:      { button: \"J_L\",     n: \"L\" },\n    J_R:      { button: \"J_R\",     n: \"R\" },\n    J_BACK:   { button: \"J_BACK\",  n: \"BACK\" },\n    J_START:  { button: \"J_START\", n: \"START\" }\n\n};\n\n"
  },
  {
    "path": "src/main/atari/cpu/M6502.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.M6502 = function() {\n\"use strict\";\n\n    var self = this;\n\n    this.powerOn = function() {\n        this.reset();\n    };\n\n    this.powerOff = function() {\n    };\n\n    this.clockPulse = function() {\n        if (!RDY) return;      // TODO Should be ignored in the last cycle of the instruction\n        T++;\n        instruction[T]();\n    };\n\n    this.connectBus = function(aBus) {\n        bus = aBus;\n    };\n\n    this.setRDY = function(boo) {\n        RDY = boo;\n    };\n\n    this.reset = function() {\n        I = 1;\n        T = -1;\n        opcode = -1;\n        instruction = boostrapInstruction;\n        PC = bus.read(RESET_VECTOR) | (bus.read(RESET_VECTOR + 1) << 8);\n        this.setRDY(true);\n    };\n\n\n    // Interfaces\n    var bus;\n    var RDY = false;\n\n    // Registers\n    var PC = 0;\n    var SP = 0;\n    var A = 0;\n    var X = 0;\n    var Y = 0;\n\n    // Status Bits\n    var N = 0;\n    var V = 0;\n    var D = 0;\n    var I = 0;\n    var Z = 0;\n    var C = 0;\n\n    // Internal decoding registers\n    var T = -1;\n    var opcode = -1;\n    var instruction;\n    var data = 0;\n    var AD = 0;\n    var BA = 0;\n    var BALCrossed = false;\n    var IA = 0;\n    var branchOffset = 0;\n    var branchOffsetCrossAdjust = 0;\n\n    // Vectors\n    //var NMI_VECTOR = 0xfffa;\n    var RESET_VECTOR = 0xfffc;\n    var IRQ_VECTOR = 0xfffe;\n\n    // Index registers names\n    var rX = 0;\n    var rY = 1;\n\n    // Status bits names\n    var bN = 7;\n    var bV = 6;\n    // var bE = 5;\t// Not used\n    // var bB = 4;\t// Not used\n    // var bD = 3;  // Not used\n    // var bI = 2;  // Not used\n    var bZ = 1;\n    var bC = 0;\n\n    // Auxiliary variables\n    //noinspection JSUnusedGlobalSymbols\n    this.debug = false;\n    //noinspection JSUnusedGlobalSymbols\n    this.trace = false;\n\n\n    // Internal operations\n\n    var fetchOpcodeAndDecodeInstruction = function() {\n        opcode = bus.read(PC);\n        instruction = instructions[opcode];\n        T = 0;\n\n        // if (self.trace) self.breakpoint(\"TRACE\");\n        // console.log(\"PC: \" + PC + \", op: \" + opcode + \": \" + opcodes[opcode]);\n\n        PC++;\n    };\n\n    var fetchNextOpcode = fetchOpcodeAndDecodeInstruction;\n    var boostrapInstruction = [ fetchOpcodeAndDecodeInstruction ];\n\n    var fetchOpcodeAndDiscard = function() {\n        bus.read(PC);\n    };\n\n    var fetchBranchOffset = function() {\n        branchOffset = bus.read(PC);\n        PC++;\n    };\n\n    var fetchADL = function() {\n        AD = bus.read(PC);\n        PC++;\n    };\n\n    var fetchADH = function() {\n        AD |= bus.read(PC) << 8;\n        PC++;\n    };\n\n    var fetchADLFromBA = function() {\n        AD = bus.read(BA);\n    };\n\n    var fetchADHFromBA = function() {\n        AD |= bus.read(BA) << 8;\n    };\n\n    var fetchBAL = function() {\n        BA = bus.read(PC);\n        PC++;\n    };\n\n    var fetchBAH = function() {\n        BA |= bus.read(PC) << 8;\n        PC++;\n    };\n\n    var fetchBALFromIA = function() {\n        BA = bus.read(IA);\n    };\n\n    var fetchBAHFromIA = function() {\n        BA |= bus.read(IA) << 8;\n    };\n\n    var addXtoBAL = function() {\n        var low = (BA & 255) + X;\n        BALCrossed = low > 255;\n        BA = (BA & 0xff00) | (low & 255);\n    };\n\n    var addYtoBAL = function() {\n        var low = (BA & 255) + Y;\n        BALCrossed = low > 255;\n        BA = (BA & 0xff00) | (low & 255);\n    };\n\n    var add1toBAL = function() {\n        var low = (BA & 255) + 1;\n        BALCrossed = low > 255;\n        BA = (BA & 0xff00) | (low & 255);\n    };\n\n    var add1toBAHifBALCrossed = function() {\n        if (BALCrossed)\n            BA = (BA + 0x0100) & 0xffff;\n    };\n\n    var fetchIAL = function() {\n        IA = bus.read(PC);\n        PC++;\n    };\n\n    var fetchIAH = function() {\n        IA |= bus.read(PC) << 8;\n        PC++;\n    };\n\n    var add1toIAL = function() {\n        var low = (IA & 255) + 1;\n        IA = (IA & 0xff00) | (low & 255);\n    };\n\n    var fetchDataFromImmediate = function() {\n        data = bus.read(PC);\n        PC++;\n    };\n\n    var fetchDataFromAD = function() {\n        data = bus.read(AD);\n    };\n\n    var fetchDataFromBA = function() {\n        data = bus.read(BA);\n    };\n\n    var writeDataToAD = function() {\n        bus.write(AD, data);\n    };\n\n    var writeDataToBA = function() {\n        bus.write(BA, data);\n    };\n\n    var addBranchOffsetToPCL = function() {\n        var oldLow = (PC & 0x00ff);\n        var newLow = (oldLow + branchOffset) & 255;\n        // Negative offset?\n        if (branchOffset > 127)\n            branchOffsetCrossAdjust = (newLow > oldLow) ? -0x0100 : 0;\n        else\n            branchOffsetCrossAdjust = (newLow < oldLow) ? 0x0100 : 0;\n        PC = (PC & 0xff00) | newLow;\n    };\n\n    var adjustPCHForBranchOffsetCross = function() {\n        PC = (PC + branchOffsetCrossAdjust) & 0xffff;\n    };\n\n    var setZ = function(val) {\n        Z = (val === 0) ? 1 : 0;\n    };\n\n    var setN = function(val) {\n        N = (val & 0x080) ? 1 : 0;\n    };\n\n    var setV = function(boo) {\n        V = boo ? 1 : 0;\n    };\n\n    var setC = function(boo) {\n        C = boo ? 1 : 0;\n    };\n\n    var popFromStack = function() {\n        SP = (SP + 1) & 255;\n        return bus.read(0x0100 + SP);\n    };\n\n    var peekFromStack = function() {\n        return bus.read(0x0100 + SP);\n    };\n\n    var pushToStack = function(val) {\n        bus.write(0x0100 + SP, val);\n        SP = (SP - 1) & 255;\n    };\n\n    var getStatusBits = function() {\n        return N << 7 | V << 6 | 0x30                 // Always push with E (bit 5) and B (bit 4) ON\n            |  D << 3 | I << 2 | Z << 1 | C;\n    };\n\n    var setStatusBits = function(val) {\n        N = val >>> 7; V = val >>> 6 & 1;             // E and B flags actually do not exist as real flags, so ignore\n        D = val >>> 3 & 1; I = val >>> 2 & 1; Z = val >>> 1 & 1; C = val & 1;\n    };\n\n    var illegalOpcode = function(op) {\n        if (self.debug) self.breakpoint(\"Illegal Opcode: \" + op);\n    };\n\n\n    // Addressing routines\n\n    var implied = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            function implied() {\n                operation();\n                fetchNextOpcode();\n            }\n        ];\n    };\n\n    var immediateRead = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchDataFromImmediate,\n            function immediateRead() {\n                operation();\n                fetchNextOpcode();\n            }\n        ];\n    };\n\n    var zeroPageRead = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,                        // ADH will be zero\n            fetchDataFromAD,\n            function zeroPageRead() {\n                operation();\n                fetchNextOpcode();\n            }\n        ];\n    };\n\n    var absoluteRead = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,\n            fetchADH,\n            fetchDataFromAD,\n            function absoluteRead() {\n                operation();\n                fetchNextOpcode();\n            }\n        ];\n    };\n\n    var indirectXRead = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchBAL,                        // BAH will be zero\n            fetchDataFromBA,\n            function indirectXRead1() {\n                addXtoBAL();\n                fetchADLFromBA();\n            },\n            function indirectXRead2() {\n                add1toBAL();\n                fetchADHFromBA();\n            },\n            fetchDataFromAD,\n            function indirectXRead3() {\n                operation();\n                fetchNextOpcode();\n            }\n        ];\n    };\n\n    var absoluteIndexedRead = function(index) {\n        var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n        return function(operation) {\n            return [\n                fetchOpcodeAndDecodeInstruction,\n                fetchBAL,\n                fetchBAH,\n                function absoluteIndexedRead1() {\n                    addIndex();\n                    fetchDataFromBA();\n                    add1toBAHifBALCrossed();\n                },\n                function absoluteIndexedRead2() {\n                    if (BALCrossed) {\n                        fetchDataFromBA();\n                    } else {\n                        operation();\n                        fetchNextOpcode();\n                    }\n                },\n                function absoluteIndexedRead3() {\n                    operation();\n                    fetchNextOpcode();\n                }\n            ];\n        };\n    };\n\n    var zeroPageIndexedRead = function(index) {\n        var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n        return function(operation) {\n            return [\n                fetchOpcodeAndDecodeInstruction,\n                fetchBAL,                        // BAH will be zero\n                fetchDataFromBA,\n                function zeroPageIndexedRead1() {\n                    addIndex();\n                    fetchDataFromBA();\n                },\n                function zeroPageIndexedRead2() {\n                    operation();\n                    fetchNextOpcode();\n                }\n            ];\n        };\n    };\n\n    var indirectYRead = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchIAL,                           // IAH will be zero\n            fetchBALFromIA,\n            function indirectYRead1() {\n                add1toIAL();\n                fetchBAHFromIA();\n            },\n            function indirectYRead2() {\n                addYtoBAL();\n                fetchDataFromBA();\n                add1toBAHifBALCrossed();\n            },\n            function indirectYRead3() {\n                if(BALCrossed) {\n                    fetchDataFromBA();\n                } else {\n                    operation();\n                    fetchNextOpcode();\n                }\n            },\n            function indirectYRead4() {\n                operation();\n                fetchNextOpcode();\n            }\n        ];\n    };\n\n    var zeroPageWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,                        // ADH will be zero\n            function zeroPageWrite() {\n                operation();\n                writeDataToAD();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n    var absoluteWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,\n            fetchADH,\n            function absoluteWrite() {\n                operation();\n                writeDataToAD();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n    var indirectXWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchBAL,                        // BAH will be zero\n            fetchDataFromBA,\n            function indirectXWrite1() {\n                addXtoBAL();\n                fetchADLFromBA();\n            },\n            function indirectXWrite2() {\n                add1toBAL();\n                fetchADHFromBA();\n            },\n            function indirectXWrite3() {\n                operation();\n                writeDataToAD();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n    var absoluteIndexedWrite = function(index) {\n        var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n        return function(operation) {\n            return [\n                fetchOpcodeAndDecodeInstruction,\n                fetchBAL,\n                fetchBAH,\n                function absoluteIndexedWrite1() {\n                    addIndex();\n                    fetchDataFromBA();\n                    add1toBAHifBALCrossed();\n                },\n                function absoluteIndexedWrite2() {\n                    operation();\n                    writeDataToBA();\n                },\n                fetchNextOpcode\n            ];\n        };\n    };\n\n    var zeroPageIndexedWrite = function(index) {\n        var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n        return function(operation) {\n            return [\n                fetchOpcodeAndDecodeInstruction,\n                fetchBAL,                        // BAH will be zero\n                fetchDataFromBA,\n                function zeroPageIndexedWrite() {\n                    addIndex();\n                    operation();\n                    writeDataToBA();\n                },\n                fetchNextOpcode\n            ];\n        };\n    };\n\n    var indirectYWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchIAL,                           // IAH will be zero\n            fetchBALFromIA,\n            function indirectYWrite1() {\n                add1toIAL();\n                fetchBAHFromIA();\n            },\n            function indirectYWrite2() {\n                addYtoBAL();\n                fetchDataFromBA();\n                add1toBAHifBALCrossed();\n            },\n            function indirectYWrite3() {\n                operation();\n                writeDataToBA();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n\n    var zeroPageReadModifyWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,                        // ADH will be zero\n            fetchDataFromAD,\n            writeDataToAD,\n            function zeroPageReadModifyWrite() {\n                operation();\n                writeDataToAD();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n    var absoluteReadModifyWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,\n            fetchADH,\n            fetchDataFromAD,\n            writeDataToAD,\n            function absoluteReadModifyWrite() {\n                operation();\n                writeDataToAD();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n    var zeroPageIndexedReadModifyWrite = function(index) {\n        var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n        return function(operation) {\n            return [\n                fetchOpcodeAndDecodeInstruction,\n                fetchBAL,                        // BAH will be zero\n                fetchDataFromBA,\n                function zeroPageIndexedReadModifyWrite1() {\n                    addIndex();\n                    fetchDataFromBA();\n                },\n                writeDataToBA,\n                function zeroPageIndexedReadModifyWrite2() {\n                    operation();\n                    writeDataToBA();\n                },\n                fetchNextOpcode\n            ];\n        };\n    };\n\n    var absoluteIndexedReadModifyWrite = function(index) {\n        var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n        return function(operation) {\n            return [\n                fetchOpcodeAndDecodeInstruction,\n                fetchBAL,\n                fetchBAH,\n                function absoluteIndexedReadModifyWrite1() {\n                    addIndex();\n                    fetchDataFromBA();\n                    add1toBAHifBALCrossed();\n                },\n                fetchDataFromBA,\n                writeDataToBA,\n                function absoluteIndexedReadModifyWrite2() {\n                    operation();\n                    writeDataToBA();\n                },\n                fetchNextOpcode\n            ];\n        };\n    };\n\n    var indirectXReadModifyWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchBAL,                        // BAH will be zero\n            fetchDataFromBA,\n            function indirectXReadModifyWrite1() {\n                addXtoBAL();\n                fetchADLFromBA();\n            },\n            function indirectXReadModifyWrite2() {\n                add1toBAL();\n                fetchADHFromBA();\n            },\n            fetchDataFromAD,\n            writeDataToAD,\n            function indirectXReadModifyWrite3() {\n                operation();\n                writeDataToAD();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n    var indirectYReadModifyWrite = function(operation) {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchIAL,                           // IAH will be zero\n            fetchBALFromIA,\n            function indirectYReadModifyWrite1() {\n                add1toIAL();\n                fetchBAHFromIA();\n            },\n            function indirectYReadModifyWrite2() {\n                addYtoBAL();\n                fetchDataFromBA();\n                add1toBAHifBALCrossed();\n            },\n            fetchDataFromBA,\n            writeDataToBA,\n            function indirectYReadModifyWrite3() {\n                operation();\n                writeDataToBA();\n            },\n            fetchNextOpcode\n        ];\n    };\n\n\n    // Instructions  ========================================================================================\n\n    // Complete instruction set\n    var opcodes =      new Array(256);\n    var instructions = new Array(256);\n\n    opcodes[0x00] = \"BRK\";  instructions[0x00] = newBRK();\n    opcodes[0x01] = \"ORA\";  instructions[0x01] = newORA(indirectXRead);\n    opcodes[0x02] = \"uKIL\"; instructions[0x02] = newuKIL();\n    opcodes[0x03] = \"uSLO\"; instructions[0x03] = newuSLO(indirectXReadModifyWrite);\n    opcodes[0x04] = \"uNOP\"; instructions[0x04] = newuNOP(zeroPageRead);\n    opcodes[0x05] = \"ORA\";  instructions[0x05] = newORA(zeroPageRead);\n    opcodes[0x06] = \"ASL\";  instructions[0x06] = newASL(zeroPageReadModifyWrite);\n    opcodes[0x07] = \"uSLO\"; instructions[0x07] = newuSLO(zeroPageReadModifyWrite);\n    opcodes[0x08] = \"PHP\";  instructions[0x08] = newPHP();\n    opcodes[0x09] = \"ORA\";  instructions[0x09] = newORA(immediateRead);\n    opcodes[0x0a] = \"ASL\";  instructions[0x0a] = newASL_ACC();\n    opcodes[0x0b] = \"uANC\"; instructions[0x0b] = newuANC(immediateRead);\n    opcodes[0x0c] = \"uNOP\"; instructions[0x0c] = newuNOP(absoluteRead);\n    opcodes[0x0d] = \"ORA\";  instructions[0x0d] = newORA(absoluteRead);\n    opcodes[0x0e] = \"ASL\";  instructions[0x0e] = newASL(absoluteReadModifyWrite);\n    opcodes[0x0f] = \"uSLO\"; instructions[0x0f] = newuSLO(absoluteReadModifyWrite);\n    opcodes[0x10] = \"BPL\";  instructions[0x10] = newBxx(bN, 0);                 // BPL\n    opcodes[0x11] = \"ORA\";  instructions[0x11] = newORA(indirectYRead);\n    opcodes[0x12] = \"uKIL\"; instructions[0x12] = newuKIL();\n    opcodes[0x13] = \"uSLO\"; instructions[0x13] = newuSLO(indirectYReadModifyWrite);\n    opcodes[0x14] = \"uNOP\"; instructions[0x14] = newuNOP(zeroPageIndexedRead(rX));\n    opcodes[0x15] = \"ORA\";  instructions[0x15] = newORA(zeroPageIndexedRead(rX));\n    opcodes[0x16] = \"ASL\";  instructions[0x16] = newASL(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x17] = \"uSLO\"; instructions[0x17] = newuSLO(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x18] = \"CLC\";  instructions[0x18] = newCLC();\n    opcodes[0x19] = \"ORA\";  instructions[0x19] = newORA(absoluteIndexedRead(rY));\n    opcodes[0x1a] = \"uNOP\"; instructions[0x1a] = newuNOP(implied);\n    opcodes[0x1b] = \"uSLO\"; instructions[0x1b] = newuSLO(absoluteIndexedReadModifyWrite(rY));\n    opcodes[0x1c] = \"uNOP\"; instructions[0x1c] = newuNOP(absoluteIndexedRead(rX));\n    opcodes[0x1d] = \"ORA\";  instructions[0x1d] = newORA(absoluteIndexedRead(rX));\n    opcodes[0x1e] = \"ASL\";  instructions[0x1e] = newASL(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x1f] = \"uSLO\"; instructions[0x1f] = newuSLO(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x20] = \"JSR\";  instructions[0x20] = newJSR();\n    opcodes[0x21] = \"AND\";  instructions[0x21] = newAND(indirectXRead);\n    opcodes[0x22] = \"uKIL\"; instructions[0x22] = newuKIL();\n    opcodes[0x23] = \"uRLA\"; instructions[0x23] = newuRLA(indirectXReadModifyWrite);\n    opcodes[0x24] = \"BIT\";  instructions[0x24] = newBIT(zeroPageRead);\n    opcodes[0x25] = \"AND\";  instructions[0x25] = newAND(zeroPageRead);\n    opcodes[0x26] = \"ROL\";  instructions[0x26] = newROL(zeroPageReadModifyWrite);\n    opcodes[0x27] = \"uRLA\"; instructions[0x27] = newuRLA(zeroPageReadModifyWrite);\n    opcodes[0x28] = \"PLP\";  instructions[0x28] = newPLP();\n    opcodes[0x29] = \"AND\";  instructions[0x29] = newAND(immediateRead);\n    opcodes[0x2a] = \"ROL\";  instructions[0x2a] = newROL_ACC();\n    opcodes[0x2b] = \"uANC\"; instructions[0x2b] = newuANC(immediateRead);\n    opcodes[0x2c] = \"BIT\";  instructions[0x2c] = newBIT(absoluteRead);\n    opcodes[0x2d] = \"AND\";  instructions[0x2d] = newAND(absoluteRead);\n    opcodes[0x2e] = \"ROL\";  instructions[0x2e] = newROL(absoluteReadModifyWrite);\n    opcodes[0x2f] = \"uRLA\"; instructions[0x2f] = newuRLA(absoluteReadModifyWrite);\n    opcodes[0x30] = \"BMI\";  instructions[0x30] = newBxx(bN, 1);                 // BMI\n    opcodes[0x31] = \"AND\";  instructions[0x31] = newAND(indirectYRead);\n    opcodes[0x32] = \"uKIL\"; instructions[0x32] = newuKIL();\n    opcodes[0x33] = \"uRLA\"; instructions[0x33] = newuRLA(indirectYReadModifyWrite);\n    opcodes[0x34] = \"uNOP\"; instructions[0x34] = newuNOP(zeroPageIndexedRead(rX));\n    opcodes[0x35] = \"AND\";  instructions[0x35] = newAND(zeroPageIndexedRead(rX));\n    opcodes[0x36] = \"ROL\";  instructions[0x36] = newROL(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x37] = \"uRLA\"; instructions[0x37] = newuRLA(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x38] = \"SEC\";  instructions[0x38] = newSEC();\n    opcodes[0x39] = \"AND\";  instructions[0x39] = newAND(absoluteIndexedRead(rY));\n    opcodes[0x3a] = \"uNOP\"; instructions[0x3a] = newuNOP(implied);\n    opcodes[0x3b] = \"uRLA\"; instructions[0x3b] = newuRLA(absoluteIndexedReadModifyWrite(rY));\n    opcodes[0x3c] = \"uNOP\"; instructions[0x3c] = newuNOP(absoluteIndexedRead(rX));\n    opcodes[0x3d] = \"AND\";  instructions[0x3d] = newAND(absoluteIndexedRead(rX));\n    opcodes[0x3e] = \"ROL\";  instructions[0x3e] = newROL(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x3f] = \"uRLA\"; instructions[0x3f] = newuRLA(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x40] = \"RTI\";  instructions[0x40] = newRTI();\n    opcodes[0x41] = \"EOR\";  instructions[0x41] = newEOR(indirectXRead);\n    opcodes[0x42] = \"uKIL\"; instructions[0x42] = newuKIL();\n    opcodes[0x43] = \"uSRE\"; instructions[0x43] = newuSRE(indirectXReadModifyWrite);\n    opcodes[0x44] = \"uNOP\"; instructions[0x44] = newuNOP(zeroPageRead);\n    opcodes[0x45] = \"EOR\";  instructions[0x45] = newEOR(zeroPageRead);\n    opcodes[0x46] = \"LSR\";  instructions[0x46] = newLSR(zeroPageReadModifyWrite);\n    opcodes[0x47] = \"uSRE\"; instructions[0x47] = newuSRE(zeroPageReadModifyWrite);\n    opcodes[0x48] = \"PHA\";  instructions[0x48] = mewPHA();\n    opcodes[0x49] = \"EOR\";  instructions[0x49] = newEOR(immediateRead);\n    opcodes[0x4a] = \"LSR\";  instructions[0x4a] = newLSR_ACC();\n    opcodes[0x4b] = \"uASR\"; instructions[0x4b] = newuASR(immediateRead);\n    opcodes[0x4c] = \"JMP\";  instructions[0x4c] = newJMP_ABS();\n    opcodes[0x4d] = \"EOR\";  instructions[0x4d] = newEOR(absoluteRead);\n    opcodes[0x4e] = \"LSR\";  instructions[0x4e] = newLSR(absoluteReadModifyWrite);\n    opcodes[0x4f] = \"uSRE\"; instructions[0x4f] = newuSRE(absoluteReadModifyWrite);\n    opcodes[0x50] = \"BVC\";  instructions[0x50] = newBxx(bV, 0);                 // BVC\n    opcodes[0x51] = \"EOR\";  instructions[0x51] = newEOR(indirectYRead);\n    opcodes[0x52] = \"uKIL\"; instructions[0x52] = newuKIL();\n    opcodes[0x53] = \"uSRE\"; instructions[0x53] = newuSRE(indirectYReadModifyWrite);\n    opcodes[0x54] = \"uNOP\"; instructions[0x54] = newuNOP(zeroPageIndexedRead(rX));\n    opcodes[0x55] = \"EOR\";  instructions[0x55] = newEOR(zeroPageIndexedRead(rX));\n    opcodes[0x56] = \"LSR\";  instructions[0x56] = newLSR(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x57] = \"uSRE\"; instructions[0x57] = newuSRE(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x58] = \"CLI\";  instructions[0x58] = newCLI();\n    opcodes[0x59] = \"EOR\";  instructions[0x59] = newEOR(absoluteIndexedRead(rY));\n    opcodes[0x5a] = \"uNOP\"; instructions[0x5a] = newuNOP(implied);\n    opcodes[0x5b] = \"uSRE\"; instructions[0x5b] = newuSRE(absoluteIndexedReadModifyWrite(rY));\n    opcodes[0x5c] = \"uNOP\"; instructions[0x5c] = newuNOP(absoluteIndexedRead(rX));\n    opcodes[0x5d] = \"EOR\";  instructions[0x5d] = newEOR(absoluteIndexedRead(rX));\n    opcodes[0x5e] = \"LSR\";  instructions[0x5e] = newLSR(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x5f] = \"uSRE\"; instructions[0x5f] = newuSRE(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x60] = \"RTS\";  instructions[0x60] = newRTS();\n    opcodes[0x61] = \"ADC\";  instructions[0x61] = newADC(indirectXRead);\n    opcodes[0x62] = \"uKIL\"; instructions[0x62] = newuKIL();\n    opcodes[0x63] = \"uRRA\"; instructions[0x63] = newuRRA(indirectXReadModifyWrite);\n    opcodes[0x64] = \"uNOP\"; instructions[0x64] = newuNOP(zeroPageRead);\n    opcodes[0x65] = \"ADC\";  instructions[0x65] = newADC(zeroPageRead);\n    opcodes[0x66] = \"ROR\";  instructions[0x66] = newROR(zeroPageReadModifyWrite);\n    opcodes[0x67] = \"uRRA\"; instructions[0x67] = newuRRA(zeroPageReadModifyWrite);\n    opcodes[0x68] = \"PLA\";  instructions[0x68] = newPLA();\n    opcodes[0x69] = \"ADC\";  instructions[0x69] = newADC(immediateRead);\n    opcodes[0x6a] = \"ROR\";  instructions[0x6a] = newROR_ACC();\n    opcodes[0x6b] = \"uARR\"; instructions[0x6b] = newuARR(immediateRead);\n    opcodes[0x6c] = \"JMP\";  instructions[0x6c] = newJMP_IND();\n    opcodes[0x6d] = \"ADC\";  instructions[0x6d] = newADC(absoluteRead);\n    opcodes[0x6e] = \"ROR\";  instructions[0x6e] = newROR(absoluteReadModifyWrite);\n    opcodes[0x6f] = \"uRRA\"; instructions[0x6f] = newuRRA(absoluteReadModifyWrite);\n    opcodes[0x70] = \"BVS\";  instructions[0x70] = newBxx(bV, 1);                 // BVS\n    opcodes[0x71] = \"ADC\";  instructions[0x71] = newADC(indirectYRead);\n    opcodes[0x72] = \"uKIL\"; instructions[0x72] = newuKIL();\n    opcodes[0x73] = \"uRRA\"; instructions[0x73] = newuRRA(indirectYReadModifyWrite);\n    opcodes[0x74] = \"uNOP\"; instructions[0x74] = newuNOP(zeroPageIndexedRead(rX));\n    opcodes[0x75] = \"ADC\";  instructions[0x75] = newADC(zeroPageIndexedRead(rX));\n    opcodes[0x76] = \"ROR\";  instructions[0x76] = newROR(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x77] = \"uRRA\"; instructions[0x77] = newuRRA(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0x78] = \"SEI\";  instructions[0x78] = newSEI();\n    opcodes[0x79] = \"ADC\";  instructions[0x79] = newADC(absoluteIndexedRead(rY));\n    opcodes[0x7a] = \"uNOP\"; instructions[0x7a] = newuNOP(implied);\n    opcodes[0x7b] = \"uRRA\"; instructions[0x7b] = newuRRA(absoluteIndexedReadModifyWrite(rY));\n    opcodes[0x7c] = \"uNOP\"; instructions[0x7c] = newuNOP(absoluteIndexedRead(rX));\n    opcodes[0x7d] = \"ADC\";  instructions[0x7d] = newADC(absoluteIndexedRead(rX));\n    opcodes[0x7e] = \"ROR\";  instructions[0x7e] = newROR(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x7f] = \"uRRA\"; instructions[0x7f] = newuRRA(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0x80] = \"uNOP\"; instructions[0x80] = newuNOP(immediateRead);\n    opcodes[0x81] = \"STA\";  instructions[0x81] = newSTA(indirectXWrite);\n    opcodes[0x82] = \"uNOP\"; instructions[0x82] = newuNOP(immediateRead);\n    opcodes[0x83] = \"uSAX\"; instructions[0x83] = newuSAX(indirectXWrite);\n    opcodes[0x84] = \"STY\";  instructions[0x84] = newSTY(zeroPageWrite);\n    opcodes[0x85] = \"STA\";  instructions[0x85] = newSTA(zeroPageWrite);\n    opcodes[0x86] = \"STX\";  instructions[0x86] = newSTX(zeroPageWrite);\n    opcodes[0x87] = \"uSAX\"; instructions[0x87] = newuSAX(zeroPageWrite);\n    opcodes[0x88] = \"DEY\";  instructions[0x88] = newDEY();\n    opcodes[0x89] = \"uNOP\"; instructions[0x89] = newuNOP(immediateRead);\n    opcodes[0x8a] = \"TXA\";  instructions[0x8a] = newTXA();\n    opcodes[0x8b] = \"uANE\"; instructions[0x8b] = newuANE(immediateRead);\n    opcodes[0x8c] = \"STY\";  instructions[0x8c] = newSTY(absoluteWrite);\n    opcodes[0x8d] = \"STA\";  instructions[0x8d] = newSTA(absoluteWrite);\n    opcodes[0x8e] = \"STX\";  instructions[0x8e] = newSTX(absoluteWrite);\n    opcodes[0x8f] = \"uSAX\"; instructions[0x8f] = newuSAX(absoluteWrite);\n    opcodes[0x90] = \"BCC\";  instructions[0x90] = newBxx(bC, 0);                 // BCC\n    opcodes[0x91] = \"STA\";  instructions[0x91] = newSTA(indirectYWrite);\n    opcodes[0x92] = \"uKIL\"; instructions[0x92] = newuKIL();\n    opcodes[0x93] = \"uSHA\"; instructions[0x93] = newuSHA(indirectYWrite);\n    opcodes[0x94] = \"STY\";  instructions[0x94] = newSTY(zeroPageIndexedWrite(rX));\n    opcodes[0x95] = \"STA\";  instructions[0x95] = newSTA(zeroPageIndexedWrite(rX));\n    opcodes[0x96] = \"STX\";  instructions[0x96] = newSTX(zeroPageIndexedWrite(rY));\n    opcodes[0x97] = \"uSAX\"; instructions[0x97] = newuSAX(zeroPageIndexedWrite(rY));\n    opcodes[0x98] = \"TYA\";  instructions[0x98] = newTYA();\n    opcodes[0x99] = \"STA\";  instructions[0x99] = newSTA(absoluteIndexedWrite(rY));\n    opcodes[0x9a] = \"TXS\";  instructions[0x9a] = newTXS();\n    opcodes[0x9b] = \"uSHS\"; instructions[0x9b] = newuSHS(absoluteIndexedWrite(rY));\n    opcodes[0x9c] = \"uSHY\"; instructions[0x9c] = newuSHY(absoluteIndexedWrite(rX));\n    opcodes[0x9d] = \"STA\";  instructions[0x9d] = newSTA(absoluteIndexedWrite(rX));\n    opcodes[0x9e] = \"uSHX\"; instructions[0x9e] = newuSHX(absoluteIndexedWrite(rY));\n    opcodes[0x9f] = \"uSHA\"; instructions[0x9f] = newuSHA(absoluteIndexedWrite(rY));\n    opcodes[0xa0] = \"LDY\";  instructions[0xa0] = newLDY(immediateRead);\n    opcodes[0xa1] = \"LDA\";  instructions[0xa1] = newLDA(indirectXRead);\n    opcodes[0xa2] = \"LDX\";  instructions[0xa2] = newLDX(immediateRead);\n    opcodes[0xa3] = \"uLAX\"; instructions[0xa3] = newuLAX(indirectXRead);\n    opcodes[0xa4] = \"LDY\";  instructions[0xa4] = newLDY(zeroPageRead);\n    opcodes[0xa5] = \"LDA\";  instructions[0xa5] = newLDA(zeroPageRead);\n    opcodes[0xa6] = \"LDX\";  instructions[0xa6] = newLDX(zeroPageRead);\n    opcodes[0xa7] = \"uLAX\"; instructions[0xa7] = newuLAX(zeroPageRead);\n    opcodes[0xa8] = \"TAY\";  instructions[0xa8] = newTAY();\n    opcodes[0xa9] = \"LDA\";  instructions[0xa9] = newLDA(immediateRead);\n    opcodes[0xaa] = \"TAX\";  instructions[0xaa] = newTAX();\n    opcodes[0xab] = \"uLXA\"; instructions[0xab] = newuLXA(immediateRead);\n    opcodes[0xac] = \"LDY\";  instructions[0xac] = newLDY(absoluteRead);\n    opcodes[0xad] = \"LDA\";  instructions[0xad] = newLDA(absoluteRead);\n    opcodes[0xae] = \"LDX\";  instructions[0xae] = newLDX(absoluteRead);\n    opcodes[0xaf] = \"uLAX\"; instructions[0xaf] = newuLAX(absoluteRead);\n    opcodes[0xb0] = \"BCS\";  instructions[0xb0] = newBxx(bC, 1);                 // BCS\n    opcodes[0xb1] = \"LDA\";  instructions[0xb1] = newLDA(indirectYRead);\n    opcodes[0xb2] = \"uKIL\"; instructions[0xb2] = newuKIL();\n    opcodes[0xb3] = \"uLAX\"; instructions[0xb3] = newuLAX(indirectYRead);\n    opcodes[0xb4] = \"LDY\";  instructions[0xb4] = newLDY(zeroPageIndexedRead(rX));\n    opcodes[0xb5] = \"LDA\";  instructions[0xb5] = newLDA(zeroPageIndexedRead(rX));\n    opcodes[0xb6] = \"LDX\";  instructions[0xb6] = newLDX(zeroPageIndexedRead(rY));\n    opcodes[0xb7] = \"uLAX\"; instructions[0xb7] = newuLAX(zeroPageIndexedRead(rY));\n    opcodes[0xb8] = \"CLV\";  instructions[0xb8] = newCLV();\n    opcodes[0xb9] = \"LDA\";  instructions[0xb9] = newLDA(absoluteIndexedRead(rY));\n    opcodes[0xba] = \"TSX\";  instructions[0xba] = newTSX();\n    opcodes[0xbb] = \"uLAS\"; instructions[0xbb] = newuLAS(absoluteIndexedRead(rY));\n    opcodes[0xbc] = \"LDY\";  instructions[0xbc] = newLDY(absoluteIndexedRead(rX));\n    opcodes[0xbd] = \"LDA\";  instructions[0xbd] = newLDA(absoluteIndexedRead(rX));\n    opcodes[0xbe] = \"LDX\";  instructions[0xbe] = newLDX(absoluteIndexedRead(rY));\n    opcodes[0xbf] = \"uLAX\"; instructions[0xbf] = newuLAX(absoluteIndexedRead(rY));\n    opcodes[0xc0] = \"CPY\";  instructions[0xc0] = newCPY(immediateRead);\n    opcodes[0xc1] = \"CMP\";  instructions[0xc1] = newCMP(indirectXRead);\n    opcodes[0xc2] = \"uNOP\"; instructions[0xc2] = newuNOP(immediateRead);\n    opcodes[0xc3] = \"uDCP\"; instructions[0xc3] = newuDCP(indirectXReadModifyWrite);\n    opcodes[0xc4] = \"CPY\";  instructions[0xc4] = newCPY(zeroPageRead);\n    opcodes[0xc5] = \"CMP\";  instructions[0xc5] = newCMP(zeroPageRead);\n    opcodes[0xc6] = \"DEC\";  instructions[0xc6] = newDEC(zeroPageReadModifyWrite);\n    opcodes[0xc7] = \"uDCP\"; instructions[0xc7] = newuDCP(zeroPageReadModifyWrite);\n    opcodes[0xc8] = \"INY\";  instructions[0xc8] = newINY();\n    opcodes[0xc9] = \"CMP\";  instructions[0xc9] = newCMP(immediateRead);\n    opcodes[0xca] = \"DEX\";  instructions[0xca] = newDEX();\n    opcodes[0xcb] = \"uSBX\"; instructions[0xcb] = newuSBX(immediateRead);\n    opcodes[0xcc] = \"CPY\";  instructions[0xcc] = newCPY(absoluteRead);\n    opcodes[0xcd] = \"CMP\";  instructions[0xcd] = newCMP(absoluteRead);\n    opcodes[0xce] = \"DEC\";  instructions[0xce] = newDEC(absoluteReadModifyWrite);\n    opcodes[0xcf] = \"uDCP\"; instructions[0xcf] = newuDCP(absoluteReadModifyWrite);\n    opcodes[0xd0] = \"BNE\";  instructions[0xd0] = newBxx(bZ, 0);                 // BNE\n    opcodes[0xd1] = \"CMP\";  instructions[0xd1] = newCMP(indirectYRead);\n    opcodes[0xd2] = \"uKIL\"; instructions[0xd2] = newuKIL();\n    opcodes[0xd3] = \"uDCP\"; instructions[0xd3] = newuDCP(indirectYReadModifyWrite);\n    opcodes[0xd4] = \"uNOP\"; instructions[0xd4] = newuNOP(zeroPageIndexedRead(rX));\n    opcodes[0xd5] = \"CMP\";  instructions[0xd5] = newCMP(zeroPageIndexedRead(rX));\n    opcodes[0xd6] = \"DEC\";  instructions[0xd6] = newDEC(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0xd7] = \"uDCP\"; instructions[0xd7] = newuDCP(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0xd8] = \"CLD\";  instructions[0xd8] = newCLD();\n    opcodes[0xd9] = \"CMP\";  instructions[0xd9] = newCMP(absoluteIndexedRead(rY));\n    opcodes[0xda] = \"uNOP\"; instructions[0xda] = newuNOP(implied);\n    opcodes[0xdb] = \"uDCP\"; instructions[0xdb] = newuDCP(absoluteIndexedReadModifyWrite(rY));\n    opcodes[0xdc] = \"uNOP\"; instructions[0xdc] = newuNOP(absoluteIndexedRead(rX));\n    opcodes[0xdd] = \"CMP\";  instructions[0xdd] = newCMP(absoluteIndexedRead(rX));\n    opcodes[0xde] = \"DEC\";  instructions[0xde] = newDEC(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0xdf] = \"uDCP\"; instructions[0xdf] = newuDCP(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0xe0] = \"CPX\";  instructions[0xe0] = newCPX(immediateRead);\n    opcodes[0xe1] = \"SBC\";  instructions[0xe1] = newSBC(indirectXRead);\n    opcodes[0xe2] = \"uNOP\"; instructions[0xe2] = newuNOP(immediateRead);\n    opcodes[0xe3] = \"uISB\"; instructions[0xe3] = newuISB(indirectXReadModifyWrite);\n    opcodes[0xe4] = \"CPX\";  instructions[0xe4] = newCPX(zeroPageRead);\n    opcodes[0xe5] = \"SBC\";  instructions[0xe5] = newSBC(zeroPageRead);\n    opcodes[0xe6] = \"INC\";  instructions[0xe6] = newINC(zeroPageReadModifyWrite);\n    opcodes[0xe7] = \"uISB\"; instructions[0xe7] = newuISB(zeroPageReadModifyWrite);\n    opcodes[0xe8] = \"newINX\";  instructions[0xe8] = newINX();\n    opcodes[0xe9] = \"SBC\";  instructions[0xe9] = newSBC(immediateRead);\n    opcodes[0xea] = \"NOP\";  instructions[0xea] = newNOP();\n    opcodes[0xeb] = \"SBC\";  instructions[0xeb] = newSBC(immediateRead);\n    opcodes[0xec] = \"CPX\";  instructions[0xec] = newCPX(absoluteRead);\n    opcodes[0xed] = \"SBC\";  instructions[0xed] = newSBC(absoluteRead);\n    opcodes[0xee] = \"INC\";  instructions[0xee] = newINC(absoluteReadModifyWrite);\n    opcodes[0xef] = \"uISB\"; instructions[0xef] = newuISB(absoluteReadModifyWrite);\n    opcodes[0xf0] = \"BEQ\";  instructions[0xf0] = newBxx(bZ, 1);                 // BEQ\n    opcodes[0xf1] = \"SBC\";  instructions[0xf1] = newSBC(indirectYRead);\n    opcodes[0xf2] = \"uKIL\"; instructions[0xf2] = newuKIL();\n    opcodes[0xf3] = \"uISB\"; instructions[0xf3] = newuISB(indirectYReadModifyWrite);\n    opcodes[0xf4] = \"uNOP\"; instructions[0xf4] = newuNOP(zeroPageIndexedRead(rX));\n    opcodes[0xf5] = \"SBC\";  instructions[0xf5] = newSBC(zeroPageIndexedRead(rX));\n    opcodes[0xf6] = \"INC\";  instructions[0xf6] = newINC(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0xf7] = \"uISB\"; instructions[0xf7] = newuISB(zeroPageIndexedReadModifyWrite(rX));\n    opcodes[0xf8] = \"SED\";  instructions[0xf8] = newSED();\n    opcodes[0xf9] = \"SBC\";  instructions[0xf9] = newSBC(absoluteIndexedRead(rY));\n    opcodes[0xfa] = \"uNOP\"; instructions[0xfa] = newuNOP(implied);\n    opcodes[0xfb] = \"uISB\"; instructions[0xfb] = newuISB(absoluteIndexedReadModifyWrite(rY));\n    opcodes[0xfc] = \"uNOP\"; instructions[0xfc] = newuNOP(absoluteIndexedRead(rX));\n    opcodes[0xfd] = \"SBC\";  instructions[0xfd] = newSBC(absoluteIndexedRead(rX));\n    opcodes[0xfe] = \"INC\";  instructions[0xfe] = newINC(absoluteIndexedReadModifyWrite(rX));\n    opcodes[0xff] = \"uISB\"; instructions[0xff] = newuISB(absoluteIndexedReadModifyWrite(rX));\n\n\n    // Single Byte instructions\n\n    function newASL_ACC() {\n        return implied(function ASL_ACC() {\n            setC(A > 127);\n            A = (A << 1) & 255;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newCLC() {\n        return implied(function CLC() {\n            C = 0;\n        });\n    }\n\n    function newCLD() {\n        return implied(function CLD() {\n            D = 0;\n        });\n    }\n\n    function newCLI() {\n        return implied(function CLI() {\n            I = 0;\n        });\n    }\n\n    function newCLV() {\n        return implied(function CLV() {\n            V = 0;\n        });\n    }\n\n    function newDEX() {\n        return implied(function DEX() {\n            X = (X - 1) & 255;\n            setZ(X);\n            setN(X);\n        });\n    }\n\n    function newDEY() {\n        return implied(function DEY() {\n            Y = (Y - 1) & 255;\n            setZ(Y);\n            setN(Y);\n        });\n    }\n\n    function newINX() {\n        return implied(function INX() {\n            X = (X + 1) & 255;\n            setZ(X);\n            setN(X);\n        });\n    }\n\n    function newINY() {\n        return implied(function INY() {\n            Y = (Y + 1) & 255;\n            setZ(Y);\n            setN(Y);\n        });\n    }\n\n    function newLSR_ACC() {\n        return implied(function LSR_ACC() {\n            C = A & 0x01;\n            A >>>= 1;\n            setZ(A);\n            N = 0;\n        });\n    }\n\n    function newNOP() {\n        return implied(function NOP() {\n            // nothing\n        });\n    }\n\n    function newROL_ACC() {\n        return implied(function ROL_ACC() {\n            var newC = A > 127;\n            A = ((A << 1) | C) & 255;\n            setC(newC);\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newROR_ACC() {\n        return implied(function ROR_ACC() {\n            var newC = A & 0x01;\n            A = (A >>> 1) | (C << 7);\n            setC(newC);\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newSEC() {\n        return implied(function SEC() {\n            C = 1;\n        });\n    }\n\n    function newSED() {\n        return implied(function SED() {\n            D = 1;\n        });\n    }\n\n    function newSEI() {\n        return implied(function SEI() {\n            I = 1;\n        });\n    }\n\n    function newTAX() {\n        return implied(function TAX() {\n            X = A;\n            setZ(X);\n            setN(X);\n        });\n    }\n\n    function newTAY() {\n        return implied(function TAY() {\n            Y = A;\n            setZ(Y);\n            setN(Y);\n        });\n    }\n\n    function newTSX() {\n        return implied(function TSX() {\n            X = SP;\n            setZ(X);\n            setN(X);\n        });\n    }\n\n    function newTXA() {\n        return implied(function TXA() {\n            A = X;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newTXS() {\n        return implied(function TXS() {\n            SP = X;\n        });\n    }\n\n    function newTYA() {\n        return implied(function TYA() {\n            A = Y;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newuKIL() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            function() {\n                illegalOpcode(\"KIL/HLT/JAM\");\n            },\n            function() {\n                T--;        // Causes the processor to be stuck in this instruction forever\n            }\n        ];\n    }\n\n    function newuNOP(addressing) {\n        return addressing(function uNOP() {\n            illegalOpcode(\"NOP/DOP\");\n            // nothing\n        });\n    }\n\n\n    // Internal Execution on Memory Data\n\n    function newADC(addressing) {\n        return addressing(function ADC() {\n            if (D) {\n                var operand = data;\n                var AL = (A & 15) + (operand & 15) + C;\n                if (AL > 9) { AL += 6; }\n                var AH = ((A >> 4) + (operand >> 4) + (AL > 15)) << 4;\n                setZ((A + operand + C) & 255);\n                setN(AH);\n                setV(((A ^AH) & ~(A ^ operand)) & 128);\n                if (AH > 0x9f) { AH += 0x60; }\n                setC(AH > 255);\n                A = (AH | (AL & 15)) & 255;\n            } else {\n                var add = A + data + C;\n                setC(add > 255);\n                setV(((A ^ add) & (data ^ add)) & 0x80);\n                A = add & 255;\n                setZ(A);\n                setN(A);\n            }\n        });\n    }\n\n    function newAND(addressing) {\n        return addressing(function AND() {\n            A &= data;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newBIT(addressing) {\n        return addressing(function BIT() {\n            var par = data;\n            setZ(A & par);\n            setV(par & 0x40);\n            setN(par);\n        });\n    }\n\n    function newCMP(addressing) {\n        return addressing(function CMP() {\n            var val = (A - data) & 255;\n            setC(A >= data);\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newCPX(addressing) {\n        return addressing(function CPX() {\n            var val = (X - data) & 255;\n            setC(X >= data);\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newCPY(addressing) {\n        return addressing(function CPY() {\n            var val = (Y - data) & 255;\n            setC(Y >= data);\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newEOR(addressing) {\n        return addressing(function EOR() {\n            A ^= data;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newLDA(addressing) {\n        return addressing(function LDA() {\n            A = data;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newLDX(addressing) {\n        return addressing(function LDX() {\n            X = data;\n            setZ(X);\n            setN(X);\n        });\n    }\n\n    function newLDY(addressing) {\n        return addressing(function LDY() {\n            Y = data;\n            setZ(Y);\n            setN(Y);\n        });\n    }\n\n    function newORA(addressing) {\n        return addressing(function ORA() {\n            A |= data;\n            setZ(A);\n            setN(A);\n        });\n    }\n\n    function newSBC(addressing) {\n        return addressing(function SBC() {\n            if (D) {\n                var operand = data;\n                var AL = (A & 15) - (operand & 15) - (1-C);\n                var AH = (A >> 4) - (operand >> 4) - (AL < 0);\n                if (AL < 0) { AL -= 6; }\n                if (AH < 0) { AH -= 6; }\n                var sub = A - operand - (1-C);\n                setC(~sub & 256);\n                setV(((A ^ operand) & (A ^ sub)) & 128);\n                setZ(sub & 255);\n                setN(sub);\n                A = ((AH << 4) | (AL & 15)) & 255;\n            } else {\n                operand = (~data) & 255;\n                sub = A + operand + C;\n                setC(sub > 255);\n                setV(((A ^ sub) & (operand ^ sub) & 0x80));\n                A = sub & 255;\n                setZ(A);\n                setN(A);\n            }\n        });\n    }\n\n    function newuANC(addressing) {\n        return addressing(function uANC() {\n            illegalOpcode(\"ANC\");\n            A &= data;\n            setZ(A);\n            N = C = (A & 0x080) ? 1 : 0;\n        });\n    }\n\n    function newuANE(addressing) {\n        return addressing(function uANE() {\n            illegalOpcode(\"ANE\");\n            // Exact operation unknown. Do nothing\n        });\n    }\n\n    function newuARR(addressing) {\n        // Some sources say flags are affected per ROR, others say its more complex. The complex one is chosen\n        return addressing(function uARR() {\n            illegalOpcode(\"ARR\");\n            var val = A & data;\n            var oldC = C ? 0x80 : 0;\n            val = (val >>> 1) | oldC;\n            A = val;\n            setZ(val);\n            setN(val);\n            var comp = A & 0x60;\n            if (comp == 0x60) \t\t{ C = 1; V = 0; }\n            else if (comp == 0x00) \t{ C = 0; V = 0; }\n            else if (comp == 0x20) \t{ C = 0; V = 1; }\n            else if (comp == 0x40) \t{ C = 1; V = 1; }\n        });\n    }\n\n    function newuASR(addressing) {\n        return addressing(function uASR() {\n            illegalOpcode(\"ASR\");\n            var val = A & data;\n            C = (val & 0x01);\t\t// bit 0\n            val = val >>> 1;\n            A = val;\n            setZ(val);\n            N = 0;\n        });\n    }\n\n    function newuLAS(addressing) {\n        return addressing(function uLAS() {\n            illegalOpcode(\"LAS\");\n            var val = SP & data;\n            A = val;\n            X = val;\n            SP = val;\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newuLAX(addressing) {\n        return addressing(function uLAX() {\n            illegalOpcode(\"LAX\");\n            var val = data;\n            A = val;\n            X = val;\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newuLXA(addressing) {\n        return addressing(function uLXA() {\n            // Some sources say its an OR with $EE then AND with IMM, others exclude the OR,\n            // others exclude both the OR and the AND. Excluding just the OR...\n            illegalOpcode(\"LXA\");\n            var val = A /* | 0xEE) */ & data;\n            A = val;\n            X = val;\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newuSBX(addressing) {\n        return addressing(function uSBX() {\n            illegalOpcode(\"SBX\");\n            var par = A & X;\n            var val = data;\n            var newX = (par - val) & 255;\n            X = newX;\n            setC(par >= val);\n            setZ(newX);\n            setN(newX);\n        });\n    }\n\n\n    // Store operations\n\n    function newSTA(addressing) {\n        return addressing(function STA() {\n            data = A;\n        });\n    }\n\n    function newSTX(addressing) {\n        return addressing(function STX() {\n            data = X;\n        });\n    }\n\n    function newSTY(addressing) {\n        return addressing(function STY() {\n            data = Y;\n        });\n    }\n\n    function newuSAX(addressing) {\n        return addressing(function uSAX() {\n            // Some sources say it would affect N and Z flags, some say it wouldn't. Chose not to affect\n            illegalOpcode(\"SAX\");\n            data = A & X;\n        });\n    }\n\n    function newuSHA(addressing) {\n        return addressing(function uSHA() {\n            illegalOpcode(\"SHA\");\n            data = A & X & ((BA >>> 8) + 1) & 255; // A & X & (High byte of effective address + 1) !!!\n            // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n        });\n    }\n\n    function newuSHS(addressing) {\n        return addressing(function uSHS() {\n            illegalOpcode(\"SHS\");\n            var val = A & X;\n            SP = val;\n            data = val & ((BA >>> 8) + 1) & 255; // A & X & (High byte of effective address + 1) !!!\n            // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n        });\n    }\n\n    function newuSHX(addressing) {\n        return addressing(function uSHX() {\n            illegalOpcode(\"SHX\");\n            data = X & ((BA >>> 8) + 1) & 255; // X & (High byte of effective address + 1) !!!\n            // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n        });\n    }\n\n    function newuSHY(addressing) {\n        return addressing(function uSHY() {\n            illegalOpcode(\"SHY\");\n            data = Y & ((BA >>> 8) + 1) & 255; // Y & (High byte of effective address + 1) !!!\n            // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n        });\n    }\n\n\n    // Read-Modify-Write operations\n\n    function newASL(addressing) {\n        return addressing(function ASL() {\n            setC(data > 127);\n            var par = (data << 1) & 255;\n            data = par;\n            setZ(par);\n            setN(par);\n        });\n    }\n\n    function newDEC(addressing) {\n        return addressing(function DEC() {\n            var par = (data - 1) & 255;\n            data = par;\n            setZ(par);\n            setN(par);\n        });\n    }\n\n    function newINC(addressing) {\n        return addressing(function INC() {\n            var par = (data + 1) & 255;\n            data = par;\n            setZ(par);\n            setN(par);\n        });\n    }\n\n    function newLSR(addressing) {\n        return addressing(function LSR() {\n            C = data & 0x01;\n            data >>>= 1;\n            setZ(data);\n            N = 0;\n        });\n    }\n\n    function newROL(addressing) {\n        return addressing(function ROL() {\n            var newC = data > 127;\n            var par = ((data << 1) | C) & 255;\n            data = par;\n            setC(newC);\n            setZ(par);\n            setN(par);\n        });\n    }\n\n    function newROR(addressing) {\n        return addressing(function ROR() {\n            var newC = data & 0x01;\n            var par = (data >>> 1) | (C << 7);\n            data = par;\n            setC(newC);\n            setZ(par);\n            setN(par);\n        });\n    }\n\n    function newuDCP(addressing) {\n        return addressing(function uDCP() {\n            illegalOpcode(\"DCP\");\n            var par = (data - 1) & 255;\n            data = par;\n            par = A - par;\n            setC(par >= 0);\n            setZ(par);\n            setN(par);\n        });\n    }\n\n    function newuISB(addressing) {\n        return addressing(function uISB() {\n            illegalOpcode(\"ISB\");\n            data = (data + 1) & 255;    // ISB is the same as SBC but incs the operand first\n            if (D) {\n                var operand = data;\n                var AL = (A & 15) - (operand & 15) - (1-C);\n                var AH = (A >> 4) - (operand >> 4) - (AL < 0);\n                if (AL < 0) { AL -= 6; }\n                if (AH < 0) { AH -= 6; }\n                var sub = A - operand - (1-C);\n                setC(~sub & 256);\n                setV(((A ^ operand) & (A ^ sub)) & 128);\n                setZ(sub & 255);\n                setN(sub);\n                A = ((AH << 4) | (AL & 15)) & 255;\n            } else {\n                operand = (~data) & 255;\n                sub = A + operand + C;\n                setC(sub > 255);\n                setV(((A ^ sub) & (operand ^ sub) & 0x80));\n                A = sub & 255;\n                setZ(A);\n                setN(A);\n            }\n        });\n    }\n\n    function newuRLA(addressing) {\n        return addressing(function uRLA() {\n            illegalOpcode(\"RLA\");\n            var val = data;\n            var oldC = C;\n            setC(val & 0x80);\t\t// bit 7 was set\n            val = ((val << 1) | oldC) & 255;\n            data = val;\n            A &= val;\n            setZ(val);              // TODO Verify. May be A instead of val in the flags setting\n            setN(val);\n        });\n    }\n\n    function newuRRA(addressing) {\n        return addressing(function uRRA() {\n            illegalOpcode(\"RRA\");\n            var val = data;\n            var oldC = C ? 0x80 : 0;\n            setC(val & 0x01);\t\t// bit 0 was set\n            val = (val >>> 1) | oldC;\n            data = val;\n            // RRA is the same as ADC from here\n            if (D) {\n                var operand = data;\n                var AL = (A & 15) + (operand & 15) + C;\n                if (AL > 9) { AL += 6; }\n                var AH = ((A >> 4) + (operand >> 4) + (AL > 15)) << 4;\n                setZ((A + operand + C) & 255);\n                setN(AH);\n                setV(((A ^AH) & ~(A ^ operand)) & 128);\n                if (AH > 0x9f) { AH += 0x60; }\n                setC(AH > 255);\n                A = (AH | (AL & 15)) & 255;\n            } else {\n                var add = A + data + C;\n                setC(add > 255);\n                setV(((A ^ add) & (data ^ add)) & 0x80);\n                A = add & 255;\n                setZ(A);\n                setN(A);\n            }\n        });\n    }\n\n    function newuSLO(addressing) {\n        return addressing(function uSLO() {\n            illegalOpcode(\"SLO\");\n            var val = data;\n            setC(val & 0x80);\t\t// bit 7 was set\n            val = (val << 1) & 255;\n            data = val;\n            val = A | val;\n            A = val;\n            setZ(val);\n            setN(val);\n        });\n    }\n\n    function newuSRE(addressing) {\n        return addressing(function uSRE() {\n            illegalOpcode(\"SRE\");\n            var val = data;\n            setC(val & 0x01);\t\t// bit 0 was set\n            val = val >>> 1;\n            data = val;\n            val = (A ^ val) & 255;\n            A = val;\n            setZ(val);\n            setN(val);\n        });\n    }\n\n\n    // Miscellaneous operations\n\n    function mewPHA() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            function PHA() { pushToStack(A); },\n            fetchNextOpcode\n        ];\n    }\n\n    function newPHP() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            function PHP() { pushToStack(getStatusBits()); },\n            fetchNextOpcode\n        ];\n    }\n\n    function newPLA() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            peekFromStack,\n            function PLA() {\n                A = popFromStack();\n                setZ(A);\n                setN(A);\n            },\n            fetchNextOpcode\n        ];\n    }\n\n    function newPLP() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            peekFromStack,\n            function PLP() { setStatusBits(popFromStack()); },\n            fetchNextOpcode\n        ];\n    }\n\n    function newJSR() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,\n            peekFromStack,\n            function JSR1() { pushToStack((PC >>> 8)  & 0xff); },\n            function JSR2() { pushToStack(PC & 0xff); },\n            fetchADH,\n            function JSR3() { PC = AD; fetchNextOpcode(); }\n        ];\n    }\n\n    function newBRK() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchDataFromImmediate,                 // For debugging purposes, use operand as an arg for BRK!\n            function BRK1() {\n                if (self.debug) self.breakpoint(\"BRK \" + data);\n                pushToStack((PC >>> 8) & 0xff);\n            },\n            function BRK2() { pushToStack(PC & 0xff); },\n            function BRK3() { pushToStack(getStatusBits()); },\n            function BRK4() { AD = bus.read(IRQ_VECTOR); },\n            function BRK5() { AD |= bus.read(IRQ_VECTOR + 1) << 8; },\n            function BRK6() { PC = AD; fetchNextOpcode(); }\n        ];\n    }\n\n    function newRTI() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            peekFromStack,\n            function RTI1() { setStatusBits(popFromStack()); },\n            function RTI2() { AD = popFromStack(); },\n            function RTI3() { AD |= popFromStack() << 8; },\n            function RTI4() { PC = AD; fetchNextOpcode(); }\n        ];\n    }\n\n    function newRTS() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchOpcodeAndDiscard,\n            peekFromStack,\n            function RTS1() { AD = popFromStack(); },\n            function RTS2() { AD |= popFromStack() << 8; },\n            function RTS3() { PC = AD; fetchDataFromImmediate(); },\n            fetchNextOpcode\n        ];\n    }\n\n    function newJMP_ABS() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchADL,\n            fetchADH,\n            function JMP_ABS() { PC = AD; fetchNextOpcode(); }\n        ];\n    }\n\n    function newJMP_IND() {\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchIAL,                           // IAH will be zero\n            fetchIAH,\n            fetchBALFromIA,\n            function JMP_IND1() {\n                add1toIAL();\n                fetchBAHFromIA();\n            },\n            function JMP_IND2() { PC = BA; fetchNextOpcode(); }\n        ];\n    }\n\n    function newBxx(reg, cond) {\n        var branchTaken;\n        if      (reg === bZ) branchTaken = function BxxZ() { return Z === cond; };\n        else if (reg === bN) branchTaken = function BxxN() { return N === cond; };\n        else if (reg === bC) branchTaken = function BxxC() { return C === cond; };\n        else                 branchTaken = function BxxV() { return V === cond; };\n        return [\n            fetchOpcodeAndDecodeInstruction,\n            fetchBranchOffset,\n            function Bxx1() {\n                if (branchTaken()) {\n                    fetchOpcodeAndDiscard();\n                    addBranchOffsetToPCL();\n                } else {\n                    fetchNextOpcode();\n                }\n            },\n            function Bxx2() {\n                if(branchOffsetCrossAdjust) {\n                    fetchOpcodeAndDiscard();\n                    adjustPCHForBranchOffsetCross();\n                } else {\n                    fetchNextOpcode();\n                }\n            },\n            fetchNextOpcode\n        ];\n    }\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            PC: PC, A: A, X: X, Y: Y, SP: SP,\n            N: N, V: V, D: D, I: I, Z: Z, C: C,\n            T: T, o: opcode, R: RDY | 0,\n            d: data, AD: AD, BA: BA, BC: BALCrossed | 0, IA: IA,\n            bo: branchOffset, boa: branchOffsetCrossAdjust\n        };\n    };\n\n    this.loadState = function(state) {\n        PC = state.PC; A = state.A; X = state.X; Y = state.Y; SP = state.SP;\n        N = state.N; V = state.V; D = state.D; I = state.I; Z = state.Z; C = state.C;\n        T = state.T; opcode = state.o; RDY = !!state.R;\n        data = state.d; AD = state.AD; BA = state.BA; BALCrossed = !!state.BC; IA = state.IA;\n        branchOffset = state.bo; branchOffsetCrossAdjust = state.boa;\n\n        instruction = opcode === -1 ? boostrapInstruction : instructions[opcode];      // for states saved right after a reset or before first reset\n    };\n\n\n    // Accessory methods\n\n    this.toString = function() {\n        return \"CPU \" +\n            \" PC: \" + PC.toString(16) + \"  op: \" + opcode.toString() + \"  T: \" + T + \"  data: \" + data + \"\\n\" +\n            \" A: \" + A.toString(16) + \"  X: \" + X.toString(16) + \"  Y: \" + Y.toString(16) + \"  SP: \" + SP.toString(16) + \"     \" +\n            \"N\" + N + \"  \" + \"V\" + V + \"  \" + \"D\" + D + \"  \" + \"I\" + I + \"  \" + \"Z\" + Z + \"  \" + \"C\" + C + \"  \";\n    };\n\n    this.breakpoint = function(mes) {\n        jt.Util.log(mes);\n        if (this.trace) {\n            var text = \"CPU Breakpoint!  \" + (mes ? \"(\" + mes + \")\" : \"\") + \"\\n\\n\" + this.toString();\n            jt.Util.message(text);\n        }\n    };\n\n    //noinspection JSUnusedGlobalSymbols\n    this.runCycles = function(cycles) {\n        //noinspection JSUnresolvedVariable\n        var start = performance.now();\n        for (var i = 0; i < cycles; i++) {\n            this.clockPulse();\n        }\n        //noinspection JSUnresolvedVariable\n        var end = performance.now();\n        jt.Util.message(\"Done running \" + cycles + \" cycles in \" + (end - start) + \" ms.\");\n    };\n\n};\n"
  },
  {
    "path": "src/main/atari/cpu/Ram64K.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Ram64K = function(data) {\n\"use strict\";\n\n    this.write = function(address, value) {\n        data[address] = value;\n    };\n\n    this.read = function(address) {\n        return data[address];\n    };\n\n    this.dump = function(from, to) {\n        var res = \"\";\n        var i;\n        for(i = from; i <= to; i++) {\n            res = res + i.toString(16, 2) + \" \";\n        }\n        res += \"\\n\";\n        for(i = from; i <= to; i++) {\n            res = res + this.read(i).toString(16, 2) + \" \";\n        }\n        return res;\n    }\n\n};"
  },
  {
    "path": "src/main/atari/pia/Pia.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Pia = function() {\n\"use strict\";\n\n    this.powerOn = function() {\n    };\n\n    this.powerOff = function() {\n    };\n\n    this.clockPulse = function() {\n        if (--timerCount <= 0)\n            decrementTimer();\n    };\n\n    this.connectBus = function(aBus) {\n        bus = aBus;\n    };\n\n    this.read = function(address) {\n        var reg = address & ADDRESS_MASK;\n\n        if (reg === 0x04 || reg === 0x06) { readFromINTIM(); return INTIM; }\n        if (reg === 0x00) return SWCHA;\n        if (reg === 0x02) return SWCHB;\n        if (reg === 0x01) return SWACNT;\n        if (reg === 0x03) return SWBCNT;\n        if (reg === 0x05 || reg === 0x07) return INSTAT;\t\t\t\t\t\t// Undocumented\n\n        // debugInfo(String.format(\"Invalid PIA read register address: %04x\", address));\n        return 0;\n    };\n\n    this.write = function(address, i) {\n        var reg = address & ADDRESS_MASK;\n\n        if (reg === 0x04) { TIM1T  = i; setTimerInterval(i, 1); return; }\n        if (reg === 0x05) { TIM8T  = i; setTimerInterval(i, 8); return; }\n        if (reg === 0x06) { TIM64T = i; setTimerInterval(i, 64); return; }\n        if (reg === 0x07) { T1024T = i; setTimerInterval(i, 1024); return; }\n        if (reg === 0x02) { swchbWrite(i); return; }\n        if (reg === 0x03) { SWBCNT = i; debugInfo(\">>>> Ineffective Write to PIA SWBCNT: \" + i); return; }\n        if (reg === 0x00) { debugInfo(\">>>> Unsupported Write to PIA SWCHA: \" + i); return; }\t// Output to controllers not supported\n        if (reg === 0x01) { debugInfo(\">>>> Unsupported Write to PIA SWACNT \" + i); return; }\t// SWACNT configuration not supported\n\n        // debugInfo(String.format(\"Invalid PIA write register address: %04x value %d\", address, b));\n        return 0;\n    };\n\n    var decrementTimer = function() {\t// TODO There might be an accuracy problem here\n        // Also check for overflow\n        if (--INTIM < 0) {\n            INSTAT |= 0xc0;\t\t\t\t\t\t\t\t// Set bit 7 and 6 (Overflow since last INTIM read and since last TIMxx write)\n            INTIM = 0xff;\t\t\t\t\t\t\t\t// Wrap timer\n            timerCount = currentTimerInterval = 1;\t\t// If timer underflows, return to 1 cycle interval per specification\n        } else\n            timerCount = currentTimerInterval;\n    };\n\n    var setTimerInterval = function(value, interval) {\n        INTIM = value;\n        INSTAT &= 0x3f;\t\t\t\t// Reset bit 7 and 6 (Overflow since last INTIM read and since last TIMxx write)\n        timerCount = currentTimerInterval = lastSetTimerInterval = interval;\n        decrementTimer();\t\t\t// Timer immediately decrements after setting per specification\n    };\n\n    var readFromINTIM = function() {\n        INSTAT &= 0xbf;\t\t\t\t\t\t\t\t\t// Resets bit 6 (Overflow since last INTIM read)\n        // If fastDecrement was active (currentTimerInterval == 1), interval always returns to set value after read per specification\n        if (currentTimerInterval === 1)\n            timerCount = currentTimerInterval = lastSetTimerInterval;\n    };\n\n    var swchbWrite = function(val) {\n        // Only bits 2, 4 and 5 can be written\n        SWCHB = (SWCHB & 0xcb) | (val & 34);\n    };\n\n    var debugInfo = function(str) {\n        if (self.debug)\n            jt.Util.log(str);\n    };\n\n\n    // Controls interface  -----------------------------------------\n\n    var controls = jt.ConsoleControls;\n\n    this.controlStateChanged = function(control, state) {\n        switch (control) {\n            case controls.JOY0_UP:        if (state) SWCHA &= 0xef; else SWCHA |= 0x10; return;\t//  0 = Pressed\n            case controls.JOY0_DOWN:      if (state) SWCHA &= 0xdf; else SWCHA |= 0x20; return;\n            case controls.PADDLE1_BUTTON:\n            case controls.JOY0_LEFT:      if (state) SWCHA &= 0xbf; else SWCHA |= 0x40; return;\n            case controls.PADDLE0_BUTTON:\n            case controls.JOY0_RIGHT:     if (state) SWCHA &= 0x7f; else SWCHA |= 0x80; return;\n            case controls.JOY1_UP:        if (state) SWCHA &= 0xfe; else SWCHA |= 0x01; return;\n            case controls.JOY1_DOWN:      if (state) SWCHA &= 0xfd; else SWCHA |= 0x02; return;\n            case controls.JOY1_LEFT:      if (state) SWCHA &= 0xfb; else SWCHA |= 0x04; return;\n            case controls.JOY1_RIGHT:     if (state) SWCHA &= 0xf7; else SWCHA |= 0x08; return;\n            case controls.RESET:          if (state) SWCHB &= 0xfe; else SWCHB |= 0x01; return;\n            case controls.SELECT:         if (state) SWCHB &= 0xfd; else SWCHB |= 0x02; return;\n        }\n        // Toggles\n        if (!state) return;\n        switch (control) {\n            case controls.BLACK_WHITE: if ((SWCHB & 0x08) == 0) SWCHB |= 0x08; else SWCHB &= 0xf7;\t\t//\t0 = B/W, 1 = Color\n                bus.getTia().getVideoOutput().showOSD((SWCHB & 0x08) != 0 ? \"COLOR\" : \"B/W\", true); return;\n            case controls.DIFFICULTY0: if ((SWCHB & 0x40) == 0) SWCHB |= 0x40; else SWCHB &= 0xbf; \t\t//  0 = Beginner, 1 = Advanced\n                bus.getTia().getVideoOutput().showOSD((SWCHB & 0x40) != 0 ? \"P1 Expert\" : \"P1 Novice\", true); return;\n            case controls.DIFFICULTY1: if ((SWCHB & 0x80) == 0) SWCHB |= 0x80; else SWCHB &= 0x7f;\t\t//  0 = Beginner, 1 = Advanced\n                bus.getTia().getVideoOutput().showOSD((SWCHB & 0x80) != 0 ? \"P2 Expert\" : \"P2 Novice\", true); return;\n        }\n    };\n\n    this.controlsStateReport = function(report) {\n        //  Only Panel Controls are visible from outside\n        report[controls.BLACK_WHITE] = (SWCHB & 0x08) === 0;\n        report[controls.DIFFICULTY0] = (SWCHB & 0x40) !== 0;\n        report[controls.DIFFICULTY1] = (SWCHB & 0x80) !== 0;\n        report[controls.SELECT]      = (SWCHB & 0x02) === 0;\n        report[controls.RESET]       = (SWCHB & 0x01) === 0;\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            t:          timerCount,\n            c:          currentTimerInterval,\n            l:          lastSetTimerInterval,\n            SA:         SWCHA,\n            SAC:        SWACNT,\n            SB:         SWCHB,\n            SBC:        SWBCNT,\n            IT:         INTIM,\n            IS:         INSTAT,\n            T1:         TIM1T,\n            T8:         TIM8T,\n            T6:         TIM64T,\n            T2:         T1024T\n        };\n    };\n\n    this.loadState = function(state) {\n        timerCount           = state.t;\n        currentTimerInterval = state.c;\n        lastSetTimerInterval = state.l;\n        // SWCHA           \t = state.SA;\t\t\t// Do not load controls state\n        SWACNT               = state.SAC;\n        SWCHB                = state.SB;\n        SWBCNT               = state.SBC;\n        INTIM                = state.IT;\n        INSTAT               = state.IS;\n        TIM1T                = state.T1;\n        TIM8T                = state.T8;\n        TIM64T               = state.T6;\n        T1024T               = state.T2;\n    };\n\n\n    // State Variables ----------------------------------------------\n\n    this.debug = false;\n\n    var bus;\n\n    var timerCount = 1024;\t\t\t\t// Start with the largest timer interval\n    var currentTimerInterval = 1024;\n    var lastSetTimerInterval = 1024;\n\n\n    // Registers ----------------------------------------------------\n\n    var SWCHA=      \t\t\t\t\t// 11111111  Port A; input or output  (read or write)\n        0xff;\t\t\t\t\t\t    // All directions of both controllers OFF\n    var SWACNT = 0;\t\t\t\t\t\t// 11111111  Port A DDR, 0=input, 1=output\n    var SWCHB = \t\t\t\t\t\t// 11..1.11  Port B; console switches (should be read only but unused bits can be written and read)\n        0x0b;  \t\t\t\t\t\t    // Reset OFF; Select OFF; B/W OFF; Difficult A/B OFF (Amateur)\n    var SWBCNT = 0; \t\t\t\t\t// 11111111  Port B DDR (hard wired as input)\n    var INTIM =   \t\t\t\t\t\t// 11111111  Timer output (read only)\n        (Math.random() * 256) | 0 ;     // Some random value. Games use this at startup to seed random number generation\n    var INSTAT = 0;     \t            // 11......  Timer Status (read only, undocumented)\n    var TIM1T  = 0;  \t    \t\t\t// 11111111  set 1 clock interval (838 nsec/interval)\n    var TIM8T  = 0;  \t\t\t\t\t// 11111111  set 8 clock interval (6.7 usec/interval)\n    var TIM64T = 0; \t\t\t\t\t// 11111111  set 64 clock interval (53.6 usec/interval)\n    var T1024T = 0; \t\t\t\t\t// 11111111  set 1024 clock interval (858.2 usec/interval)\n\n\n    // Constants  ----------------------------------------------------\n\n    var ADDRESS_MASK = 0x0007;\n\n};"
  },
  {
    "path": "src/main/atari/pia/Ram.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Ram = function() {\n\"use strict\";\n\n    function init() {\n        // RAM comes totally random at creation\n        for (var i = bytes.length - 1; i >= 0; i--) {\n            bytes[i] = (Math.random() * 256) | 0;\n        }\n    }\n\n    this.powerOn = function() {\n    };\n\n    this.powerOff = function() {\n    };\n\n    this.read = function(address) {\n        return bytes[address & ADDRESS_MASK];\n    };\n\n    this.write = function(address, val) {\n        bytes[address & ADDRESS_MASK] = val;\n    };\n\n    this.powerFry = function() {\n        var variance = 1 - FRY_VARIANCE + 2 * Math.random() * FRY_VARIANCE;\n        // Randomly put \"0\" in bits on the ram\n        var fryZeroBits = variance * FRY_ZERO_BITS;\n        for (var i = 0; i < fryZeroBits; i++)\n            bytes[(Math.random() * 128) | 0] &= ((Math.random() * 256) | 0);\n        // Randomly put \"1\" in bits on the ram\n        var fryOneBits = variance * FRY_ONE_BITS;\n        for (i = 0; i < fryOneBits; i++)\n            bytes[(Math.random() * 128) | 0] |= (0x01 << ((Math.random() * 8) | 0));\n    };\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n            b: jt.Util.storeInt8BitArrayToStringBase64(bytes)\n        };\n    };\n\n    this.loadState = function(state) {\n        bytes = jt.Util.restoreStringBase64ToInt8BitArray(state.b, bytes);\n    };\n\n\n    // Variables  -------------------------------------------\n\n    var bytes = new Array(128);\n\n    var ADDRESS_MASK = 0x007f;\n\n    var FRY_ZERO_BITS = 120;        // Quantity of bits to change\n    var FRY_ONE_BITS = 25;\n    var FRY_VARIANCE = 0.3;\n\n\n    init();\n\n};"
  },
  {
    "path": "src/main/atari/tia/Tia.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// TODO NUSIZ during scan with HMOVE not correct. For now kill the scan in progress\n// TODO Starfield Effect not implemented\n// TODO AUTO Video Standard Detection too aggressive?\n// TODO Vsynch lines count affects vertical position!\n\njt.Tia = function(pCpu, pPia, audioSocket) {\n    \"use strict\";\n\n    var self = this;\n\n    function init() {\n        generateObjectsLineSprites();\n        generateObjectsCopiesOffsets();\n    }\n\n    this.powerOn = function() {\n        jt.Util.arrayFill(linePixels, VBLANK_COLOR);\n        jt.Util.arrayFill(debugPixels, 0);\n        audioSignal.getChannel0().setVolume(0);\n        audioSignal.getChannel1().setVolume(0);\n        initLatchesAtPowerOn();\n        hMoveLateHit = false;\n        changeClock = changeClockPrevLine = -1;\n        audioSignal.powerOn();\n        powerOn = true;\n    };\n\n    this.powerOff = function() {\n        powerOn = false;\n        // Let monitors know that the signals are off\n        videoSignal.signalOff();\n        audioSignal.powerOff();\n    };\n\n    this.frame = function() {\n        do {\n            // Begin line\n            clock = 0;\n            changeClock = -1;\n            renderClock = HBLANK_DURATION;\n\n            if (debug) {\n                if (debugLevel >= 4) jt.Util.arrayFill(linePixels, 0xff000000);     // clear line\n                else if (debugLevel >= 2 && debugLevel < 4) changeClock = 0;        // force entire line render\n            }\n\n            checkLateHMOVE();\n            // Send the first clock/3 pulse to the CPU and PIA, perceived by TIA at clock 0 before releasing halt, then release halt\n            bus.clockPulse();\n            cpu.setRDY(true);\n            for (var x = 0; x < 22; ++x) { clock += 3; bus.clockPulse(); }      // TIA 3..66     CPU 1..22\n            updateExtendedHBLANK();\n            for (var y = 0; y < 27; ++y) { clock += 3; bus.clockPulse(); }      // TIA 69..147   CPU 23..49\n            audioSignal.audioClockPulse();\n            endObjectsAltStatusMidLine();\n            for (var z = 0; z < 26; ++z) { clock += 3; bus.clockPulse(); }      // TIA 150..225  CPU 50..75\n            audioSignal.audioClockPulse();\n            finishLine();\n        } while(!videoSignal.nextLine(linePixels, vSyncOn));\n\n        videoSignal.finishFrame();\n    };\n\n    this.connectBus = function(aBus) {\n        bus = aBus;\n    };\n\n    this.getVideoOutput = function() {\n        return videoSignal;\n    };\n\n    this.getAudioOutput = function() {\n        return audioSignal;\n    };\n\n    this.setVideoStandard = function(standard) {\n        videoSignal.setVideoStandard(standard);\n        palette = jt.TiaPalettes[standard.name];\n    };\n\n    this.debug = function(level) {\n        debugLevel = level > 4 ? 0 : level;\n        debug = debugLevel !== 0;\n        //cpu.debug = debug;\n        pia.debug = debug;\n        if (debug) debugSetColors();\n        else debugRestoreColors();\n    };\n\n    this.showDebugMessage = function() {\n        videoSignal.showOSD(debug ? \"Debug Level \" + debugLevel : \"Debug OFF\", true);\n    };\n\n    this.debugNoCollisions = function(state) {\n        debugNoCollisions = !!state;\n    };\n\n    this.getDebugNoCollisions = function() {\n        return debugNoCollisions;\n    };\n\n    this.read = function(address) {\n        switch(address & READ_ADDRESS_MASK) {\n            // P0P1, P0M0, P0M1, P0PF,     P0BL, P1M0, P1M1, P1PF,     P1BL, M0M1, M0PF, M0BL,     M1PF, M1BL, PFBL, XXXX\n            //  15    14    13    12        11    10    9     8         7     6     5     4         3     2     1     0\n\n            case 0x00: updateToClock(); return ((collisions & 0x0400) >> 3) | ((collisions & 0x4000) >> 8);          // CXM0P\n            case 0x01: updateToClock(); return ((collisions & 0x2000) >> 6) | ((collisions & 0x0200) >> 3);          // CXM1P\n            case 0x02: updateToClock(); return ((collisions & 0x1000) >> 5) | ((collisions & 0x0800) >> 5);          // CXP0FB\n            case 0x03: updateToClock(); return ((collisions & 0x0100) >> 1) | ((collisions & 0x0080) >> 1);          // CXP1FB\n            case 0x04: updateToClock(); return ((collisions & 0x0020) << 2) | ((collisions & 0x0010) << 2);          // CXM0FB\n            case 0x05: updateToClock(); return ((collisions & 0x0008) << 4) | ((collisions & 0x0004) << 4);          // CXM1FB\n            case 0x06: updateToClock(); return ((collisions & 0x0002) << 6);                                         // CXBLPF\n            case 0x07: updateToClock(); return ((collisions & 0x8000) >> 8) | (collisions & 0x0040);                 // CXPPMM\n\n            case 0x08: return INPT0;\n            case 0x09: return INPT1;\n            case 0x0A: return INPT2;\n            case 0x0B: return INPT3;\n            case 0x0C: return INPT4;\n            case 0x0D: return INPT5;\n            default:   return 0;\n        }\n    };\n\n    this.write = function(address, i) {\n        switch (address & WRITE_ADDRESS_MASK) {\n            // VSync, VBlank and HSync\n            case 0x00: vSyncSet(i); return;\n            case 0x01: vBlankSet(i); return;\n            case 0x02: cpu.setRDY(false); if (debug) debugPixel(DEBUG_WSYNC_COLOR); return; \t       // <STROBE> Halts the CPU until the next HBLANK\n\n            // Playfield\n            case 0x09: if (COLUBK !== i && !debug) { changeAtClock(); COLUBK = i; playfieldBackground = palette[i]; } return;\n            case 0x0D: if (PF0 !== (i & 0xf0)) { changePlayfieldAtClock(); PF0 = i & 0xf0; playfieldUpdateSprite(); } return;\n            case 0x0E: if (PF1 !== i) { changePlayfieldAtClock(); PF1 = i; playfieldUpdateSprite(); } return;\n            case 0x0F: if (PF2 !== i) { changePlayfieldAtClock(); PF2 = i; playfieldUpdateSprite(); } return;\n\n            // Playfield & Ball\n            case 0x08: if (COLUPF !== i && !debug) { if ((playfieldEnabled && !playfieldScoreMode) || ballEnabled) changeAtClock(); COLUPF = i; ballColor = palette[i]; if (!playfieldScoreMode) playfieldColor = playfieldLeftColor = playfieldRightColor = ballColor } return;\n            case 0x0A: if (CTRLPF !== i) { playfieldSetShape(i); } return;\n\n            // Ball\n            case 0x14: hitRESBL(); return;\n            case 0x1F: if (ENABLd !== (i & 0x02)) { ENABLd = i & 0x02; if (!VDELBL) { changeAtClock(); ballSetEnabled(ENABLd); } } return;\n            case 0x27: if (VDELBL !== (i  & 1)) { VDELBL = i & 1; if (ENABL !== ENABLd) { changeAtClock(); ballSetEnabled(VDELBL ? ENABL : ENABLd); } } return;\n\n            // Player0\n            case 0x04: player0SetShape(i); return;\n            case 0x06: if (COLUP0 !== i && !debug) { COLUP0 = i; if (player0Enabled || missile0Enabled || (playfieldEnabled && playfieldScoreMode)) changeAtClock(); player0Color = missile0Color = palette[i]; if (playfieldScoreMode) playfieldLeftColor = player0Color; } return;\n            case 0x0B: if (REFP0 !== ((i >> 3) & 1)) { REFP0 = (i >> 3) & 1; player0UpdateSprite(0); } return;\n            case 0x10: hitRESP0(); return;\n            case 0x1B: player0SetSprite(i); return;\n            case 0x25: if (VDELP0 !== (i  & 1)) { VDELP0 = i & 1; if (GRP0 !== GRP0d) player0UpdateSprite(0); } return;\n\n            // Player1\n            case 0x05: player1SetShape(i); return;\n            case 0x07: if (COLUP1 !== i && !debug) { COLUP1 = i; if (player1Enabled || missile1Enabled || (playfieldEnabled && playfieldScoreMode)) changeAtClock(); player1Color = missile1Color = palette[i]; if (playfieldScoreMode) playfieldRightColor = player1Color; } return;\n            case 0x0C: if (REFP1 !== ((i >> 3) & 1)) { REFP1 = (i >> 3) & 1; player1UpdateSprite(0); } return;\n            case 0x11: hitRESP1(); return;\n            case 0x1C: player1SetSprite(i); return;\n            case 0x26: if (VDELP1 !== (i  & 1)) { VDELP1 = i & 1; if (GRP1 !== GRP1d) player1UpdateSprite(0); } return;\n\n            // Missile0\n            case 0x12: hitRESM0(); return;\n            case 0x1D: if (ENAM0 !== (i & 0x02)) { ENAM0 = i & 0x02; if (!RESMP0) { changeAtClock(); missile0SetEnabled(ENAM0); } } return;\n            case 0x28: missile0SetResetToPlayer(i); return;\n\n            // Missile1\n            case 0x13: hitRESM1(); return;\n            case 0x1E: if (ENAM1 !== (i & 0x02)) { ENAM1 = i & 0x02; if (!RESMP1) { changeAtClock(); missile1SetEnabled(ENAM1); } } return;\n            case 0x29: missile1SetResetToPlayer(i); return;\n\n            // HMOVE\n            case 0x20: HMP0 = (i > 127 ? -16 : 0) + (i >> 4); return;\n            case 0x21: HMP1 = (i > 127 ? -16 : 0) + (i >> 4); return;\n            case 0x22: HMM0 = (i > 127 ? -16 : 0) + (i >> 4); return;\n            case 0x23: HMM1 = (i > 127 ? -16 : 0) + (i >> 4); return;\n            case 0x24: HMBL = (i > 127 ? -16 : 0) + (i >> 4); return;\n            case 0x2A: hitHMOVE(); return;\n            case 0x2B: HMP0 = HMP1 = HMM0 = HMM1 = HMBL = 0; return;\n\n            // Collisions\n            case 0x2C: changeAtClock(); collisions = 0; return;\n\n            // RSYNC\n            //case 0x03: clock = 0; return;\n\n            // Audio\n            case 0x15: if (AUDC0 !== i) { AUDC0 = i; audioSignal.getChannel0().setControl(i & 0x0f); } return;\n            case 0x16: if (AUDC1 !== i) { AUDC1 = i; audioSignal.getChannel1().setControl(i & 0x0f); } return;\n            case 0x17: if (AUDF0 !== i) { AUDF0 = i; audioSignal.getChannel0().setDivider((i & 0x1f) + 1); } return;     // Bits 0-4, Divider from 1 to 32\n            case 0x18: if (AUDF1 !== i) { AUDF1 = i; audioSignal.getChannel1().setDivider((i & 0x1f) + 1); } return;\n            case 0x19: if (AUDV0 !== i) { AUDV0 = i; audioSignal.getChannel0().setVolume(i & 0x0f); } return;            // Bits 0-3, Volume from 0 to 15\n            case 0x1A: if (AUDV1 !== i) { AUDV1 = i; audioSignal.getChannel1().setVolume(i & 0x0f); } return;\n        }\n    };\n\n    // caution: endClock can exceed but never wrap end of line!\n    function renderLineTo(endClock) {\n        var p, finalClock = (endClock > LINE_WIDTH ? LINE_WIDTH : endClock);\n\n        if (vBlankOn) {\n            // No collisions will be detected during VBLANK\n            for (var bPixel = renderClock; bPixel < finalClock; ++bPixel) linePixels[bPixel] = vBlankColor;\n            return;\n        }\n\n        var newCollisions = collisions;\n        for (var pixel = renderClock - HBLANK_DURATION, finalPixel = finalClock - HBLANK_DURATION; pixel < finalPixel; ++pixel) {\n\n            // Pixel color and Flags for Collision latches\n            var color = 0, collis = collisionsPossible;\n\n            if (playfieldPriority) {\n                // Playfield\n                if (playfieldEnabled) {\n                    if ((pixel < 80 ? (playfieldPatternL >> (pixel >> 2)) : (playfieldPatternR >> ((pixel - 80) >> 2))) & 1) {\n                        color = playfieldColor;     // ignore score mode\n                    } else collis &= PFC;\n                }\n                // Ball\n                if (ballEnabled) {\n                    p = pixel - ballPixel; if (p < 0) p += 160;\n                    if ((missileBallLineSprites[ballLineSpritePointer + (p >> 3)] >> (p & 0x07)) & 1) {\n                        if (!color) color = ballColor;\n                    } else collis &= BLC;\n                }\n            }\n\n            // Player0\n            if (player0Enabled) {\n                p = pixel - player0Pixel; if (p < 0) p += 160;\n                if ((playerLineSprites[player0LineSpritePointer + (p >> 3)] >> (p & 0x07)) & 1) {\n                    if (!color) color = player0Color;\n                } else collis &= P0C;\n            }\n\n            // Missile0\n            if (missile0Enabled) {\n                p = pixel - missile0Pixel; if (p < 0) p += 160;\n                if ((missileBallLineSprites[missile0LineSpritePointer + (p >> 3)] >> (p & 0x07)) & 1) {\n                    if (!color) color = missile0Color;\n                } else collis &= M0C;\n            }\n\n            // Player1\n            if (player1Enabled) {\n                p = pixel - player1Pixel; if (p < 0) p += 160;\n                if ((playerLineSprites[player1LineSpritePointer + (p >> 3)] >> (p & 0x07)) & 1) {\n                    if (!color) color = player1Color;\n                } else collis &= P1C;\n            }\n\n            // Missile1\n            if (missile1Enabled) {\n                p = pixel - missile1Pixel; if (p < 0) p += 160;\n                if ((missileBallLineSprites[missile1LineSpritePointer + (p >> 3)] >> (p & 0x07)) & 1) {\n                    if (!color) color = missile1Color;\n                } else collis &= M1C;\n            }\n\n            if (!playfieldPriority) {\n                // Playfield\n                if (playfieldEnabled) {\n                    if (pixel < 80) {\n                        if ((playfieldPatternL >> (pixel >> 2)) & 1) {\n                            if (!color) color = playfieldLeftColor;\n                        } else collis &= PFC;\n                    } else {\n                        if ((playfieldPatternR >> ((pixel - 80) >> 2)) & 1) {\n                            if (!color) color = playfieldRightColor;\n                        } else collis &= PFC;\n                    }\n                }\n                // Ball\n                if (ballEnabled) {\n                    p = pixel - ballPixel; if (p < 0) p += 160;\n                    if ((missileBallLineSprites[ballLineSpritePointer + (p >> 3)] >> (p & 0x07)) & 1) {\n                        if (!color) color = ballColor;\n                    } else collis &= BLC;\n                }\n            }\n\n            // Set pixel color, or background\n            linePixels[pixel + HBLANK_DURATION] = color || playfieldBackground;\n\n            // Update collision latches\n            newCollisions |= collis;\n        }\n        if (!debugNoCollisions) collisions = newCollisions;\n    }\n\n    function changeAt(atClock) {\n        if (vBlankOn) return;\n\n        if (atClock > renderClock) {\n            if (changeClock >= 0 || changeClockPrevLine >= 0) renderLineTo(atClock);\n            renderClock = atClock;\n        }\n        changeClock = renderClock;\n    }\n\n    function changeAtClock() {\n        changeAt(clock);\n    }\n\n    function changeAtClockPlus(add) {\n        changeAt(clock + add);                      // Renders \"add\" pixels forward, for changes that are only effective after \"add\" clocks\n    }\n\n    function changePlayfieldAtClock() {\n        if (debug) debugPixel(DEBUG_PF_GR_COLOR);\n        // PF changes are only effective after 2 clocks. Additionally, once a playfield pixel (4 clocks wide) has started,\n        // it will remain the same until the end. So we will perceive this change accordingly\n        if (clock < renderClock - 1) return changeAtClock();         // Does not matter\n        var ip = clock & 0x03;\n        if (ip < 3) changeAtClockPlus(4 - ip);      // Perceive change only at the next PF pixel\n        else changeAtClockPlus(5);                  // Perceive change only 2 PF pixels later\n    }\n\n    function changeVBlankAtClockPlus1() {\n        var atClock = clock + 1;\n        if (atClock > renderClock) {\n            if (changeClock >= 0 || changeClockPrevLine >= 0) renderLineTo(atClock);\n            renderClock = atClock;\n        }\n        changeClock = renderClock;\n    }\n\n    function updateToClock() {    // does not trigger change\n        if (vBlankOn) return;\n\n        if (clock > renderClock) {\n            if (changeClock >= 0 || changeClockPrevLine >= 0) renderLineTo(clock);\n            renderClock = clock;\n        }\n    }\n\n    var finishLine = function() {\n        // Render remaining part of current line if needed\n        if (changeClock >= 0) {\n            renderLineTo(LINE_WIDTH);\n            changeClockPrevLine = changeClock;\n        } else {\n            if (changeClockPrevLine >= 0) {\n                renderLineTo(changeClockPrevLine);\n                changeClockPrevLine = -1;\n            }\n        }\n        // Disabled repeat mode\n        //renderLineTo(LINE_WIDTH);\n        //changeClockPrevLine = 0;\n\n        endObjectsAltStatusEndOfLine();\n\n        // Handle Paddles capacitor charging, only if paddles are connected (position >= 0)\n        if (paddle0Position >= 0 && !paddleCapacitorsGrounded) {\n            if (INPT0 < 0x80 && ++paddle0CapacitorCharge >= paddle0Position) INPT0 |= 0x80;\n            if (INPT1 < 0x80 && ++paddle1CapacitorCharge >= paddle1Position) INPT1 |= 0x80;\n        }\n\n        // Inject debugging information in the line if needed\n        if (debugLevel >= 1) processDebugPixelsInLine();\n    };\n\n    function augmentCollisionsPossible() {\n        collisionsPossible = 0xfffe;\n        if (!player0Enabled) collisionsPossible &= P0C;\n        if (!player1Enabled) collisionsPossible &= P1C;\n        if (!missile0Enabled) collisionsPossible &= M0C;\n        if (!missile1Enabled) collisionsPossible &= M1C;\n        if (!playfieldEnabled) collisionsPossible &= PFC;\n        if (!ballEnabled) collisionsPossible &= BLC;\n    }\n\n    var playfieldSetShape = function(i) {\n        if (CTRLPF === i) return;\n\n        var v = i & 0x07;\n        if (v !== (CTRLPF & 0x07)) {\n            if (playfieldEnabled) changeAtClock();\n\n            v = (i & 0x01) !== 0;\n            if (playfieldReflected !== v) {\n                playfieldReflected = v;\n                playfieldUpdateSpriteR();\n            }\n\n            v = (i & 0x02) !== 0;\n            if (playfieldScoreMode !== v) {\n                playfieldScoreMode = v;\n                if (!debug) {\n                    if (v) { playfieldLeftColor = player0Color; playfieldRightColor = player1Color }\n                    else playfieldColor = playfieldLeftColor = playfieldRightColor = ballColor;\n                }\n            }\n\n            playfieldPriority = (i & 0x04) !== 0;\n        }\n\n        v = i & 0x30;\n        if (v !== (CTRLPF & 0x30)) {\n            if (ballEnabled) changeAtClock();\n            ballLineSpritePointer = (v >> 1) << 6;\n        }\n\n        CTRLPF = i;\n    };\n\n    function playfieldUpdateSprite() {\n        playfieldPatternL = (PF2 << 12) | (jt.Util.reverseInt8(PF1) << 4) | ((PF0 & 0xf0) >> 4);\n        playfieldUpdateSpriteR();\n    }\n\n    function playfieldUpdateSpriteR() {\n        playfieldPatternR = playfieldReflected ? (jt.Util.reverseInt8(PF0) << 16) | (PF1 << 8) | jt.Util.reverseInt8(PF2) : playfieldPatternL;\n        if (playfieldPatternL !== 0 || playfieldPatternR !== 0) {\n            playfieldEnabled = true; augmentCollisionsPossible();\n        } else {\n            playfieldEnabled = false; collisionsPossible &= PFC;\n        }\n    }\n\n    function ballSetEnabled(boo) {\n        if (boo) {\n            ballEnabled = true; augmentCollisionsPossible();\n        } else {\n            ballEnabled = false; collisionsPossible &= BLC;\n        }\n    }\n\n    function player0SetShape(i) {\n        if (NUSIZ0 === i) return;\n\n        var dif = NUSIZ0 ^ i;\n        var oldNUSIZ0 = NUSIZ0;\n        NUSIZ0 = i;\n        var newShape = (i & 7);\n        var c = clock < HBLANK_DURATION ? 2 : clock - HBLANK_DURATION + 2;\n\n        //if (debug) debugPixel(DEBUG_ALT_COLOR);\n\n        if (dif & 0x07) {\n            // Enter Alt mode?\n            if (!player0Alt) {\n                var into = c - player0Pixel; if (into < 0) into += 160; else if (into >= 160) into -= 160;\n                var oldScan = playerScanOffsetsShape[(oldNUSIZ0 & 7) * 160 + into];\n                var newScan = playerScanOffsetsShape[newShape * 160 + into];\n                if (newScan !== oldScan) {\n                    if (player0Enabled) changeAtClockPlus(2);\n                    player0Alt = player0Pixel >= 80 ? 1 : 2; player0LineSpritePointer += 20;\n                    player0AltFrom = into;\n                    player0AltLength = playerCopyLengthPerShape[newShape];\n                    if (oldScan & 0xc0)\n                        player0AltCopyOffset = oldScan & 0xbf;              // Scan about to start or in empty area\n                    else if (clock < HBLANK_DURATION && hMoveHitBlank)\n                        player0AltCopyOffset = 0x80;                        // Middle of scan during HBLANK, kill scan\n                    else {\n                        var pixelSize = playerPixelSizePerShape[newShape];\n                        player0AltCopyOffset = playerScanStartPerShape[newShape] + oldScan * pixelSize + (into & 1);\n                        player0AltLength -= (newScan & 0xc0 ? 0 : newScan) * pixelSize;\n                    }\n\n                    //if (debug && videoSignal.monitor.currentLine() === 150) debugInfo(\"oldScan: \" + oldScan.toString(16) + \", newScan: \" + newScan.toString(16) + \", len: \" + player0AltLength);\n                }\n            }\n            player0UpdateSprite(2);\n        }\n\n        if (dif & 0x37) {\n            // Enter Alt mode?\n            if (!missile0Alt) {\n                into = c - missile0Pixel; if (into < 0) into += 160; else if (into >= 160) into -= 160;\n                oldScan = missileScanOffsetsShape[(((oldNUSIZ0 & 0x30) >> 1) | (oldNUSIZ0 & 7)) * 160 + into];\n                newScan = missileScanOffsetsShape[(((i & 0x30) >> 1) | newShape) * 160 + into];\n                if (newScan !== oldScan) {\n                    if (missile0Enabled) changeAtClockPlus(2);\n                    missile0Alt = missile0Pixel >= 80 ? 1 : 2; missile0LineSpritePointer += 20;\n                    missile0AltFrom = into;\n                    var size = (i & 0x30) >> 4;\n                    missile0AltLength = 4 + (1 << size);\n                    if (oldScan & 0xc0)\n                        missile0AltCopyOffset = oldScan & 0xbf;              // Scan about to start or in empty area\n                    else if (clock < HBLANK_DURATION && hMoveHitBlank)\n                        missile0AltCopyOffset = 0x80;                        // Middle of scan during HBLANK, kill scan\n                    else {\n                        missile0AltCopyOffset = 4 + (oldScan << size) + (into & 1);\n                        missile0AltLength -= (newScan & 0xc0 ? 0 : newScan) << size;\n                    }\n                }\n            }\n            missile0UpdateSprite(2);\n        }\n    }\n\n    function player0SetSprite(i) {\n        if (debug) debugPixel(DEBUG_P0_GR_COLOR);\n        if (GRP0d !== i) {\n            GRP0d = i;\n            if (!VDELP0) player0UpdateSprite(1);\n        }\n        if (GRP1 !== GRP1d) {\n            GRP1 = GRP1d;\n            if (VDELP1) player1UpdateSprite(1);\n        }\n    }\n\n    function player0UpdateSprite(clockPlus) {\n        var sprite = VDELP0 ? GRP0 : GRP0d;\n        if (sprite) {\n            var p = (((REFP0 << 11) | (sprite << 3) | (NUSIZ0 & 7)) << 6) + (player0Alt ? 20 : 0);\n            if (!player0Enabled || player0LineSpritePointer !== p) {\n                changeAtClockPlus(clockPlus);\n                player0LineSpritePointer = p;\n                if (player0Alt) player0DefineAlt();\n            }\n            if (!player0Enabled) {\n                player0Enabled = true; augmentCollisionsPossible();\n            }\n        } else {\n            if (player0Enabled) {\n                changeAtClockPlus(clockPlus);\n                player0Enabled = false; collisionsPossible &= P0C;\n            }\n        }\n    }\n\n    function player1SetShape(i) {\n        if (NUSIZ1 === i) return;\n\n        var dif = NUSIZ1 ^ i;\n        var oldNUSIZ1 = NUSIZ1;\n        NUSIZ1 = i;\n        var newShape = (i & 7);\n        var c = clock < HBLANK_DURATION ? 2 : clock - HBLANK_DURATION + 2;\n\n        if (dif & 0x07) {\n            // Enter Alt mode?\n            if (!player1Alt) {\n                var into = c - player1Pixel; if (into < 0) into += 160; else if (into >= 160) into -= 160;\n                var oldScan = playerScanOffsetsShape[(oldNUSIZ1 & 7) * 160 + into];\n                var newScan = playerScanOffsetsShape[newShape * 160 + into];\n                if (newScan !== oldScan) {\n                    if (player1Enabled) changeAtClockPlus(2);\n                    player1Alt = player1Pixel >= 80 ? 1 : 2; player1LineSpritePointer += 40;\n                    player1AltFrom = into;\n                    player1AltLength = playerCopyLengthPerShape[newShape];\n                    if (oldScan & 0xc0)\n                        player1AltCopyOffset = oldScan & 0xbf;              // Scan about to start or in empty area\n                    else if (clock < HBLANK_DURATION && hMoveHitBlank)\n                        player1AltCopyOffset = 0x80;                        // Middle of scan during HBLANK, kill scan\n                    else {\n                        player1AltCopyOffset = playerScanStartPerShape[newShape] + oldScan * playerPixelSizePerShape[newShape] + (into & 1);\n                        player1AltLength -= (newScan & 0xc0 ? 0 : newScan) * playerPixelSizePerShape[newShape];\n                    }\n                }\n            }\n            player1UpdateSprite(2);\n        }\n\n        if (dif & 0x37) {\n            // Enter Alt mode?\n            if (!missile1Alt) {\n                into = c - missile1Pixel; if (into < 0) into += 160; else if (into >= 160) into -= 160;\n                oldScan = missileScanOffsetsShape[(((oldNUSIZ1 & 0x30) >> 1) | (oldNUSIZ1 & 7)) * 160 + into];\n                newScan = missileScanOffsetsShape[(((i & 0x30) >> 1) | newShape) * 160 + into];\n                if (newScan !== oldScan) {\n                    if (missile1Enabled) changeAtClockPlus(2);\n                    missile1Alt = missile1Pixel >= 80 ? 1 : 2; missile1LineSpritePointer += 40;\n                    missile1AltFrom = into;\n                    var size = (i & 0x30) >> 4;\n                    missile1AltLength = 4 + (1 << size);\n                    if (oldScan & 0xc0)\n                        missile1AltCopyOffset = oldScan & 0xbf;              // Scan about to start or in empty area\n                    else if (clock < HBLANK_DURATION && hMoveHitBlank)\n                        missile1AltCopyOffset = 0x80;                        // Middle of scan during HBLANK, kill scan\n                    else {\n                        missile1AltCopyOffset = 4 + (oldScan << size) + (into & 1);\n                        missile1AltLength -= (newScan & 0xc0 ? 0 : newScan) << size;\n                    }\n                }\n            }\n            missile1UpdateSprite(2);\n        }\n    }\n\n    function player1SetSprite(i) {\n        if (debug) debugPixel(DEBUG_P1_GR_COLOR);\n        if (GRP1d !== i) {\n            GRP1d = i;\n            if (!VDELP1) player1UpdateSprite(1);\n        }\n        if (GRP0 !== GRP0d) {\n            GRP0 = GRP0d;\n            if (VDELP0) player0UpdateSprite(1);\n        }\n        if (ENABL !== ENABLd) {\n            ENABL = ENABLd;\n            if (VDELBL) changeAtClockPlus(1);\n            ballSetEnabled(ENABL);\n        }\n    }\n\n    function player1UpdateSprite(clockPlus) {\n        var sprite = VDELP1 ? GRP1 : GRP1d;\n        if (sprite) {\n            var p = (((REFP1 << 11) | (sprite << 3) | (NUSIZ1 & 7)) << 6) + (player1Alt ? 40 : 0);\n            if (!player1Enabled || player1LineSpritePointer !== p) {\n                changeAtClockPlus(clockPlus);\n                player1LineSpritePointer = p;\n                if (player1Alt) player1DefineAlt();\n            }\n            if (!player1Enabled) {\n                player1Enabled = true; augmentCollisionsPossible();\n            }\n        } else {\n            if (player1Enabled) {\n                changeAtClockPlus(clockPlus);\n                player1Enabled = false; collisionsPossible &= P1C;\n            }\n        }\n    }\n\n    function missile0UpdateSprite(clockPlus) {\n        var p = ((((NUSIZ0 & 0x30) >> 1) | (NUSIZ0 & 7)) << 6) + (missile0Alt ? 20 : 0);\n        if (missile0LineSpritePointer !== p) {\n            if (missile0Enabled) {\n                changeAtClockPlus(clockPlus);\n                missile0LineSpritePointer = p;\n                if (missile0Alt) missile0DefineAlt();\n            } else\n                missile0LineSpritePointer = p;\n        }\n    }\n\n    function missile0SetEnabled(boo) {\n        if (boo) {\n            missile0Enabled = true; augmentCollisionsPossible();\n            if (missile0Alt) missile0DefineAlt();\n        } else {\n            missile0Enabled = false; collisionsPossible &= M0C;\n        }\n    }\n\n    function missile0SetResetToPlayer(i) {\n        if (RESMP0 === (i & 0x02)) return;\n\n        if (ENAM0) {\n            changeAtClock();\n            missile0SetEnabled(!(RESMP0 = i & 0x02));\n        } else\n            RESMP0 = i & 0x02;\n\n        if (!RESMP0) {\n            missile0Pixel = player0Pixel + missileCenterOffsetsPerPlayerSize[NUSIZ0 & 0x07]; if (missile0Pixel >= 160) missile0Pixel -= 160;\n        }\n    }\n\n    function missile1UpdateSprite(clockPlus) {\n        var p = ((((NUSIZ1 & 0x30) >> 1) | (NUSIZ1 & 7)) << 6) + (missile1Alt ? 40 : 0);\n        if (missile1LineSpritePointer !== p) {\n            if (missile1Enabled) {\n                changeAtClockPlus(clockPlus);\n                missile1LineSpritePointer = p;\n                if (missile1Alt) missile1DefineAlt();\n            } else\n                missile1LineSpritePointer = p;\n        }\n    }\n\n    function missile1SetEnabled(boo) {\n        if (boo) {\n            missile1Enabled = true; augmentCollisionsPossible();\n            if (missile1Alt) missile1DefineAlt();\n        } else {\n            missile1Enabled = false; collisionsPossible &= M1C;\n        }\n    }\n\n    function missile1SetResetToPlayer(i) {\n        if (RESMP1 === (i & 0x02)) return;\n\n        if (ENAM1) {\n            changeAtClock();\n            missile1SetEnabled(!(RESMP1 = i & 0x02));\n        } else\n            RESMP1 = i & 0x02;\n\n        if (!RESMP1) {\n            missile1Pixel = player1Pixel + missileCenterOffsetsPerPlayerSize[NUSIZ1 & 0x07]; if (missile1Pixel >= 160) missile1Pixel -= 160;\n        }\n    }\n\n    var hitRESP0 = function() {\n        if (debug) debugPixel(DEBUG_P0_RES_COLOR);\n\n        var r = getRESxPixel();\n        var p = r >= 0 ? r : -r;\n        if (player0Pixel !== p) {\n            if (player0Enabled) changeAtClock();\n            var pStart = (r >= 0 ? p : 0);\n            var into = pStart - player0Pixel; if (into < 0) into += 160;\n            player0Pixel = p;\n            var nusiz = NUSIZ0 & 7;\n\n            if (player0Alt) {\n                if (into <= playerCopyLengthPerShape[nusiz]) return;                  // Keep current Alt def if still in first copy\n            } else\n                player0LineSpritePointer += 20;\n\n            var delta = pStart - p; if (delta < -100) delta += 160;\n            player0Alt = p >= 80 ? 1 : 2;\n            player0AltFrom = delta >= 0 ? delta : 160 + delta;\n            player0AltLength = playerCopyLengthPerShape[nusiz] - delta;\n            player0AltCopyOffset = playerCopyOffsetsReset[nusiz * 160 + into];\n            if (player0Enabled) player0DefineAlt();\n\n            //if (debug && videoSignal.monitor.currentLine() === 80) debugInfo(\"player0Pixel: \" + player0Pixel + \", into: \" + into + \", delta: \" + delta + \", from: \" + player0AltFrom + \", len: \" + player0AltLength + \", off: \" + player0AltCopyOffset);\n        }\n    };\n\n    function player0DefineAlt() {\n        var control = (player0AltFrom << 16) | (player0AltLength << 8) | player0AltCopyOffset;\n        var controlPointer = (player0LineSpritePointer - 20) >> 6;\n        if (player0AltControl[controlPointer] === control) return;\n\n        var basePointer = player0LineSpritePointer - 20;\n        for (var b = 0; b < 20; ++b) playerLineSprites[player0LineSpritePointer + b] = playerLineSprites[basePointer + b];\n\n        var p = player0AltFrom;\n        if (player0AltCopyOffset & 0x80) {\n            // Just clear bits\n            for (var c = 0; c < player0AltLength; ++c) {\n                playerLineSprites[player0LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        } else {\n            // Copy bits from base\n            basePointer -= objectsLineSpritePointerDeltaToSingleCopy[(NUSIZ0 & 7)];\n            for (var pBase = player0AltCopyOffset, to = player0AltCopyOffset + player0AltLength; pBase < to; ++pBase) {\n                if ((playerLineSprites[basePointer + (pBase >> 3)] >> (pBase & 0x07)) & 1)\n                    playerLineSprites[player0LineSpritePointer + (p >> 3)] |= (1 << (p & 0x07));\n                else\n                    playerLineSprites[player0LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        }\n\n        player0AltControl[controlPointer] = control;\n    }\n\n    var hitRESP1 = function() {\n        if (debug) debugPixel(DEBUG_P1_RES_COLOR);\n\n        var r = getRESxPixel();\n        var p = r >= 0 ? r : -r;\n        if (player1Pixel !== p) {\n            if (player1Enabled) changeAtClock();\n            var pStart = (r >= 0 ? p : 0);\n            var into = pStart - player1Pixel; if (into < 0) into += 160;\n            player1Pixel = p;\n            var nusiz = NUSIZ1 & 7;\n\n            if (player1Alt) {\n                if (into <= playerCopyLengthPerShape[nusiz]) return;                  // Keep current Alt def if still in first copy\n            } else\n                player1LineSpritePointer += 40;\n\n            var delta = pStart - p; if (delta < -100) delta += 160;\n            player1Alt = p >= 80 ? 1 : 2;\n            player1AltFrom = delta >= 0 ? delta : 160 + delta;\n            player1AltLength = playerCopyLengthPerShape[nusiz] - delta;\n            player1AltCopyOffset = playerCopyOffsetsReset[nusiz * 160 + into];\n            if (player1Enabled) player1DefineAlt();\n        }\n    };\n\n    function player1DefineAlt() {\n        var control = (player1AltFrom << 16) | (player1AltLength << 8) | player1AltCopyOffset;\n        var controlPointer = (player1LineSpritePointer - 40) >> 6;\n        if (player1AltControl[controlPointer] === control) return;\n\n        var basePointer = player1LineSpritePointer - 40;\n        for (var b = 0; b < 20; ++b) playerLineSprites[player1LineSpritePointer + b] = playerLineSprites[basePointer + b];\n\n        var p = player1AltFrom;\n        if (player1AltCopyOffset & 0x80) {\n            // Just clear bits\n            for (var c = 0; c < player1AltLength; ++c) {\n                playerLineSprites[player1LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        } else {\n            // Copy bits from base\n            basePointer -= objectsLineSpritePointerDeltaToSingleCopy[(NUSIZ1 & 7)];\n            for (var pBase = player1AltCopyOffset, to = player1AltCopyOffset + player1AltLength; pBase < to; ++pBase) {\n                if ((playerLineSprites[basePointer + (pBase >> 3)] >> (pBase & 0x07)) & 1)\n                    playerLineSprites[player1LineSpritePointer + (p >> 3)] |= (1 << (p & 0x07));\n                else\n                    playerLineSprites[player1LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        }\n\n        player1AltControl[controlPointer] = control;\n    }\n\n    var hitRESM0 = function() {\n        if (debug) debugPixel(DEBUG_M0_COLOR);\n\n        var r = getRESxPixel();\n        var p = r >= 0 ? r : -r;\n        if (missile0Pixel !== p) {\n            if (missile0Enabled) changeAtClock();\n            var pStart = (r >= 0 ? p : 0);\n            var into = pStart - missile0Pixel; if (into < 0) into += 160;\n            missile0Pixel = p;\n\n            if (missile0Alt) {\n                if (into <= 4 + (1 << ((NUSIZ0 & 0x30) >> 4))) return;                // Keep current Alt def if still in first copy\n            } else\n                missile0LineSpritePointer += 20;\n\n            var delta = pStart - p; if (delta < -100) delta += 160;\n            missile0Alt = p >= 80 ? 1 : 2;\n            missile0AltFrom = delta >= 0 ? delta : 160 + delta;\n            missile0AltLength = 4 + (1 << ((NUSIZ0 & 0x30) >> 4)) - delta;\n            missile0AltCopyOffset = missileCopyOffsetsReset[(((NUSIZ0 & 0x30) >> 1) | (NUSIZ0 & 7)) * 160 + into];\n            if (missile0Enabled) missile0DefineAlt();\n        }\n    };\n\n    function missile0DefineAlt() {\n        var control = (missile0AltFrom << 16) | (missile0AltLength << 8) | missile0AltCopyOffset;\n        var controlPointer = (missile0LineSpritePointer - 20) >> 6;\n        if (missile0AltControl[controlPointer] === control) return;\n\n        var basePointer = missile0LineSpritePointer - 20;\n        for (var b = 0; b < 20; ++b) missileBallLineSprites[missile0LineSpritePointer + b] = missileBallLineSprites[basePointer + b];\n\n        var p = missile0AltFrom;\n        if (missile0AltCopyOffset & 0x80) {\n            // Just clear bits\n            for (var c = 0; c < missile0AltLength; ++c) {\n                missileBallLineSprites[missile0LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        } else {\n            // Copy bits from base\n            basePointer -= objectsLineSpritePointerDeltaToSingleCopy[(NUSIZ0 & 7)];\n            for (var pBase = missile0AltCopyOffset, to = missile0AltCopyOffset + missile0AltLength; pBase < to; ++pBase) {\n                if ((missileBallLineSprites[basePointer + (pBase >> 3)] >> (pBase & 0x07)) & 1)\n                    missileBallLineSprites[missile0LineSpritePointer + (p >> 3)] |= (1 << (p & 0x07));\n                else\n                    missileBallLineSprites[missile0LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        }\n\n        missile0AltControl[controlPointer] = control;\n    }\n\n    var hitRESM1 = function() {\n        if (debug) debugPixel(DEBUG_M1_COLOR);\n\n        var r = getRESxPixel();\n        var p = r >= 1 ? r : -r;\n        if (missile1Pixel !== p) {\n            if (missile1Enabled) changeAtClock();\n            var pStart = (r >= 0 ? p : 0);\n            var into = pStart - missile1Pixel; if (into < 0) into += 160;\n            missile1Pixel = p;\n\n            if (missile1Alt) {\n                if (into <= 4 + (1 << ((NUSIZ1 & 0x30) >> 4))) return;                // Keep current Alt def if still in first copy\n            } else\n                missile1LineSpritePointer += 40;\n\n            var delta = pStart - p; if (delta < -100) delta += 160;\n            missile1Alt = p >= 80 ? 1 : 2;\n            missile1AltFrom = delta >= 0 ? delta : 160 + delta;\n            missile1AltLength = 4 + (1 << ((NUSIZ1 & 0x30) >> 4)) - delta;\n            missile1AltCopyOffset = missileCopyOffsetsReset[(((NUSIZ1 & 0x30) >> 1) | (NUSIZ1 & 7)) * 160 + into];\n            if (missile1Enabled) missile1DefineAlt();\n        }\n    };\n\n    function missile1DefineAlt() {\n        var control = (missile1AltFrom << 16) | (missile1AltLength << 8) | missile1AltCopyOffset;\n        var controlPointer = (missile1LineSpritePointer - 40) >> 6;\n        if (missile1AltControl[controlPointer] === control) return;\n\n        var basePointer = missile1LineSpritePointer - 40;\n        for (var b = 0; b < 20; ++b) missileBallLineSprites[missile1LineSpritePointer + b] = missileBallLineSprites[basePointer + b];\n\n        var p = missile1AltFrom;\n        if (missile1AltCopyOffset & 0x80) {\n            // Just clear bits\n            for (var c = 0; c < missile1AltLength; ++c) {\n                missileBallLineSprites[missile1LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        } else {\n            // Copy bits from base\n            basePointer -= objectsLineSpritePointerDeltaToSingleCopy[(NUSIZ1 & 7)];\n            for (var pBase = missile1AltCopyOffset, to = missile1AltCopyOffset + missile1AltLength; pBase < to; ++pBase) {\n                if ((missileBallLineSprites[basePointer + (pBase >> 3)] >> (pBase & 0x07)) & 1)\n                    missileBallLineSprites[missile1LineSpritePointer + (p >> 3)] |= (1 << (p & 0x07));\n                else\n                    missileBallLineSprites[missile1LineSpritePointer + (p >> 3)] &= ~(1 << (p & 0x07));\n                if (++p >= 160) p -= 160;\n            }\n        }\n\n        missile1AltControl[controlPointer] = control;\n    }\n\n    var hitRESBL = function() {\n        if (debug) debugPixel(DEBUG_BL_COLOR);\n\n        var r = getRESxPixel();\n        var p = r >= 0 ? r : -r;\n        if (ballPixel !== p) {\n            if (ballEnabled) changeAtClock();\n            ballPixel = p;\n        }\n    };\n\n    var hitHMOVE = function() {\n        if (debug) debugPixel(DEBUG_HMOVE_COLOR);\n        // Normal HMOVE\n        if (clock < HBLANK_DURATION) {\n            hMoveHitClock = clock;\n            hMoveHitBlank = true;\n            performHMOVE();\n            return;\n        }\n        // Unsupported HMOVE\n        if (clock < 219) {\n            // debugInfo(\"Unsupported HMOVE hit\");\n            return;\n        }\n        // Late HMOVE: Clocks [219-224] hide HMOVE blank next line, clocks [225, 0] produce normal behavior next line\n        // debugInfo(\"Late HMOVE hit\");\n        hMoveHitClock = 160 - clock;\n        hMoveLateHit = true;\n        hMoveLateHitBlank = clock >= 225;\n    };\n\n    // Can only be called during HBLANK!\n    var performHMOVE = function() {\n        // Change objects position\n        var add;\n        var changed = false;\n        add = (hMoveHitBlank ? HMP0 : HMP0 + 8); if (add !== 0) {\n            player0Pixel -= add; if (player0Pixel >= 160) player0Pixel -= 160; else if (player0Pixel < 0) player0Pixel += 160;\n            if (player0Enabled) changed = true;\n        }\n        add = (hMoveHitBlank ? HMP1 : HMP1 + 8); if (add !== 0) {\n            player1Pixel -= add; if (player1Pixel >= 160) player1Pixel -= 160; else if (player1Pixel < 0) player1Pixel += 160;\n            if (player1Enabled) changed = true;\n        }\n        add = (hMoveHitBlank ? HMM0 : HMM0 + 8); if (add !== 0) {\n            missile0Pixel -= add; if (missile0Pixel >= 160) missile0Pixel -= 160; else if (missile0Pixel < 0) missile0Pixel += 160;\n            if (missile0Enabled) changed = true;\n        }\n        add = (hMoveHitBlank ? HMM1 : HMM1 + 8); if (add !== 0) {\n            missile1Pixel -= add; if (missile1Pixel >= 160) missile1Pixel -= 160; else if (missile1Pixel < 0) missile1Pixel += 160;\n            if (missile1Enabled) changed = true;\n        }\n        add = (hMoveHitBlank ? HMBL : HMBL + 8); if (add !== 0) {\n            ballPixel -= add; if (ballPixel >= 160) ballPixel -= 160; else if (ballPixel < 0) ballPixel += 160;\n            if (ballEnabled) changed = true;\n        }\n\n        if (changed) changeClock = hMoveHitBlank ? HBLANK_DURATION + 8 : HBLANK_DURATION;\n    };\n\n    // Negative values mean hit during HBLANK. Invert negative values to get object position, then Alt must be defined considering starting from pixel 0\n    function getRESxPixel() {\n        // Hit after complete HBLANK or last pixel of Extended HBLANK\n        if (clock >= HBLANK_DURATION + (hMoveHitBlank ? 8 - 1 : 0)) {\n            return clock - HBLANK_DURATION;\n        } else {\n            // Hit during HBLANK\n            if (hMoveHitBlank) {\n                if (clock >= HBLANK_DURATION) {\n                    return -6;\n                } else {\n                    var d = (clock - hMoveHitClock - 4) >> 2;   // Shift right proportionally to distance from HMOVE, up to 8 pixels\n                    if (d > 8) return -6;\n                    else if (d > 1) return -(d - 2);\n                    else return -(158 + d);\n                }\n            } else\n                return -158;\n        }\n    }\n\n    function checkLateHMOVE() {\n        if (hMoveLateHit) {\n            hMoveLateHit = false;\n            hMoveHitBlank = hMoveLateHitBlank;\n            performHMOVE();\n        } else\n            hMoveHitBlank = false;\n    }\n\n    function updateExtendedHBLANK() {\n        // Detect change in the extended HBLANK filling\n        if (hMoveHitBlank !== (linePixels[HBLANK_DURATION] === hBlankColor)) {\n            if (hMoveHitBlank) {\n                // Fills the extended HBLANK portion of the current line\n                linePixels[HBLANK_DURATION] = linePixels[HBLANK_DURATION + 1] = linePixels[HBLANK_DURATION + 2] = linePixels[HBLANK_DURATION + 3] =\n                    linePixels[HBLANK_DURATION + 4] = linePixels[HBLANK_DURATION + 5] = linePixels[HBLANK_DURATION + 6] = linePixels[HBLANK_DURATION + 7] =\n                        hBlankColor;    // This is faster than a fill\n            } else\n                changeClock = HBLANK_DURATION;\n        }\n        if (hMoveHitBlank) renderClock = HBLANK_DURATION + 8;\n    }\n\n    function endObjectsAltStatusMidLine() {\n        if (player0Alt === 1)  { if (player0Enabled)  changeAtClock(); player0Alt = 0;  player0LineSpritePointer -= 20; }\n        if (player1Alt === 1)  { if (player1Enabled)  changeAtClock(); player1Alt = 0;  player1LineSpritePointer -= 40; }\n        if (missile0Alt === 1) { if (missile0Enabled) changeAtClock(); missile0Alt = 0; missile0LineSpritePointer -= 20; }\n        if (missile1Alt === 1) { if (missile1Enabled) changeAtClock(); missile1Alt = 0; missile1LineSpritePointer -= 40; }\n    }\n\n    function endObjectsAltStatusEndOfLine() {\n        if (player0Alt === 2)  { player0Alt = 0;  player0LineSpritePointer -= 20; }\n        if (player1Alt === 2)  { player1Alt = 0;  player1LineSpritePointer -= 40; }\n        if (missile0Alt === 2) { missile0Alt = 0; missile0LineSpritePointer -= 20; }\n        if (missile1Alt === 2) { missile1Alt = 0; missile1LineSpritePointer -= 40; }\n    }\n\n    function vSyncSet(i) {\n        if (debug) {\n            debugPixel(VSYNC_COLOR);\n            changeAtClock();\n            vSyncOn = (i & 0x02) !== 0;\n            vBlankColor = vSyncOn ? VSYNC_COLOR : DEBUG_VBLANK_COLOR;\n        } else\n            vSyncOn = (i & 0x02) !== 0;\n    }\n\n    var vBlankSet = function(blank) {\n        var v = (blank & 0x02) !== 0;\n        if (vBlankOn !== v) {\n            changeVBlankAtClockPlus1();\n            //changeAtClockPlus(1);\n            vBlankOn = v;\n        }\n\n        if ((blank & 0x40) !== 0) {\n            controlsButtonsLatched = true;\t\t\t// Enable Joystick Button latches\n        } else {\n            controlsButtonsLatched = false;\t\t\t// Disable latches and update registers with the current button state\n            if (controlsJOY0ButtonPressed) INPT4 &= 0x7f; else INPT4 |= 0x80;\n            if (controlsJOY1ButtonPressed) INPT5 &= 0x7f; else INPT5 |= 0x80;\n        }\n\n        if ((blank & 0x80) !== 0) {\t\t\t\t\t// Ground paddle capacitors\n            paddleCapacitorsGrounded = true;\n            paddle0CapacitorCharge = paddle1CapacitorCharge = 0;\n            INPT0 &= 0x7f; INPT1 &= 0x7f; INPT2 &= 0x7f; INPT3 &= 0x7f;\n        }\n        else\n            paddleCapacitorsGrounded = false;\n    };\n\n    var initLatchesAtPowerOn = function() {\n        collisions = 0;\n        INPT0 = INPT1 = INPT2 = INPT3 = 0;\n        INPT4 = INPT5 = 0x80;\n    };\n\n    var debugPixel = function(color) {\n        debugPixels[clock] = color;\n    };\n\n    var processDebugPixelsInLine = function() {\n        jt.Util.arrayFillSegment(linePixels, 0, HBLANK_DURATION + (hMoveHitBlank ? 8 : 0), hBlankColor);\n        // Marks\n        if (debugLevel >= 3 && videoSignal.monitor.currentLine() % 10 == 0) {\n            for (var i = 0; i < LINE_WIDTH; i++) {\n                if (debugPixels[i]) continue;\n                if (i < HBLANK_DURATION) {\n                    if (i % 6 == 0 || i == 66 || i == 63)\n                        debugPixels[i] = DEBUG_MARKS_COLOR;\n                } else {\n                    if ((i - HBLANK_DURATION - 1) % 6 == 0)\n                        debugPixels[i] = DEBUG_MARKS_COLOR;\n                }\n            }\n        }\n        // Debug Pixels\n        if (debugLevel >= 2) {\n            for (i = 0; i < LINE_WIDTH; i++) {\n                if (debugPixels[i]) {\n                    linePixels[i] = debugPixels[i];\n                    debugPixels[i] = 0;\n                }\n            }\n        }\n    };\n\n    var debugSetColors = function() {\n        player0Color = DEBUG_P0_COLOR;\n        player1Color = DEBUG_P1_COLOR;\n        missile0Color = DEBUG_M0_COLOR;\n        missile1Color = DEBUG_M1_COLOR;\n        ballColor = DEBUG_BL_COLOR;\n        playfieldColor = playfieldLeftColor = playfieldRightColor = DEBUG_PF_COLOR;\n        playfieldBackground = DEBUG_BK_COLOR;\n        hBlankColor = debugLevel >= 1 ? DEBUG_HBLANK_COLOR : HBLANK_COLOR;\n        vBlankColor = debugLevel >= 1 ? DEBUG_VBLANK_COLOR : VBLANK_COLOR;\n    };\n\n    var debugRestoreColors = function() {\n        hBlankColor = HBLANK_COLOR;\n        vBlankColor = VBLANK_COLOR;\n        playfieldBackground = palette[0];\n        jt.Util.arrayFill(linePixels, hBlankColor);\n        changeAtClock();\n    };\n\n    var info = function(str) {\n        console.error(\"Line: \" + videoSignal.monitor.currentLine() +\", Pixel: \" + clock + \". \" + str);\n    };\n\n    var debugInfo = function(str) {\n        if (debug) console.error(\"Line: \" + videoSignal.monitor.currentLine() +\", Pixel: \" + clock + \". \" + str);\n    };\n\n    // All possible entire line pixels for players, for all 8 bit patterns (sprites), including all variations (copies) and mirrors\n    function generateObjectsLineSprites() {\n        // Players\n        var line = new Uint8Array(160);\n        for (var mirror = 0; mirror <= 1; ++mirror) {\n            for (var pattern = 0; pattern < 256; ++pattern) {\n                var sprite = !mirror ? jt.Util.reverseInt8(pattern) : pattern;\n                // 1 copy\n                paintSprite(line, sprite, 4 + 1); addPlayerSprite(mirror, pattern, 0, 0, line);                   // 4 + 1 means player is delayed 4 + 1 pixels\n                // 2 copies close\n                paintSprite(line, sprite, 4 + 16 + 1); addPlayerSprite(mirror, pattern, 1, 0, line);\n                // 3 copies close\n                paintSprite(line, sprite, 4 + 32 + 1); addPlayerSprite(mirror, pattern, 3, 0, line);\n                // 2 copies medium\n                paintSprite(line, 0, 4 + 16 + 1); addPlayerSprite(mirror, pattern, 2, 0, line);                   // erase close copy\n                // 3 copies medium\n                paintSprite(line, sprite, 4 + 64 + 1); addPlayerSprite(mirror, pattern, 6, 0, line);\n                // 2 copies wide\n                paintSprite(line, 0, 4 + 32 + 1); addPlayerSprite(mirror, pattern, 4, 0, line);                   // erase medium copy\n                // 1 copy double\n                paintSprite(line, 0, 4 + 64 + 1); line[4 + 1] = 0;                                                // erase wide copy and first pixel\n                paintSpriteDouble(line, sprite, 4 + 1 + 1); addPlayerSprite(mirror, pattern, 5, 0, line);         // 4 + 1 + 1 means Double and Quad are delayed 1 extra pixel\n                // 1 copy quad\n                paintSpriteQuad(line, sprite, 4 + 1 + 1); addPlayerSprite(mirror, pattern, 7, 0, line);\n                // empty line\n                paintSpriteQuad(line, 0, 4 + 1 + 1);\n            }\n        }\n\n        // Missiles & Ball\n        jt.Util.arrayFill(line, 0);\n        for (var size = 0; size < 4; ++size) {\n            sprite = (1 << (1 << size)) - 1;\n            // 1 copy\n            paintSprite(line, sprite, 4);                                                                         // 4 means missile/ball is delayed 4 pixels\n            addMissileBallSprite(size, 0, 0, line);\n            addMissileBallSprite(size, 5, 0, line);\n            addMissileBallSprite(size, 7, 0, line);\n            // 2 copies close\n            paintSprite(line, sprite, 4 + 16); addMissileBallSprite(size, 1, 0, line);\n            // 3 copies close\n            paintSprite(line, sprite, 4 + 32); addMissileBallSprite(size, 3, 0, line);\n            // 2 copies medium\n            paintSprite(line, 0, 4 + 16); addMissileBallSprite(size, 2, 0, line);                                 // erase close copy\n            // 3 copies medium\n            paintSprite(line, sprite, 4 + 64); addMissileBallSprite(size, 6, 0, line);\n            // 2 copies wide\n            paintSprite(line, 0, 4 + 32); addMissileBallSprite(size, 4, 0, line);                                 // erase medium copy\n            paintSprite(line, 0, 4);                                                                              // clean line: erase first and wide copy\n            paintSprite(line, 0, 4 + 64);\n        }\n\n        function paintSprite(line, pat, pos) {\n            for (var b = 0; b < 8; ++b) line[pos + b] = (pat >> b) & 1;\n        }\n        function paintSpriteDouble(line, pat, pos) {\n            for (var b = 0; b < 8; ++b) line[pos + b*2] = line[pos + b*2 + 1] = (pat >> b) & 1;\n        }\n        function paintSpriteQuad(line, pat, pos) {\n            for (var b = 0; b < 8; ++b) line[pos + b*4] = line[pos + b*4 + 1] = line[pos + b*4 + 2] = line[pos + b*4 + 3] = (pat >> b) & 1;\n        }\n        function addPlayerSprite(mirror, pattern, vari, alt, line) {\n            var pos = (((mirror << 11) | (pattern << 3) | vari) << 6) + alt * 20;\n            for (var i = 0; i < 20; ++i)\n                for (var b = 0; b < 8; ++b)\n                    if (line[i * 8 + b]) playerLineSprites[pos + i] |= 1 << b;\n\n        }\n        function addMissileBallSprite(size, vari, alt, line) {\n            var pos = (((size << 3) | vari) << 6) + alt * 20;\n            for (var i = 0; i < 20; ++i)\n                for (var b = 0; b < 8; ++b)\n                    if (line[i * 8 + b]) missileBallLineSprites[pos + i] |= 1 << b;\n\n        }\n    }\n\n    function generateObjectsCopiesOffsets() {\n        var delays = new Uint8Array(40);\n        delays[0] = 0; delays[1] = 1; delays[2] = 2; delays[3] = 3;\n\n        // Players\n        jt.Util.arrayFill(playerCopyOffsetsReset, 0x80);\n        jt.Util.arrayFill(playerScanOffsetsShape, 0x80);\n        // Normal Variations\n        for (var p = 0; p < 13; ++p) {\n            // Apply delays for Reset start signal\n            var v = p - delays[p];\n            playerCopyOffsetsReset[0*160 + p] = v;\n            playerCopyOffsetsReset[1*160 + p] = v;  playerCopyOffsetsReset[1*160 + p + 16] = v;\n            playerCopyOffsetsReset[2*160 + p] = v;  playerCopyOffsetsReset[2*160 + p + 32] = v;\n            playerCopyOffsetsReset[3*160 + p] = v;  playerCopyOffsetsReset[3*160 + p + 16] = v; playerCopyOffsetsReset[3*160 + p + 32] = v;\n            playerCopyOffsetsReset[4*160 + p] = v;  playerCopyOffsetsReset[4*160 + p + 64] = v;\n            playerCopyOffsetsReset[6*160 + p] = v;  playerCopyOffsetsReset[6*160 + p + 32] = v; playerCopyOffsetsReset[6*160 + p + 64] = v;\n            // Start signal and pixel scan info\n            v = p < 5 ? p | 0x40 : p - 5;\n            playerScanOffsetsShape[0*160 + p] = v;\n            playerScanOffsetsShape[1*160 + p] = v;  playerScanOffsetsShape[1*160 + p + 16] = v;\n            playerScanOffsetsShape[2*160 + p] = v;  playerScanOffsetsShape[2*160 + p + 32] = v;\n            playerScanOffsetsShape[3*160 + p] = v;  playerScanOffsetsShape[3*160 + p + 16] = v; playerScanOffsetsShape[3*160 + p + 32] = v;\n            playerScanOffsetsShape[4*160 + p] = v;  playerScanOffsetsShape[4*160 + p + 64] = v;\n            playerScanOffsetsShape[6*160 + p] = v;  playerScanOffsetsShape[6*160 + p + 32] = v; playerScanOffsetsShape[6*160 + p + 64] = v;\n        }\n\n        // Double Variation\n        for (p = 0; p < 22; p++) {\n            v = p - delays[p];\n            playerCopyOffsetsReset[5 * 160 + p] = v;\n            v = p < 6 ? p | 0x40 : (p - 6) >> 1;\n            playerScanOffsetsShape[5 * 160 + p] = v;\n        }\n        // Quad Variation\n        for (p = 0; p < 38; p++) {\n            v = p - delays[p];\n            playerCopyOffsetsReset[7 * 160 + p] = v;\n            v = p < 6 ? p | 0x40 : (p - 6) >> 2;\n            playerScanOffsetsShape[7 * 160 + p] = v;\n        }\n\n        // Missiles\n        jt.Util.arrayFill(missileCopyOffsetsReset, 0x80);\n        jt.Util.arrayFill(missileScanOffsetsShape, 0x80);\n        // All Size * Variations\n        for (var s = 0; s <= 3; ++s) {\n            var d = 4 + (1 << s);\n            for (p = 0; p < d; ++p) {\n                v = p - delays[p];\n                missileCopyOffsetsReset[s*8*160 + 0*160 + p] = v;\n                missileCopyOffsetsReset[s*8*160 + 1*160 + p] = v;  missileCopyOffsetsReset[s*8 + 1*160 + p + 16] = v;\n                missileCopyOffsetsReset[s*8*160 + 2*160 + p] = v;  missileCopyOffsetsReset[s*8 + 2*160 + p + 32] = v;\n                missileCopyOffsetsReset[s*8*160 + 3*160 + p] = v;  missileCopyOffsetsReset[s*8 + 3*160 + p + 16] = v; missileCopyOffsetsReset[s*8*160 + 3*160 + p + 32] = v;\n                missileCopyOffsetsReset[s*8*160 + 4*160 + p] = v;  missileCopyOffsetsReset[s*8 + 4*160 + p + 64] = v;\n                missileCopyOffsetsReset[s*8*160 + 5*160 + p] = v;\n                missileCopyOffsetsReset[s*8*160 + 6*160 + p] = v;  missileCopyOffsetsReset[s*8 + 6*160 + p + 32] = v; missileCopyOffsetsReset[s*8*160 + 6*160 + p + 64] = v;\n                missileCopyOffsetsReset[s*8*160 + 7*160 + p] = v;\n                v = p < 4 ? p | 0x40 : (p - 4) >> s;\n                missileScanOffsetsShape[s*8*160 + 0*160 + p] = v;\n                missileScanOffsetsShape[s*8*160 + 1*160 + p] = v;  missileScanOffsetsShape[s*8 + 1*160 + p + 16] = v;\n                missileScanOffsetsShape[s*8*160 + 2*160 + p] = v;  missileScanOffsetsShape[s*8 + 2*160 + p + 32] = v;\n                missileScanOffsetsShape[s*8*160 + 3*160 + p] = v;  missileScanOffsetsShape[s*8 + 3*160 + p + 16] = v; missileScanOffsetsShape[s*8*160 + 3*160 + p + 32] = v;\n                missileScanOffsetsShape[s*8*160 + 4*160 + p] = v;  missileScanOffsetsShape[s*8 + 4*160 + p + 64] = v;\n                missileScanOffsetsShape[s*8*160 + 5*160 + p] = v;\n                missileScanOffsetsShape[s*8*160 + 6*160 + p] = v;  missileScanOffsetsShape[s*8 + 6*160 + p + 32] = v; missileScanOffsetsShape[s*8*160 + 6*160 + p + 64] = v;\n                missileScanOffsetsShape[s*8*160 + 7*160 + p] = v;\n            }\n        }\n    }\n\n\n    // Controls interface  -----------------------------------\n\n    var controls = jt.ConsoleControls;\n\n    this.controlStateChanged = function(control, state) {\n        switch (control) {\n            case controls.JOY0_BUTTON:\n                if (state) {\n                    controlsJOY0ButtonPressed = true;\n                    INPT4 &= 0x7f;\n                } else {\n                    controlsJOY0ButtonPressed = false;\n                    if (!controlsButtonsLatched)\t\t\t// Does not lift the button if Latched Mode is on\n                        INPT4 |= 0x80;\n                }\n                return;\n            case controls.JOY1_BUTTON:\n                if (state) {\n                    controlsJOY1ButtonPressed = true;\n                    INPT5 &= 0x7f;\n                } else {\n                    controlsJOY1ButtonPressed = false;\n                    if (!controlsButtonsLatched)\t\t\t// Does not lift the button if Latched Mode is on\n                        INPT5 |= 0x80;\n                }\n                return;\n        }\n        // Toggles\n        if (!state) return;\n        switch (control) {\n            case controls.DEBUG:\n                self.debug(debugLevel + 1);\n                self.showDebugMessage();\n                return;\n            case controls.SHOW_INFO:\n                videoSignal.toggleShowInfo(); return;\n            case controls.NO_COLLISIONS:\n                self.debugNoCollisions(!debugNoCollisions);\n                videoSignal.showOSD(debugNoCollisions ? \"No Collisions: ON\" : \"No Collisions: OFF\", true);\n        }\n    };\n\n    this.controlValueChanged = function(control, position) {\n        switch (control) {\n            case controls.PADDLE0_POSITION:\n                paddle0Position = position; return;\n            case controls.PADDLE1_POSITION:\n                paddle1Position = position; return;\n        }\n    };\n\n\n    // Savestate  ------------------------------------------------\n\n    this.saveState = function(extended) {\n        var s = {\n            ccp: changeClockPrevLine,\n            lpx: jt.Util.storeInt32BitArrayToStringBase64(linePixels),\n\n            vs: vSyncOn,\n            vb: vBlankOn,\n\n            pfe: playfieldEnabled,\n            pfl: playfieldPatternL,\n            pfr: playfieldPatternR,\n            pfc: playfieldColor,\n            pflc: playfieldLeftColor,\n            pfrc: playfieldRightColor,\n            pfb: playfieldBackground,\n            pfrl: playfieldReflected,\n            pfsc: playfieldScoreMode,\n            pfp: playfieldPriority,\n\n            be: ballEnabled,\n            bx: ballPixel,\n            blp: ballLineSpritePointer,\n            bc: ballColor,\n\n            p0e: player0Enabled,\n            p0x: player0Pixel,\n            p0lp: player0LineSpritePointer,\n            p0a: player0Alt,\n            p0af: player0AltFrom,\n            p0al: player0AltLength,\n            p0ao: player0AltCopyOffset,\n            p0c: player0Color,\n\n            p1e: player1Enabled,\n            p1x: player1Pixel,\n            p1lp: player1LineSpritePointer,\n            p1a: player1Alt,\n            p1af: player1AltFrom,\n            p1al: player1AltLength,\n            p1ao: player1AltCopyOffset,\n            p1c: player1Color,\n\n            m0e: missile0Enabled,\n            m0x: missile0Pixel,\n            m0lp: missile0LineSpritePointer,\n            m0a: missile0Alt,\n            m0af: missile0AltFrom,\n            m0al: missile0AltLength,\n            m0ao: missile0AltCopyOffset,\n            m0c: missile0Color,\n\n            m1e: missile1Enabled,\n            m1x: missile1Pixel,\n            m1lp: missile1LineSpritePointer,\n            m1a: missile1Alt,\n            m1af: missile1AltFrom,\n            m1al: missile1AltLength,\n            m1ao: missile1AltCopyOffset,\n            m1c: missile1Color,\n\n            hmh: hMoveHitBlank,\n            hmc: hMoveHitClock,\n            hmlh: hMoveLateHit,\n            hmlb: hMoveLateHitBlank,\n\n            co: collisions,\n            cop: collisionsPossible,\n            cod: debugNoCollisions,\n\n            cbl: controlsButtonsLatched,\n            j0p: controlsJOY0ButtonPressed,\n            j1p: controlsJOY1ButtonPressed,\n\n            pcg: paddleCapacitorsGrounded,\n            pd0: paddle0Position,\n            pd0c: paddle0CapacitorCharge,\n            pd1: paddle1Position,\n            pd1c: paddle1CapacitorCharge,\n\n            CTRLPF: CTRLPF,\n            COLUPF: COLUPF,\n            COLUBK: COLUBK,\n            PF0: PF0,\n            PF1: PF1,\n            PF2: PF2,\n            ENABL: ENABL,\n            ENABLd: ENABLd,\n            VDELBL: VDELBL,\n            NUSIZ0: NUSIZ0,\n            COLUP0: COLUP0,\n            REFP0: REFP0,\n            GRP0: GRP0,\n            GRP0d: GRP0d,\n            VDELP0: VDELP0,\n            NUSIZ1: NUSIZ1,\n            COLUP1: COLUP1,\n            REFP1: REFP1,\n            GRP1: GRP1,\n            GRP1d: GRP1d,\n            VDELP1: VDELP1,\n            ENAM0: ENAM0,\n            RESMP0: RESMP0,\n            ENAM1: ENAM1,\n            RESMP1: RESMP1,\n            HMP0: HMP0,\n            HMP1: HMP1,\n            HMM0: HMM0,\n            HMM1: HMM1,\n            HMBL: HMBL,\n            AUDC0: AUDC0,\n            AUDC1: AUDC1,\n            AUDF0: AUDF0,\n            AUDF1: AUDF1,\n            AUDV0: AUDV0,\n            AUDV1: AUDV1\n        };\n        if (extended) s.dl = debugLevel;\n        return s;\n    };\n\n    this.loadState = function(s) {\n        changeClockPrevLine = s.ccp;\n        jt.Util.restoreStringBase64ToInt32BitArray(s.lpx, linePixels);\n\n        vSyncOn = s.vs;\n        vBlankOn = s.vb;\n\n        playfieldEnabled = s.pfe;\n        playfieldPatternL = s.pfl | 0;\n        playfieldPatternR = s.pfr | 0;\n        playfieldColor = s.pfc | 0;\n        playfieldLeftColor = s.pflc | 0;\n        playfieldRightColor = s.pfrc | 0;\n        playfieldBackground = s.pfb | 0;\n        playfieldReflected = s.pfrl;\n        playfieldScoreMode = s.pfsc;\n        playfieldPriority = s.pfp;\n\n        ballEnabled = s.be;\n        ballPixel = s.bx | 0;\n        ballLineSpritePointer = s.blp | 0;\n        ballColor = s.bc | 0;\n\n        player0Enabled = s.p0e;\n        player0Pixel = s.p0x | 0;\n        player0LineSpritePointer = s.p0lp | 0;\n        player0Alt = s.p0a | 0;\n        player0AltFrom = s.p0af | 0;\n        player0AltLength = s.p0al | 0;\n        player0AltCopyOffset = s.p0ao | 0;\n        jt.Util.arrayFill(player0AltControl, 0);\n        player0Color = s.p0c | 0;\n\n        player1Enabled = s.p1e;\n        player1Pixel = s.p1x | 0;\n        player1LineSpritePointer = s.p1lp | 0;\n        player1Alt = s.p1a | 0;\n        player1AltFrom = s.p1af | 0;\n        player1AltLength = s.p1al | 0;\n        player1AltCopyOffset = s.p1ao | 0;\n        jt.Util.arrayFill(player1AltControl, 0);\n        player1Color = s.p1c | 0;\n\n        missile0Enabled = s.m0e;\n        missile0Pixel = s.m0x | 0;\n        missile0LineSpritePointer = s.m0lp | 0;\n        missile0Alt = s.m0a | 0;\n        missile0AltFrom = s.m0af | 0;\n        missile0AltLength = s.m0al | 0;\n        missile0AltCopyOffset = s.m0ao | 0;\n        jt.Util.arrayFill(missile0AltControl, 0);\n        missile0Color = s.m0c | 0;\n\n        missile1Enabled = s.m1e;\n        missile1Pixel = s.m1x | 0;\n        missile1LineSpritePointer = s.m1lp | 0;\n        missile1Alt = s.m1a | 0;\n        missile1AltFrom = s.m1af | 0;\n        missile1AltLength = s.m1al | 0;\n        missile1AltCopyOffset = s.m1ao | 0;\n        jt.Util.arrayFill(missile1AltControl, 0);\n        missile1Color = s.m1c | 0;\n\n        hMoveHitBlank = s.hmh;\n        hMoveHitClock = s.hmc | 0;\n        hMoveLateHit = s.hmlh;\n        hMoveLateHitBlank = s.hmlb;\n\n        collisions = s.co | 0;\n        collisionsPossible = s.cop | 0;\n        if (s.cod !== undefined) debugNoCollisions = s.cod;\n\n        if (s.cbl !== undefined) {                          // backward compatibility\n            controlsButtonsLatched = s.cbl;\n            controlsJOY0ButtonPressed = s.j0p;\n            controlsJOY1ButtonPressed = s.j1p;\n\n            paddleCapacitorsGrounded = s.pcg;\n            paddle0Position = s.pd0;\n            paddle0CapacitorCharge = s.pd0c;\n            paddle1Position = s.pd1;\n            paddle1CapacitorCharge = s.pd1c;\n        }\n\n        CTRLPF = s.CTRLPF | 0;\n        COLUPF = s.COLUPF | 0;\n        COLUBK = s.COLUBK | 0;\n        PF0 = s.PF0 | 0;\n        PF1 = s.PF1 | 0;\n        PF2 = s.PF2 | 0;\n        ENABL = s.ENABL | 0;\n        ENABLd = s.ENABLd | 0;\n        VDELBL = s.VDELBL | 0;\n        NUSIZ0 = s.NUSIZ0 | 0;\n        COLUP0 = s.COLUP0 | 0;\n        REFP0 = s.REFP0 | 0;\n        GRP0 = s.GRP0 | 0;\n        GRP0d = s.GRP0d | 0;\n        VDELP0 = s.VDELP0 | 0;\n        NUSIZ1 = s.NUSIZ1 | 0;\n        COLUP1 = s.COLUP1 | 0;\n        REFP1 = s.REFP1 | 0;\n        GRP1 = s.GRP1 | 0;\n        GRP1d = s.GRP1d | 0;\n        VDELP1 = s.VDELP1 | 0;\n        ENAM0 = s.ENAM0 | 0;\n        RESMP0 = s.RESMP0 | 0;\n        ENAM1 = s.ENAM1 | 0;\n        RESMP1 = s.RESMP1 | 0;\n        HMP0 = s.HMP0 | 0;\n        HMP1 = s.HMP1 | 0;\n        HMM0 = s.HMM0 | 0;\n        HMM1 = s.HMM1 | 0;\n        HMBL = s.HMBL | 0;\n        AUDC0 = s.AUDC0 | 0; audioSignal.getChannel0().setControl(AUDC0 & 0x0f);\t\t// Also update the Audio Generator\n        AUDC1 = s.AUDC1 | 0; audioSignal.getChannel1().setControl(AUDC1 & 0x0f);\n        AUDF0 = s.AUDF0 | 0; audioSignal.getChannel0().setDivider((AUDF0 & 0x1f) + 1);\n        AUDF1 = s.AUDF1 | 0; audioSignal.getChannel1().setDivider((AUDF1 & 0x1f) + 1);\n        AUDV0 = s.AUDV0 | 0; audioSignal.getChannel0().setVolume(AUDV0 & 0x0f);\n        AUDV1 = s.AUDV1 | 0; audioSignal.getChannel1().setVolume(AUDV1 & 0x0f);\n\n        if (s.dl !== undefined) this.debug(s.dl);\n        else if (debug) debugSetColors();\n    };\n\n\n    // Constants  ------------------------------------------------\n\n    var HBLANK_DURATION = 68;\n    var LINE_WIDTH = 228;\n\n    var VBLANK_COLOR = 0xff000000;\t\t// CHECK: Full transparency needed for CRT emulation modes\n    var HBLANK_COLOR = 0xfe000000;      // Alpha of 0xfe used to detect extended HBLANK (alpha is unnoticeable)\n    var VSYNC_COLOR  = 0xffdddddd;\n\n    var DEBUG_P0_COLOR     = 0xff0000ff;\n    var DEBUG_P0_RES_COLOR = 0xff2222bb;\n    var DEBUG_P0_GR_COLOR  = 0xff111177;\n    var DEBUG_P1_COLOR     = 0xffff0000;\n    var DEBUG_P1_RES_COLOR = 0xffbb2222;\n    var DEBUG_P1_GR_COLOR  = 0xff771111;\n    var DEBUG_M0_COLOR     = 0xff6666ff;\n    var DEBUG_M1_COLOR     = 0xffff6666;\n    var DEBUG_PF_COLOR     = 0xff448844;\n    var DEBUG_PF_GR_COLOR  = 0xff33dd33;\n    var DEBUG_BK_COLOR     = 0xff334433;\n    var DEBUG_BL_COLOR     = 0xff00ffff;\n    var DEBUG_MARKS_COLOR  = 0xff202020;\n    var DEBUG_HBLANK_COLOR = 0xff444444;\n    var DEBUG_VBLANK_COLOR = 0xff2a2a2a;\n    var DEBUG_WSYNC_COLOR  = 0xff880088;\n    var DEBUG_HMOVE_COLOR  = 0xffffffff;\n    var DEBUG_ALT_COLOR    = 0xffaaaa00;\n\n    var READ_ADDRESS_MASK  = 0x000f;\n    var WRITE_ADDRESS_MASK = 0x003f;\n\n    // Collision bit patterns:   P0P1, P0M0, P0M1, P0PF,   P0BL, P1M0, P1M1, P1PF,   P1BL, M0M1, M0PF, M0BL,   M1PF, M1BL, PFBL, none\n\n    var P0C = ~0xf800;   //  1111 1000 0000 0000\n    var P1C = ~0x8780;   //  1000 0111 1000 0000\n    var M0C = ~0x4470;   //  0100 0100 0111 0000\n    var M1C = ~0x224c;   //  0010 0010 0100 1100\n    var PFC = ~0x112a;   //  0001 0001 0010 1010\n    var BLC = ~0x0896;   //  0000 1000 1001 0110\n\n\n    // Variables  ---------------------------------------------------\n\n    var cpu = pCpu;\n    var pia = pPia;\n    var bus;\n\n    var powerOn = false;\n\n    var clock, changeClock, changeClockPrevLine, renderClock;\n    var linePixels = new Uint32Array(LINE_WIDTH);\n\n    var vSyncOn = false;\n    var vBlankOn = false;\n    var vBlankColor = VBLANK_COLOR;\n    var hBlankColor = HBLANK_COLOR;\n\n    var playfieldEnabled = false, playfieldPatternL = 0, playfieldPatternR = 0;\n    var playfieldColor = 0xff000000, playfieldLeftColor = 0xff000000, playfieldRightColor = 0xff000000;\n    var playfieldBackground = 0xff000000;\n    var playfieldReflected = false;\n    var playfieldScoreMode = false;\n    var playfieldPriority = false;\n\n    var ballEnabled = false, ballPixel = 0, ballLineSpritePointer = 0;\n    var ballColor = 0xff000000;\n\n    var player0Enabled = false, player0Pixel = 0, player0LineSpritePointer = 0;\n    var player0Alt = 0, player0AltFrom = 0, player0AltLength = 0, player0AltCopyOffset = 0;\n    var player0AltControl = new Uint32Array(2 * 256 * 8);\n    var player0Color = 0xff000000;\n\n    var player1Enabled = false, player1Pixel = 0, player1LineSpritePointer = 0;\n    var player1Alt = 0, player1AltFrom = 0, player1AltLength = 0, player1AltCopyOffset = 0;\n    var player1AltControl = new Uint32Array(2 * 256 * 8);\n    var player1Color = 0xff000000;\n\n    var missile0Enabled = false, missile0Pixel = 0, missile0LineSpritePointer = 0;\n    var missile0Alt = 0, missile0AltFrom = 0, missile0AltLength = 0, missile0AltCopyOffset = 0;\n    var missile0AltControl = new Uint32Array(4 * 8);\n    var missile0Color = 0xff000000;\n\n    var missile1Enabled = false, missile1Pixel = 0, missile1LineSpritePointer = 0;\n    var missile1Alt = 0, missile1AltFrom = 0, missile1AltLength = 0, missile1AltCopyOffset = 0;\n    var missile1AltControl = new Uint32Array(4 * 8);\n    var missile1Color = 0xff000000;\n\n    var hMoveHitBlank = false;\n    var hMoveHitClock = 0;\n    var hMoveLateHit = false;\n    var hMoveLateHitBlank = false;\n\n    var collisions = 0, collisionsPossible = 0;\n\n    var controlsButtonsLatched = false;\n    var controlsJOY0ButtonPressed = false;\n    var controlsJOY1ButtonPressed = false;\n\n    var paddleCapacitorsGrounded = false;\n    var paddle0Position = -1;\t\t\t                                    // 380 = Left, 190 = Middle, 0 = Right. -1 = disconnected, won't charge POTs\n    var paddle0CapacitorCharge = 0;\n    var paddle1Position = -1;\n    var paddle1CapacitorCharge = 0;\n\n\n    var debug = false;\n    var debugLevel = 0;\n    var debugNoCollisions = false;\n    var debugPixels = new Uint32Array(LINE_WIDTH);\n\n\n    var playerLineSprites = new Uint8Array(2 * 256 * 8 * 64);               // 2 Mirrors * 256 Patterns * 8 Variations * (1 base + 2 alts) * 20 8Bits line data specifying 1bit pixels + 4 bytes spare\n    var missileBallLineSprites = new Uint8Array(4 * 8 * 64);                // 4 Sizes * 8 Variations * (1 base + 2 alts) * 20 8Bits line data specifying 1bit pixels + 4 bytes spare\n\n    var playerCopyLengthPerShape = new Uint8Array([13, 13, 13, 13, 13, 22, 13, 38]);\n    var playerScanStartPerShape =  new Uint8Array([5, 5, 5, 5, 5, 6, 5, 6]);\n    var playerPixelSizePerShape =  new Uint8Array([1, 1, 1, 1, 1, 2, 1, 4]);\n\n    var playerCopyOffsetsReset = new Uint8Array(8 * 160);                   // 8 Variations * 160 1 byte data with copy pixel position\n    var playerScanOffsetsShape = new Uint8Array(8 * 160);                   // 8 Variations * 160 1 byte data with copy pixel position\n\n    var missileCopyOffsetsReset = new Uint8Array(4 * 8 * 160);              // 4 Sizes * 8 Variations * 160 1 byte data with copy pixel position\n    var missileScanOffsetsShape = new Uint8Array(4 * 8 * 160);              // 4 Sizes * 8 Variations * 160 1 byte data with copy pixel position\n\n    var objectsLineSpritePointerDeltaToSingleCopy = new Uint16Array([0 * 64, 1 * 64, 2 * 64, 3 * 64, 4 * 64, 0 * 64, 6 * 64, 0 * 64]);\n\n    var missileCenterOffsetsPerPlayerSize = new Uint8Array([ 5, 5, 5, 5, 5, 10, 5, 18 ]);\n\n    var videoSignal = new jt.VideoSignal();\n    var palette;\n\n    var audioSignal = new jt.TiaAudio(audioSocket);\n\n\n    // Read registers -------------------------------------------\n\n    var INPT0 =  0;     // Paddle0 Left pot port\n    var INPT1 =  0;     // Paddle0 Right pot port\n    var INPT2 =  0;     // Paddle1 Left pot port\n    var INPT3 =  0;     // Paddle1 Right pot port\n    var INPT4 =  0;     // input (Joy0 button)\n    var INPT5 =  0;     // input (Joy1 button)\n\n\n    // Write registers  ------------------------------------------\n\n    var CTRLPF = 0;     // ..11.111  control playfield ball size & collisions\n    var COLUPF = 0;     // 11111111  playfield and ball color\n    var COLUBK = 0;     // 11111111  playfield background color\n    var PF0 = 0;\t\t// 1111....  playfield register byte 0\n    var PF1 = 0;\t\t// 11111111  playfield register byte 1\n    var PF2 = 0;\t\t// 11111111  playfield register byte 2\n    var ENABL = 0;      // ......1.  graphics (enable) ball\n    var ENABLd = 0;     // ......1.  graphics (enable) ball\n    var VDELBL = 0;     // .......1  vertical delay ball\n\n    var NUSIZ0 = 0;     // ..111111  number-size player-missile 0\n    var COLUP0 = 0;     // 11111111  color-lum player 0 and missile 0\n    var REFP0 = 0;      // ....1...  reflect player 0 (>> 3)\n    var GRP0 = 0;       // 11111111  graphics player 0\n    var GRP0d = 0;      // 11111111  graphics player 0 (delayed)\n    var VDELP0 = 0;     // .......1  vertical delay player 0\n\n    var NUSIZ1 = 0;     // ..111111  number-size player-missile 1\n    var COLUP1 = 0;     // 11111111  color-lum player 1 and missile 1\n    var REFP1 = 0;      // ....1...  reflect player 1 (>> 3)\n    var GRP1 = 0;       // 11111111  graphics player 1\n    var GRP1d = 0;      // 11111111  graphics player 1 (delayed)\n    var VDELP1 = 0;     // .......1  vertical delay player 1\n\n    var ENAM0 = 0;      // ......1.  graphics (enable) missile 0\n    var RESMP0 = 0;     // ......1.  reset missile 0 to player 0\n\n    var ENAM1 = 0;      // ......1.  graphics (enable) missile 1\n    var RESMP1 = 0;     // ......1.  reset missile 1 to player 1\n\n    var HMP0 = 0;\t\t// 1111....  horizontal motion player 0\n    var HMP1 = 0;\t\t// 1111....  horizontal motion player 1\n    var HMM0 = 0;\t\t// 1111....  horizontal motion missile 0\n    var HMM1 = 0;\t\t// 1111....  horizontal motion missile 1\n    var HMBL = 0;\t\t// 1111....  horizontal motion ball\n\n    var AUDC0 = 0;\t\t// ....1111  audio control 0\n    var AUDC1 = 0;\t\t// ....1111  audio control 1\n    var AUDF0 = 0;\t\t// ...11111  audio frequency 0\n    var AUDF1 = 0;\t\t// ...11111  audio frequency 1\n    var AUDV0 = 0;\t\t// ....1111  audio volume 0\n    var AUDV1 = 0;\t\t// ....1111  audio volume 1\n\n    init();\n\n    self.eval = function(code) {\n        return eval(code);\n    }\n\n};\n"
  },
  {
    "path": "src/main/atari/tia/TiaAudio.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.TiaAudio = function() {\n\"use strict\";\n\n    var self = this;\n\n    this.connectAudioSocket = function(pAudioSocket) {\n        audioSocket = pAudioSocket;\n    };\n\n    this.cartridgeInserted = function(pCartridge) {\n        if (pCartridge && pCartridge.needsAudioClock()) cartridgeNeedsAudioClock = pCartridge;\n        else cartridgeNeedsAudioClock = null;\n    };\n\n    this.audioClockPulse = function() {\n        audioSocket.audioClockPulse();\n    };\n\n    this.getChannel0 = function() {\n        return channel0;\n    };\n\n    this.getChannel1 = function() {\n        return channel1;\n    };\n\n    this.powerOn = function() {\n        this.reset();\n        connectAudio();\n    };\n\n    this.powerOff = function() {\n        disconnectAudio();\n    };\n\n    this.reset = function() {\n        channel0.setVolume(0);\n        channel1.setVolume(0);\n        lastSample = 0;\n    };\n\n    this.nextSample = function() {\n        if (cartridgeNeedsAudioClock) cartridgeNeedsAudioClock.audioClockPulse();\n\n        var mixedSample = channel0.nextSample() - channel1.nextSample();\n\n        // Add a little damper effect to round the edges of the square wave\n        if (mixedSample !== lastSample) {\n            mixedSample = (mixedSample * 9 + lastSample) / 10;\n            lastSample = mixedSample;\n        }\n\n        return mixedSample;\n    };\n\n    function connectAudio() {\n        if (!audioSignal) audioSignal = new jt.AudioSignal(\"TiaAudio\", self, SAMPLE_RATE, VOLUME);\n        audioSocket.connectAudioSignal(audioSignal);\n    }\n\n    function disconnectAudio() {\n        if (audioSignal) audioSocket.disconnectAudioSignal(audioSignal);\n    }\n\n\n    var audioSocket;\n    var audioSignal;\n    var cartridgeNeedsAudioClock;\n\n    var lastSample = 0;\n\n    var channel0 = new jt.TiaAudioChannel();\n    var channel1 = new jt.TiaAudioChannel();\n\n    var VOLUME = 0.4;\n    var SAMPLE_RATE = 31440;\n\n};\n\n"
  },
  {
    "path": "src/main/atari/tia/TiaAudioChannel.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.TiaAudioChannel = function() {\n\"use strict\";\n\n    this.nextSample = function() {\t\t\t\t// Range 0 - 1\n        if (--dividerCountdown <= 0) {\n            dividerCountdown += divider;\n            currentSample = nextSampleForControl();\n        }\n\n        return currentSample === 1 ? volume : 0;\n    };\n\n    this.setVolume = function(newVolume) {\n        volume = newVolume / MAX_VOLUME;\n    };\n\n    this.setDivider = function(newDivider) {\n        if (divider === newDivider) return;\n\n        dividerCountdown = (dividerCountdown / divider) * newDivider;\n        divider = newDivider;\n    };\n\n    this.setControl = function(newControl) {\n        if (control === newControl) return;\n\n        control = newControl;\n\n        if (newControl === 0x00 || newControl === 0x0b)\n            nextSampleForControl = nextSilence;\t\t\t\t\t\t// Silence  (\"set to 1\" per specification)\n        else if (newControl === 0x01)\n            nextSampleForControl = nextPoly4;\t\t\t\t\t\t// 4 bit poly\n        else if (newControl === 0x02)\n            nextSampleForControl = nextDiv15Poly4;\t                // div 15 > 4 bit poly\n        else if (newControl === 0x03)\n            nextSampleForControl = nextPoly5Poly4;                   // 5 bit poly > 4 bit poly\n        else if (newControl === 0x04 || newControl === 0x05)\n            nextSampleForControl = nextTone2;\t\t\t\t\t\t// div 2 pure tone\n        else if (newControl === 0x06 || newControl === 0x0a)\n            nextSampleForControl = nextTone31;\t\t\t\t\t\t// div 31 pure tone (18 high, 13 low)\n        else if (newControl === 0x07 || newControl === 0x09)\n            nextSampleForControl = nextPoly5;\t\t\t\t\t\t// 5 bit poly\n        else if (newControl === 0x08)\n            nextSampleForControl = nextPoly9;\t\t\t\t\t\t// 9 bit poly\n        else if (newControl === 0x0c || newControl === 0x0d)\n            nextSampleForControl = nextTone6;\t\t\t\t\t\t// div 6 pure tone (3 high, 3 low)\n        else if (newControl === 0x0e)\n            nextSampleForControl = nextDiv93;                        // div 93 pure tone\t(31 tone each 3)\n        else if (newControl === 0x0f)\n            nextSampleForControl = nextPoly5Div6;\t\t\t\t    // 5 bit poly div 6 (poly 5 each 3)\n        else\n            nextSampleForControl = nextSilence;\t\t\t\t\t\t// default\n    };\n\n    var nextSilence = function() {\n        return 1;\n    };\n\n    var currentPoly4 = function() {\n        return POLY4_STREAM[poly4Count];\n    };\n\n    var nextPoly4 = function() {\n        if (++poly4Count === 15)\n            poly4Count = 0;\n        return POLY4_STREAM[poly4Count];\n    };\n\n    var nextPoly5 = function() {\n        if (++poly5Count === 31)\n            poly5Count = 0;\n        return POLY5_STREAM[poly5Count];\n    };\n\n    var nextPoly9 = function() {\n        var carry = poly9 & 0x01;\t\t\t\t\t// bit 0\n        var push = ((poly9 >> 4) ^ carry) & 0x01;\t// bit 4 XOR bit 0\n        poly9 = poly9 >>> 1;\t\t\t\t\t\t// shift right\n        if (push === 0)\t\t\t\t\t\t\t\t// set bit 8 = push\n            poly9 &= 0x0ff;\n        else\n            poly9 |= 0x100;\n        return carry;\n    };\n\n    var nextTone2 = function() {\n        if (divider === 1)                          // Divider 1 and Tone2 should never produce sound\n            return 1;\n        else\n            return tone2 = tone2 ? 0 : 1;\n    };\n\n    var currentTone6 = function() {\n        return tone6;\n    };\n\n    var nextTone6 = function() {\n        if (--tone6Countdown === 0) {\n            tone6Countdown = 3;\n            tone6 = tone6 ? 0 : 1;\n        }\n        return tone6;\n    };\n\n    var currentTone31 = function() {\n        return TONE31_STREAM[tone31Count];\n    };\n\n    var nextTone31 = function() {\n        if (++tone31Count === 31)\n            tone31Count = 0;\n        return TONE31_STREAM[tone31Count];\n    };\n\n    var nextDiv15Poly4 = function() {\n        return currentTone31() !== nextTone31() ? nextPoly4() : currentPoly4();\n    };\n\n    var nextPoly5Poly4 = function() {\n        return nextPoly5() ? nextPoly4() : currentPoly4();\n    };\n\n    var nextDiv93 = function() {\n        return currentTone31() != nextTone31() ? nextTone6() : currentTone6();\n    };\n\n    var nextPoly5Div6 = function() {\n        return nextPoly5() ? nextTone6() : currentTone6();\n    };\n\n    var nextSampleForControl = nextSilence;\n\n\n    var volume = 0;\t\t\t\t\t// 0 - 1\n    var control = 0;\t\t\t\t// 0-f\n    var divider = 1;\t\t\t\t// Changes to dividers will only be reflected at the next countdown cycle\n    var dividerCountdown = 1;\n\n    var currentSample = 0;\n\n    var tone2 = 1;\n\n    var tone6 = 1;\n    var tone6Countdown = 3;\n\n    var poly9 = 0x1ff;\n\n    var poly4Count = 14;\n    var POLY4_STREAM = [1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0 ];\n\n    var poly5Count = 30;\n    var POLY5_STREAM = [1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0];\n\n    var tone31Count = 30;\n    var TONE31_STREAM = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n    var MAX_VOLUME = 15;\n\n};\n"
  },
  {
    "path": "src/main/atari/tia/TiaPalettes.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n(function() {\n\"use strict\";\n\n    var ntscRGB = [\n        0x000000,\t\t// 00\n        0x404040,\t\t// 02\n        0x6c6c6c,\t\t// 04\n        0x909090,\t\t// 06\n        0xb0b0b0,\t\t// 08\n        0xc8c8c8,\t\t// 0A\n        0xdcdcdc,\t\t// 0C\n        0xf4f4f4,\t\t// 0E\n        0x004444,\t\t// 10\n        0x106464,\t\t// 12\n        0x248484,\t\t// 14\n        0x34a0a0,\t\t// 16\n        0x40b8b8,\t\t// 18\n        0x50d0d0,\t\t// 1A\n        0x5ce8e8,\t\t// 1C\n        0x68fcfc,\t\t// 1E\n        0x002870,\t\t// 20\n        0x144484,\t\t// 22\n        0x285c98,\t\t// 24\n        0x3c78ac,\t\t// 26\n        0x4c8cbc,\t\t// 28\n        0x5ca0cc,\t\t// 2A\n        0x68b4dc,\t\t// 2C\n        0x78c8ec,\t\t// 2E\n        0x001884,\t\t// 30\n        0x183498,\t\t// 32\n        0x3050ac,\t\t// 34\n        0x4868c0,\t\t// 36\n        0x5c80d0,\t\t// 38\n        0x7094e0,\t\t// 3A\n        0x80a8ec,\t\t// 3C\n        0x94bcfc,\t\t// 3E\n        0x000088,\t\t// 40\n        0x20209c,\t\t// 42\n        0x3c3cb0,\t\t// 44\n        0x5858c0,\t\t// 46\n        0x7070d0,\t\t// 48\n        0x8888e0,\t\t// 4A\n        0xa0a0ec,\t\t// 4C\n        0xb4b4fc,\t\t// 4E\n        0x5c0078,\t\t// 50\n        0x74208c,\t\t// 52\n        0x883ca0,\t\t// 54\n        0x9c58b0,\t\t// 56\n        0xb070c0,\t\t// 58\n        0xc084d0,\t\t// 5A\n        0xd09cdc,\t\t// 5C\n        0xe0b0ec,\t\t// 5E\n        0x780048,\t\t// 60\n        0x902060,\t\t// 62\n        0xa43c78,\t\t// 64\n        0xb8588c,\t\t// 66\n        0xcc70a0,\t\t// 68\n        0xdc84b4,\t\t// 6A\n        0xec9cc4,\t\t// 6C\n        0xfcb0d4,\t\t// 6E\n        0x840014,\t\t// 70\n        0x982030,\t\t// 72\n        0xac3c4c,\t\t// 74\n        0xc05868,\t\t// 76\n        0xd0707c,\t\t// 78\n        0xe08894,\t\t// 7A\n        0xeca0a8,\t\t// 7C\n        0xfcb4bc,\t\t// 7E\n        0x880000,\t\t// 80\n        0x9c201c,\t\t// 82\n        0xb04038,\t\t// 84\n        0xc05c50,\t\t// 86\n        0xd07468,\t\t// 88\n        0xe08c7c,\t\t// 8A\n        0xeca490,\t\t// 8C\n        0xfcb8a4,\t\t// 8E\n        0x7c1800,\t\t// 90\n        0x90381c,\t\t// 92\n        0xa85438,\t\t// 94\n        0xbc7050,\t\t// 96\n        0xcc8868,\t\t// 98\n        0xdc9c7c,\t\t// 9A\n        0xecb490,\t\t// 9C\n        0xfcc8a4,\t\t// 9E\n        0x5c2c00,\t\t// A0\n        0x784c1c,\t\t// A2\n        0x906838,\t\t// A4\n        0xac8450,\t\t// A6\n        0xc09c68,\t\t// A8\n        0xd4b47c,\t\t// AA\n        0xe8cc90,\t\t// AC\n        0xfce0a4,\t\t// AE\n        0x2c3c00,\t\t// B0\n        0x485c1c,\t\t// B2\n        0x647c38,\t\t// B4\n        0x809c50,\t\t// B6\n        0x94b468,\t\t// B8\n        0xacd07c,\t\t// BA\n        0xc0e490,\t\t// BC\n        0xd4fca4,\t\t// BE\n        0x003c00,\t\t// C0\n        0x205c20,\t\t// C2\n        0x407c40,\t\t// C4\n        0x5c9c5c,\t\t// C6\n        0x74b474,\t\t// C8\n        0x8cd08c,\t\t// CA\n        0xa4e4a4,\t\t// CC\n        0xb8fcb8,\t\t// CE\n        0x003814,\t\t// D0\n        0x1c5c34,\t\t// D2\n        0x387c50,\t\t// D4\n        0x50986c,\t\t// D6\n        0x68b484,\t\t// D8\n        0x7ccc9c,\t\t// DA\n        0x90e4b4,\t\t// DC\n        0xa4fcc8,\t\t// DE\n        0x00302c,\t\t// E0\n        0x1c504c,\t\t// E2\n        0x347068,\t\t// E4\n        0x4c8c84,\t\t// E6\n        0x64a89c,\t\t// E8\n        0x78c0b4,\t\t// EA\n        0x88d4cc,\t\t// EC\n        0x9cece0,\t\t// EE\n        0x002844,\t\t// F0\n        0x184864,\t\t// F2\n        0x306884,\t\t// F4\n        0x4484a0,\t\t// F6\n        0x589cb8,\t\t// F8\n        0x6cb4d0,\t\t// FA\n        0x7ccce8,\t\t// FC\n        0x8ce0fc\t\t// FE\n    ];\n\n    var palRGB = [\n        0x000000,\t\t// 00\n        0x282828,\t\t// 02\n        0x505050,\t\t// 04\n        0x747474,\t\t// 06\n        0x949494,\t\t// 08\n        0xb4b4b4,\t\t// 0A\n        0xd0d0d0,\t\t// 0C\n        0xf1f1f1,\t\t// 0E\n        0x000000,\t\t// 10\n        0x282828,\t\t// 12\n        0x505050,\t\t// 14\n        0x747474,\t\t// 16\n        0x949494,\t\t// 18\n        0xb4b4b4,\t\t// 1A\n        0xd0d0d0,\t\t// 1C\n        0xf1f1f1,\t\t// 1E\n        0x005880,\t\t// 20\n        0x207094,\t\t// 22\n        0x3c84a8,\t\t// 24\n        0x589cbc,\t\t// 26\n        0x70accc,\t\t// 28\n        0x84c0dc,\t\t// 2A\n        0x9cd0ec,\t\t// 2C\n        0xb0e0fc,\t\t// 2E\n        0x005c44,\t\t// 30\n        0x20785c,\t\t// 32\n        0x3c9074,\t\t// 34\n        0x58ac8c,\t\t// 36\n        0x70c0a0,\t\t// 38\n        0x84d4b0,\t\t// 3A\n        0x9ce8c4,\t\t// 3C\n        0xb0fcd4,\t\t// 3E\n        0x003470,\t\t// 40\n        0x205088,\t\t// 42\n        0x3C68A0,\t\t// 44\n        0x5884B4,\t\t// 46\n        0x7098C8,\t\t// 48\n        0x84ACDC,\t\t// 4A\n        0x9CC0EC,\t\t// 4C\n        0xB0D4FC,\t\t// 4E\n        0x146400,\t\t// 50\n        0x348020,\t\t// 52\n        0x50983C,\t\t// 54\n        0x6CB058,\t\t// 56\n        0x84C470,\t\t// 58\n        0x9CD884,\t\t// 5A\n        0xB4E89C,\t\t// 5C\n        0xC8FCB0,\t\t// 5E\n        0x140070,\t\t// 60\n        0x342088,\t\t// 62\n        0x503CA0,\t\t// 64\n        0x6C58B4,\t\t// 66\n        0x8470C8,\t\t// 68\n        0x9C84DC,\t\t// 6A\n        0xB49CEC,\t\t// 6C\n        0xC8B0FC,\t\t// 6E\n        0x5C5C00,\t\t// 70\n        0x747420,\t\t// 72\n        0x8C8C3C,\t\t// 74\n        0xA4A458,\t\t// 76\n        0xB8B870,\t\t// 78\n        0xC8C884,\t\t// 7A\n        0xDCDC9C,\t\t// 7C\n        0xECECB0,\t\t// 7E\n        0x5C0070,\t\t// 80\n        0x742084,\t\t// 82\n        0x883C94,\t\t// 84\n        0x9C58A8,\t\t// 86\n        0xB070B4,\t\t// 88\n        0xC084C4,\t\t// 8A\n        0xD09CD0,\t\t// 8C\n        0xE0B0E0,\t\t// 8E\n        0x703C00,\t\t// 90\n        0x88581C,\t\t// 92\n        0xA07438,\t\t// 94\n        0xB48C50,\t\t// 96\n        0xC8A468,\t\t// 98\n        0xDCB87C,\t\t// 9A\n        0xECCC90,\t\t// 9C\n        0xFCE0A4,\t\t// 9E\n        0x700058,\t\t// A0\n        0x88206C,\t\t// A2\n        0xA03C80,\t\t// A4\n        0xB45894,\t\t// A6\n        0xC870A4,\t\t// A8\n        0xDC84B4,\t\t// AA\n        0xEC9CC4,\t\t// AC\n        0xFCB0D4,\t\t// AE\n        0x702000,\t\t// B0\n        0x883C1C,\t\t// B2\n        0xA05838,\t\t// B4\n        0xB47450,\t\t// B6\n        0xC88868,\t\t// B8\n        0xDCA07C,\t\t// BA\n        0xECB490,\t\t// BC\n        0xFCC8A4,\t\t// BE\n        0x80003C,\t\t// C0\n        0x942054,\t\t// C2\n        0xA83C6C,\t\t// C4\n        0xBC5880,\t\t// C6\n        0xCC7094,\t\t// C8\n        0xDC84A8,\t\t// CA\n        0xEC9CB8,\t\t// CC\n        0xFCB0C8,\t\t// CE\n        0x880000,\t\t// D0\n        0x9C2020,\t\t// D2\n        0xB03C3C,\t\t// D4\n        0xC05858,\t\t// D6\n        0xD07070,\t\t// D8\n        0xE08484,\t\t// DA\n        0xEC9C9C,\t\t// DC\n        0xFCB0B0,\t\t// DE\n        0x000000,\t\t// E0\n        0x282828,\t\t// E2\n        0x505050,\t\t// E4\n        0x747474,\t\t// E6\n        0x949494,\t\t// E8\n        0xB4B4B4,\t\t// EA\n        0xD0D0D0,\t\t// EC\n        0xF1F1F1,\t\t// EE\n        0x000000,\t\t// F0\n        0x282828,\t\t// F2\n        0x505050,\t\t// F4\n        0x747474,\t\t// F6\n        0x949494,\t\t// F8\n        0xB4B4B4,\t\t// FA\n        0xD0D0D0,\t\t// FC\n        0xF1F1F1\t\t// FE\n    ];\n\n    var ntscPalette = new Uint32Array(256);\n    var palPalette = new Uint32Array(256);\n    for (var i = 0, len = ntscRGB.length; i < len; i++) {\n        // Adds 100% alpha for ARGB use\n        ntscPalette[i*2] = ntscPalette[i*2+1] = ntscRGB[i] + 0xff000000;\n        palPalette[i*2] = palPalette[i*2+1] = palRGB[i] + 0xff000000;\n    }\n    // ntscPalette[0] = ntscPalette[1] = palPalette[0] = palPalette[1] = 0;\t// Full transparency for blacks. Needed for CRT emulation modes\n\n    // Clean up\n    ntscRGB = palRGB = undefined;\n\n    jt.TiaPalettes = {\n        NTSC: ntscPalette,\n        PAL: palPalette\n    };\n\n})();\n\n"
  },
  {
    "path": "src/main/atari/video/VideoSignal.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.VideoSignal = function() {\n\"use strict\";\n\n    this.connectMonitor = function(pMonitor) {\n        this.monitor = pMonitor;\n    };\n\n    this.setVideoStandard = function(standard) {\n        if (this.monitor) this.monitor.setVideoStandard(standard);\n    };\n\n    this.nextLine = function(pixels, vSynch) {\n        return this.monitor.nextLine(pixels, vSynch);\n    };\n\n    this.finishFrame = function() {\n       this.monitor.refresh();\n    };\n\n    this.signalOff = function() {\n        if (this.monitor) this.monitor.videoSignalOff();\n    };\n\n    this.showOSD = function(message, overlap, error) {\n        if (this.monitor) this.monitor.showOSD(message, overlap, error);\n    };\n\n    this.toggleShowInfo = function() {\n        this.monitor.toggleShowInfo();\n    };\n\n\n    this.monitor = null;\n\n};"
  },
  {
    "path": "src/main/atari/video/VideoStandard.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.VideoStandard = {\n    NTSC: {\n        name: \"NTSC\",\n        desc: \"NTSC 60Hz\",\n        totalWidth: 228,\n        totalHeight: 262,\n        defaultOriginYPct: 10.8,         \t\t// Percentage of height\n        defaultHeightPct: 85.2,\n        targetFPS: 60,\n        pulldowns: {\n            60: { // Host at 60Hz\n                standard: \"NTSC\",\n                frequency: 60,\n                divider: 1,\n                cadence: [ 1 ],\n                steps: 1\n            },\n            120: { // Host at 120Hz, clock / 2\n                standard: \"NTSC\",\n                frequency: 120,\n                divider: 2,\n                cadence: [ 1 ],\n                steps: 1\n            },\n            \"120s\": { // Host at 120Hz\n                standard: \"NTSC\",\n                frequency: 120,\n                divider: 1,\n                cadence: [ 0, 1 ],\n                steps: 2\n            },\n            50: { // Host at 50Hz\n                standard: \"NTSC\",\n                frequency: 50,\n                divider: 1,\n                cadence: [ 1, 1, 1, 1, 2 ],\n                steps: 5\n            },\n            100: { // Host at 100Hz, clock / 2\n                standard: \"NTSC\",\n                frequency: 100,\n                divider: 2,\n                cadence: [ 1, 1, 1, 1, 2 ],\n                steps: 5\n            },\n            \"100s\": { // Host at 100Hz\n                standard: \"NTSC\",\n                frequency: 100,\n                divider: 1,\n                cadence: [ 0, 1, 0, 1, 1, 0, 1, 0, 1, 1 ],\n                steps: 10\n            },\n            TIMER: { // Host frequency not detected or V-synch disabled, use a normal interval timer\n                standard: \"NTSC\",\n                frequency: 62.5,\n                divider: 1,\n                cadence: [ 1 ],\n                steps: 1\n            }\n        }\n    },\n    PAL: {\n        name: \"PAL\",\n        desc: \"PAL 50Hz\",\n        totalWidth: 228,\n        totalHeight: 312,\n        defaultOriginYPct: 13.5,           \t\t// Percentage of height\n        defaultHeightPct: 77.3,\n        targetFPS: 50,                          // Original is 50.22364217252396, or 50.3846153846153847\n        pulldowns: {\n            50: { // Host at 50Hz\n                standard: \"PAL\",\n                frequency: 50,\n                divider: 1,\n                cadence: [ 1 ],\n                steps: 1\n            },\n            100: { // Host at 100Hz, clock / 2\n                standard: \"PAL\",\n                frequency: 100,\n                divider: 2,\n                cadence: [ 1 ],\n                steps: 1\n            },\n            \"100s\": { // Host at 100Hz\n                standard: \"PAL\",\n                frequency: 100,\n                divider: 1,\n                cadence: [ 0, 1 ],\n                steps: 2\n            },\n            60: { // Host at 60Hz\n                standard: \"PAL\",\n                frequency: 60,\n                divider: 1,\n                cadence: [ 0, 1, 1, 1, 1, 1 ],\n                steps: 6\n            },\n            120: { // Host at 120Hz, clock / 2\n                standard: \"PAL\",\n                frequency: 120,\n                divider: 2,\n                cadence: [ 0, 1, 1, 1, 1, 1 ],\n                steps: 6\n            },\n            \"120s\": { // Host at 120Hz\n                standard: \"PAL\",\n                frequency: 120,\n                divider: 1,\n                cadence: [ 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ],\n                steps: 12\n            },\n            TIMER: { // Host frequency not detected or V-synch disabled, use a normal interval timer\n                standard: \"PAL\",\n                frequency: 50,\n                divider: 1,\n                cadence: [ 1 ],\n                steps: 1\n            }\n        }\n    }\n};\n\n"
  },
  {
    "path": "src/main/images/Images.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Images = {\n\n    embedded: false,\n    count: 5,\n\n    urls: {\n        logo: Javatari.IMAGES_PATH + \"logo.png\",\n        loading: Javatari.IMAGES_PATH + \"loading.gif\",\n        mouseCursor: Javatari.IMAGES_PATH + \"mouse-cursor.png\",\n        panel: Javatari.IMAGES_PATH + \"panel.jpg\",\n        panelSprites: Javatari.IMAGES_PATH + \"panel-sprites.jpg\",\n        controllers: Javatari.IMAGES_PATH + \"controllers.jpg\",\n        iconSprites: Javatari.IMAGES_PATH + \"icon-sprites.png\"\n    }\n\n};\n\n"
  },
  {
    "path": "src/main/room/Room.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Room = function(screenElement, consoleStartPowerOn) {\n\"use strict\";\n\n    var self = this;\n\n    function init() {\n        buildMainClock();\n        buildPeripherals();\n        buildAndPlugConsole();\n        Javatari.userROMFormats.init();\n    }\n\n    this.powerOn = function() {\n        self.screen.powerOn();\n        self.speaker.powerOn();\n        self.consoleControls.powerOn();\n        self.setLoading(true);\n        self.enterStandaloneMode();\n        roomPowerOnTime = Date.now();\n    };\n\n    this.powerOff = function() {\n        self.console.powerOff();\n        self.consoleControls.powerOff();\n        self.speaker.powerOff();\n        self.screen.powerOff();\n    };\n\n    this.getNetServer = function() {\n        if (!this.netServer) this.netServer = new jt.NetServer(this);\n        return this.netServer;\n    };\n\n    this.getNetClient = function() {\n        if (!this.netClient) this.netClient = new jt.NetClient(this);\n        return this.netClient;\n    };\n\n    this.setLoading = function(boo) {\n        if (this.isLoading === boo) return;\n        this.isLoading = boo;\n        this.console.setLoading(this.isLoading);\n        this.screen.setLoading(this.isLoading);\n    };\n\n    this.start = function(startAction) {\n        this.mainVideoClock.detectHostNativeFPSAndCallback(function(nativeFPS) {\n            self.console.vSynchSetSupported(nativeFPS > 0);\n            afterPowerONDelay(function () {\n                self.setLoading(false);\n                self.screen.start(startAction || consolePowerOnStartAction);\n            });\n        });\n    };\n\n    this.showOSD = function(message, overlap, error) {\n        this.console.showOSD(message, overlap, error);\n    };\n\n    this.mainVideoClockPulse = function() {\n        if (self.console.isSystemPaused()) return;\n\n        if (self.netController)\n            self.netController.netVideoClockPulse();\n        else {\n            self.console.getConsoleControlsSocket().controlsClockPulse();\n            self.console.videoClockPulse();\n        }\n    };\n\n    this.enterStandaloneMode = function() {\n        var oldMode = this.netPlayMode;\n        this.netPlayMode = 0;\n        this.netController = undefined;\n        self.mainVideoClock.go();       // Local Clock\n\n        // Restore state from before NetPlay if any\n        if (this.netPlayStateBeforeClientMode) {\n            this.console.loadState(this.netPlayStateBeforeClientMode);      // extended\n            this.consoleControls.setP1ControlsAndPaddleMode(this.netPlayControlsModeBeforeClientMode.p1, this.netPlayControlsModeBeforeClientMode.pd);\n            this.netPlayStateBeforeClientMode = undefined;\n        }\n\n        if (oldMode !== this.netPlayMode) this.screen.roomNetPlayStatusChangeUpdate(oldMode);\n    };\n\n    this.enterNetServerMode = function(netServer) {\n        var oldMode = this.netPlayMode;\n        this.netPlayMode = 1;\n        this.netController = netServer;\n        self.mainVideoClock.go();       // Local Clock, also sent to Client\n\n        if (oldMode !== this.netPlayMode) this.screen.roomNetPlayStatusChangeUpdate(oldMode);\n    };\n\n    this.enterNetClientMode = function(netClient) {\n        var oldMode = this.netPlayMode;\n        this.netPlayMode = 2;\n        this.netController = netClient;\n        self.mainVideoClock.pause();    // Clock comes from Server\n\n        // Save state from before NetPlay, to be restored when session is over\n        this.netPlayStateBeforeClientMode = this.console.saveState(true);     // extended\n        this.netPlayControlsModeBeforeClientMode = { p1: this.consoleControls.isP1ControlsMode(), pd: this.consoleControls.isPaddleMode() };\n\n        if (oldMode !== this.netPlayMode) this.screen.roomNetPlayStatusChangeUpdate(oldMode);\n    };\n\n    this.enterNetPendingMode = function(netController) {\n        var oldMode = this.netPlayMode;\n        this.netPlayMode = netController === this.netServer ? -1 : -2;\n        this.netController = undefined;\n        self.mainVideoClock.go();       // Local Clock continued\n\n        if (oldMode !== this.netPlayMode) this.screen.roomNetPlayStatusChangeUpdate(oldMode);\n    };\n\n    function afterPowerONDelay(func) {\n        var wait = Javatari.AUTO_POWER_ON_DELAY;\n        if (wait >= 0 && JavatariFullScreenSetup.shouldStartInFullScreen()) wait += 1400;   // Wait a bit more\n        wait -= (Date.now() - roomPowerOnTime);\n        if (wait < 1) wait = 1;\n        setTimeout(func, wait);\n    }\n\n    function consolePowerOnStartAction() {\n        if (!consoleStartPowerOn) return;\n        if (self.console.getCartridgeSocket().inserted()) self.console.userPowerOn();\n        else if (Javatari.CARTRIDGE_SHOW_RECENT && !Javatari.CARTRIDGE_CHANGE_DISABLED) self.screen.openCartridgeChooserDialog(true);   // Show even if no recent ROMs present\n    }\n\n    function buildMainClock() {\n        // Clock frequency will be changed directly by the Console\n        self.mainVideoClock = new jt.Clock(self.mainVideoClockPulse);\n    }\n\n    function buildPeripherals() {\n        self.peripheralControls = new jt.DOMPeripheralControls(self);\n        self.consoleControls = new jt.DOMConsoleControls(self, self.peripheralControls);\n        self.fileDownloader = new jt.FileDownloader();\n        self.stateMedia = new jt.LocalStorageSaveStateMedia(self);\n        self.recentROMs = new jt.RecentStoredROMs();\n        self.fileLoader = new jt.FileLoader(self, self.recentROMs, self.peripheralControls);\n        self.speaker = new jt.WebAudioSpeaker(screenElement);\n        self.screen = new jt.CanvasDisplay(self, screenElement);\n\n        self.fileDownloader.connectPeripherals(self.screen);\n        self.screen.connectPeripherals(self.recentROMs, self.fileLoader, self.fileDownloader, self.consoleControls, self.peripheralControls, self.stateMedia);\n        self.speaker.connectPeripherals(self.screen);\n        self.consoleControls.connectPeripherals(self.screen);\n        self.stateMedia.connectPeripherals(self.fileDownloader);\n        self.peripheralControls.connectPeripherals(self.screen, self.speaker, self.consoleControls, self.fileLoader);\n    }\n\n    function buildAndPlugConsole() {\n        self.console = new jt.AtariConsole();\n        self.mainVideoClock.connect(self.console.getVideoClockSocket());\n        self.stateMedia.connect(self.console.getSavestateSocket());\n        self.fileLoader.connect(self.console);\n        self.screen.connect(self.console);\n        self.speaker.connect(self.console.getAudioSocket());\n        self.consoleControls.connect(self.console.getConsoleControlsSocket());\n        self.peripheralControls.connect(self.console.getCartridgeSocket());\n        self.console.socketsConnected();\n    }\n\n\n    this.mainVideoClock = null;\n    this.console = null;\n    this.screen = null;\n    this.speaker = null;\n    this.consoleControls = null;\n    this.fileDownloader = null;\n    this.stateMedia = null;\n    this.recentROMs = null;\n    this.fileLoader = null;\n    this.peripheralControls = null;\n\n    this.netPlayMode = 0;       // -1 = pending, 0 = standalone, 1 = server, 2 = client\n    this.netController = undefined;\n    this.netServer = undefined;\n    this.netClient = undefined;\n    this.netPlayStateBeforeClientMode = undefined;\n    this.netPlayControlsModeBeforeClientMode = undefined;\n\n    this.isLoading = false;\n\n    var roomPowerOnTime;\n\n\n    // Debug methods  ------------------------------------------------------\n\n    this.runFramesAtTopSpeed = function(frames) {\n        this.mainVideoClock.pause();\n        var start = jt.Util.performanceNow();\n        for (var i = 0; i < frames; i++) {\n            //var pulseTime = jt.Util.performanceNow();\n            self.mainVideoClockPulse();\n            //console.log(jt.Util.performanceNow() - pulseTime);\n        }\n        var duration = jt.Util.performanceNow() - start;\n        jt.Util.log(\"Done running \" + frames + \" frames in \" + (duration | 0) + \" ms\");\n        jt.Util.log((frames / (duration/1000)).toFixed(2) + \"  frames/sec\");\n        this.mainVideoClock.go();\n    };\n\n\n    init();\n\n};\n\n"
  },
  {
    "path": "src/main/room/clock/Clock.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Clock Pulse generator. Intended to be synchronized with Host machine Video Frequency whenever possible\n\njt.Clock = function(clockPulse) {\n    \"use strict\";\n\n    this.connect = function(clockSocket) {\n        clockSocket.connectClock(this);\n    };\n\n    this.go = function() {\n        if (!running) {\n            //lastPulseTime = jt.Util.performanceNow();\n            //timeMeasures = [];\n\n            useRequestAnimationFrame = vSynch && (cyclesPerSecond === this.getVSynchNativeFrequency());\n\n            // console.log(\"Clock at \" + cyclesPerSecond + \" / \" + divider + \" using RequestAnimationFrame: \" + useRequestAnimationFrame);\n\n            running = true;\n            if (useRequestAnimationFrame)\n                animationFrame = requestAnimationFrame(pulse);\n            else\n                interval = setInterval(pulse, cycleTimeMs);\n        }\n    };\n\n    this.pause = function() {\n        running = false;\n        if (animationFrame) {\n            cancelAnimationFrame(animationFrame);\n            animationFrame = null;\n        }\n        if (interval) {\n            clearInterval(interval);\n            interval = null;\n        }\n    };\n\n    this.setFrequency = function(freq, div) {\n        if (running) {\n            this.pause();\n            internalSetFrequency(freq, div);\n            this.go();\n        } else {\n            internalSetFrequency(freq, div);\n        }\n    };\n\n    this.setVSynch = function(state) {\n        if (running) {\n            this.pause();\n            vSynch = state;\n            this.go();\n        } else {\n            vSynch = state;\n        }\n    };\n\n    this.getVSynchNativeFrequency = function() {\n        return vSynchAltNativeFrequency || vSynchNativeFrequency;\n    };\n\n    this.setVSynchAltNativeFrequency = function(freq) {\n        vSynchAltNativeFrequency = freq;\n    };\n\n    var internalSetFrequency = function(freq, div) {\n        cyclesPerSecond = freq;\n        cycleTimeMs = 1000 / freq;\n        divider = div >= 1 ? div : 1;\n        if (dividerCounter > divider) dividerCounter = divider;\n    };\n\n    var pulse = function() {\n        //var pulseTime = jt.Util.performanceNow();\n        //timeMeasures[timeMeasures.length] = pulseTime - lastPulseTime;\n        //lastPulseTime = pulseTime;\n\n        animationFrame = null;\n\n        if (divider > 1) {\n            if (--dividerCounter <= 0) {\n                dividerCounter = divider;\n                clockPulse();\n            }\n        } else\n            clockPulse();\n\n        if (useRequestAnimationFrame && !animationFrame)\n            animationFrame = requestAnimationFrame(pulse);\n\n        //console.log(jt.Util.performanceNow() - pulseTime);\n    };\n\n    //this.getMeasures = function() {\n    //    return timeMeasures;\n    //};\n\n    this.detectHostNativeFPSAndCallback = function(callback) {\n\n        if (Javatari.SCREEN_VSYNCH_MODE === -1) {\n            jt.Util.warning(\"Video native V-Synch disabled in configuration\");\n            if (callback) callback(vSynchNativeFrequency);\n            return;\n        }\n        if (Javatari.SCREEN_FORCE_HOST_NATIVE_FPS !== -1) {\n            jt.Util.warning(\"Host video frequency forced in configuration: \" + Javatari.SCREEN_FORCE_HOST_NATIVE_FPS);\n            if (callback) callback(vSynchNativeFrequency);\n            return;\n        }\n\n        // Start detection\n\n        if (!window.requestAnimationFrame) return giveUp();\n\n        var tries = 0;\n        // var samples = [];\n        var lastTime = 0;\n        var good60 = 0, good50 = 0, good120 = 0, good100 = 0;\n        var tolerance = 0.06;\n\n        var nativeFPSSampler = function() {\n            // Detected?\n            if (good60 >= 12 || good50 >= 18 || good120 >= 14 || good100 >= 18) {\n                vSynchNativeFrequency = good60 >= 12 ? 60 : good50 >= 18 ? 50 : good120 >= 14 ? 120 : 100;\n                jt.Util.log(\"Video native frequency detected: \" + vSynchNativeFrequency + \"Hz\");\n                if (callback) callback(vSynchNativeFrequency);\n                // console.log(samples);\n                return;\n            }\n\n            tries++;\n            if (tries <= 70) {\n                var currentTime = jt.Util.performanceNow();\n                var sample = 1000 / (currentTime - lastTime);\n                // samples[samples.length] = sample;\n                lastTime = currentTime;\n                if (sample >= 47    && sample <= 53)    good50++;\n                if (sample >= 56.4  && sample <= 63.6)  good60++;\n                if (sample >= 112.8 && sample <= 127.2) good120++;\n                if (sample >= 94    && sample <= 106)   good100++;\n                requestAnimationFrame(nativeFPSSampler);\n            } else\n                return giveUp();\n        };\n\n        function giveUp() {\n            vSynchNativeFrequency = -1;\n            jt.Util.error(\"Could not detect video native frequency. V-Synch DISABLED!\");\n            // console.log(samples);\n            if (callback) callback(vSynchNativeFrequency);\n        }\n\n        nativeFPSSampler();\n    };\n\n    this.eval = function(str) {\n        return eval(str);\n    };\n\n\n    var running = false;\n\n    var cyclesPerSecond = 1;\n    var cycleTimeMs = 1000;\n    var divider = 1;\n    var dividerCounter = 1;\n    var useRequestAnimationFrame;\n    var animationFrame = null;\n    var interval = null;\n    var vSynch = true;\n\n    var vSynchNativeFrequency = Javatari.SCREEN_VSYNCH_MODE === -1 ? -1 : Javatari.SCREEN_FORCE_HOST_NATIVE_FPS;      // -1 = Unknown or not detected\n    var vSynchAltNativeFrequency = undefined;                           // undefined = deactivated. Used by NetPlay to force the same frequency as the Server\n\n    //var timeMeasures = [];\n    //var lastPulseTime = 0;\n\n};\n\n"
  },
  {
    "path": "src/main/room/controls/DOMConsoleControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.DOMConsoleControls = function(room, keyForwardControls) {\n\"use strict\";\n\n    var self = this;\n\n    function init() {\n        gamepadControls = new jt.GamepadConsoleControls(self);\n        touchControls = new jt.DOMTouchControls(self);\n        self.applyPreferences();\n    }\n\n    this.connect = function(pControlsSocket) {\n        consoleControlsSocket = pControlsSocket;\n        consoleControlsSocket.connectControls(this);\n        gamepadControls.connect(pControlsSocket);\n        touchControls.connect(pControlsSocket);\n    };\n\n    this.connectPeripherals = function(pScreen) {\n        screen = pScreen;\n        gamepadControls.connectScreen(pScreen);\n        touchControls.connectScreen(pScreen);\n    };\n\n    this.addKeyInputElement = function(element) {\n        element.addEventListener(\"keydown\", this.keyDown);\n        element.addEventListener(\"keyup\", this.keyUp);\n    };\n\n    this.setupTouchControlsIfNeeded = function(mainElement) {\n        touchControls.setupTouchControlsIfNeeded(mainElement)\n    };\n\n    this.powerOn = function() {\n        preventIEHelp();\n        gamepadControls.powerOn();\n        touchControls.powerOn();\n        if (PADDLES_MODE === 0) setPaddleMode(false, false);\n        else if (PADDLES_MODE === 1) setPaddleMode(true, false);\n    };\n\n    this.powerOff = function() {\n        setPaddleMode(false, false);\n        gamepadControls.powerOff();\n        touchControls.powerOff();\n    };\n\n    this.releaseControllers = function() {\n        for (var c in keyStateMap) if (keyStateMap[c]) {\n            processControlState(c, false);\n            keyStateMap[c] = false;\n        }\n        paddle0MovingLeft = paddle0MovingRight = paddle1MovingLeft = paddle1MovingRight = false;\n        turboControlState[cc.JOY0_BUTTON] = turboControlState[cc.JOY1_BUTTON] = false;\n        touchControls.releaseControllers();\n    };\n\n    this.getTouchControls = function() {\n        return touchControls;\n    };\n\n    this.toggleP1ControlsMode = function() {\n        this.setP1ControlsMode(!p1ControlsMode);\n        showModeOSD();\n        fireModeStateUpdate();\n    };\n\n    this.setP1ControlsMode = function(state) {\n        p1ControlsMode = state;\n        gamepadControls.setP1ControlsMode(state);\n        touchControls.setP1ControlsMode(state);\n        this.releaseControllers();\n        initKeys();\n    };\n\n    this.isP1ControlsMode = function() {\n        return p1ControlsMode;\n    };\n\n    this.togglePaddleMode = function() {\n        setPaddleMode(!paddleMode, true);\n        fireModeStateUpdate();\n    };\n\n    this.isPaddleMode = function() {\n        return paddleMode;\n    };\n\n    this.setP1ControlsAndPaddleMode = function(p1, paddle) {\n        this.setP1ControlsMode(p1);\n        setPaddleMode(paddle, false);\n        fireModeStateUpdate();\n    };\n\n    this.toggleGamepadMode = function() {\n        gamepadControls.toggleMode();\n        fireModeStateUpdate();\n    };\n\n    this.getGamepadModeDesc = function() {\n        return gamepadControls.getModeDesc();\n    };\n\n    this.toggleTouchControlsMode = function() {\n        touchControls.toggleMode();\n        fireModeStateUpdate();\n    };\n\n    this.toggleTouchDirBig = function() {\n        touchControls.toggleTouchDirBig();\n    };\n\n    this.toggleTurboFireSpeed = function() {\n        setTurboFireSpeed((turboFireSpeed + 1) % 11);\n        screen.showOSD(\"Turbo Fire\" + (turboFireSpeed ? \" speed: \" + this.getTurboFireSpeedDesc() : \": OFF\"), true);\n\n        // Persist\n        prefs.turboFireSpeed = turboFireSpeed;\n        Javatari.userPreferences.setDirty();\n        Javatari.userPreferences.save();\n    };\n\n    function setTurboFireSpeed(speed) {\n        turboFireSpeed = speed;\n        turboFireClocks = turboFireSpeed ? (60 / turboFirePerSecond[turboFireSpeed]) | 0 : 0;\n        turboFireFlipClock = (turboFireClocks / 2) | 0;\n        turboFireClockCount = 0;\n    }\n\n    this.getTurboFireSpeedDesc = function() {\n        return turboFireSpeed ? turboFireSpeed + \"x\" : \"OFF\";\n    };\n\n    this.getControlReport = function(control) {\n        switch (control) {\n            case jt.PeripheralControls.P1_CONTROLS_TOGGLE:\n                return { label: p1ControlsMode ? \"ON\" : \"OFF\", active: p1ControlsMode };\n            case jt.PeripheralControls.PADDLES_TOGGLE_MODE:\n                return { label: paddleMode ? \"ON\" : \"OFF\", active: paddleMode };\n            case jt.PeripheralControls.TOUCH_TOGGLE_DIR_BIG:\n                return { label: touchControls.isDirBig() ? \"ON\" : \"OFF\", active: touchControls.isDirBig() };\n            case jt.PeripheralControls.HAPTIC_FEEDBACK_TOGGLE_MODE:\n                return { label: hapticFeedbackEnabled ? \"ON\" : \"OFF\", active: !!hapticFeedbackEnabled };\n            case jt.PeripheralControls.TURBO_FIRE_TOGGLE:\n                return { label: this.getTurboFireSpeedDesc(), active: !!turboFireSpeed };\n        }\n        return { label: \"Unknown\", active: false };\n    };\n\n    this.consolePowerAndUserPauseStateUpdate = function(power, paused) {\n        touchControls.consolePowerAndUserPauseStateUpdate(power, paused);\n    };\n\n    this.keyDown = function(e) {\n        return processKeyEvent(e, true);\n    };\n\n    this.keyUp = function(e) {\n        return processKeyEvent(e, false);\n    };\n\n    this.controlsClockPulse = function() {\n        // Turbo fire\n        if (turboFireClocks) {\n            --turboFireClockCount;\n            // State flipped?\n            if (turboFireClockCount === turboFireFlipClock || turboFireClockCount === 0) {\n                var state = turboFireClockCount > 0;\n                if (turboControlState[cc.JOY0_BUTTON]) processControlState(cc.JOY0_BUTTON, state);\n                if (turboControlState[cc.JOY1_BUTTON]) processControlState(cc.JOY1_BUTTON, state);\n            }\n            if (turboFireClockCount <= 0) turboFireClockCount = turboFireClocks;        // restart cycle\n        }\n\n        gamepadControls.controlsClockPulse();\n\n        // Update paddles position as time passes\n        if (paddleMode) {\n            if (paddle0MovingRight) {\n                if (!paddle0MovingLeft) {\n                    paddle0Position -= paddle0Speed;\n                    if (paddle0Position < 0) paddle0Position = 0;\n                    processControlValue(cc.PADDLE0_POSITION, paddle0Position);\n                }\n            } else if (paddle0MovingLeft) {\n                paddle0Position += paddle0Speed;\n                if (paddle0Position > 380) paddle0Position = 380;\n                processControlValue(cc.PADDLE0_POSITION, paddle0Position);\n            }\n            if (paddle1MovingRight) {\n                if (!paddle1MovingLeft) {\n                    paddle1Position -= paddle1Speed;\n                    if (paddle1Position < 0) paddle1Position = 0;\n                    processControlValue(cc.PADDLE1_POSITION, paddle1Position);\n                }\n            } else if (paddle1MovingLeft) {\n                paddle1Position += paddle1Speed;\n                if (paddle1Position > 380) paddle1Position = 380;\n                processControlValue(cc.PADDLE1_POSITION, paddle1Position);\n            }\n        }\n    };\n\n    this.toggleHapticFeedback = function() {\n        if (hapticFeedbackCapable) {\n            hapticFeedbackEnabled = !hapticFeedbackEnabled;\n            prefs.hapticFeedback = hapticFeedbackEnabled;\n            Javatari.userPreferences.setDirty();\n        } else\n            screen.showOSD(\"Haptic Feedback not available\", true, true);\n    };\n\n    this.hapticFeedback = function() {\n        if (hapticFeedbackEnabled) navigator.vibrate(8);\n    };\n\n    this.hapticFeedbackOnTouch = function(e) {\n        if (hapticFeedbackEnabled && (e.type === \"touchstart\" || e.type === \"touchend\" || e.type === \"touchmove\")) navigator.vibrate(8);\n    };\n\n    this.cartridgeInserted = function(cartridge) {\n        if (!cartridge || PADDLES_MODE >= 0) return;\t// Does not interfere if Paddle Mode is forced\n        var usePaddles = cartridge.rom.info.p === 1;\n        if (paddleMode !== usePaddles) setPaddleMode(usePaddles, false);\n    };\n\n    function processKeyEvent(e, press) {\n        e.returnValue = false;  // IE\n        e.preventDefault();\n        e.stopPropagation();\n\n        var code = jt.DOMKeys.codeForKeyboardEvent(e);\n        self.processKey(code, press);\n\n        return false;\n    }\n\n    this.processKey = function(code, press) {\n        // Check Turbo Fire buttons\n        var control = turboKeyCodeMap[code];\n        if (control) {\n            if (press === turboControlState[control]) return;\n            if (press) turboFireClockCount = turboFireFlipClock;                    // Ensure correct timing for press/release cycle (TODO affects both controllers!)\n            turboControlState[control] = press;\n        } else {\n            // Normal controls\n            control = keyCodeMap[code];\n            if (!control) return keyForwardControls.processKey(code, press);        // Next in chain\n            if (press === keyStateMap[control]) return;\n            keyStateMap[control] = press;\n        }\n        processControlState(control, press);\n    };\n\n    this.applyPreferences = function() {\n        initKeys();\n        setTurboFireSpeed(prefs.turboFireSpeed);\n        touchControls.applyPreferences();\n        gamepadControls.applyPreferences();\n    };\n\n    function processControlState(control, press) {\n        // Paddles first\n        if (paddleMode) {\n            control = translatePaddleModeButtons(control);\n            if (tryPaddleControl(control, press)) return;\n        }\n\n        // Check for NetPlay blocked controls\n        if (room.netPlayMode === 2 && netServerLocalOnlyControls.has(control))\n            return room.showOSD(\"Function not available in NetPlay Client mode\", true, true);\n\n        // Store changes to be sent to peers\n        if (!(room.netPlayMode === 1 && netServerLocalOnlyControls.has(control)))\n            netControlsToSend.push((control << 4) | press );       // binary encoded\n\n        // Do not apply control now if Client\n        if (room.netPlayMode === 2) return;\n\n        applyControlState(control, press);\n    }\n    this.processControlState = processControlState;\n\n    function applyControlState(control, press) {\n        consoleControlsSocket.controlStateChanged(control, press);\n    }\n\n    function processControlValue(control, value) {\n        // Store changes to be sent to peers\n        netControlsToSend.push(control + (value + 10));             // always > 16000\n\n        // Do not apply control now if Client\n        if (room.netPlayMode === 2) return;\n\n        applyControlValue(control, value);\n    }\n    this.processControlValue = processControlValue;\n\n    function applyControlValue(control, value) {\n        consoleControlsSocket.controlValueChanged(control, value);\n    }\n\n    var preventIEHelp = function() {\n        window.onhelp = function () {\n            return false;\n        };\n    };\n\n    var translatePaddleModeButtons = function(control) {\n        switch (control) {\n            case cc.JOY0_BUTTON: return cc.PADDLE0_BUTTON;\n            case cc.JOY1_BUTTON: return cc.PADDLE1_BUTTON;\n            default: return control;\n        }\n    };\n\n    var tryPaddleControl = function(control, press) {\n        if (press) {\n            switch(control) {\n                case cc.JOY0_LEFT:\n                    paddle0MovingLeft = true; return true;\n                case cc.JOY0_RIGHT:\n                    paddle0MovingRight = true; return true;\n                case cc.JOY0_UP:\n                    if (paddle0Speed < 10) paddle0Speed++;\n                    screen.showOSD(\"P1 Paddle speed: \" + paddle0Speed, true);\n                    return true;\n                case cc.JOY0_DOWN:\n                    if (paddle0Speed > 1) paddle0Speed--;\n                    screen.showOSD(\"P1 Paddle speed: \" + paddle0Speed, true);\n                    return true;\n                case cc.JOY1_LEFT:\n                    paddle1MovingLeft = true; return true;\n                case cc.JOY1_RIGHT:\n                    paddle1MovingRight = true; return true;\n                case cc.JOY1_UP:\n                    if (paddle1Speed < 10) paddle1Speed++;\n                    screen.showOSD(\"P2 Paddle speed: \" + paddle1Speed, true);\n                    return true;\n                case cc.JOY1_DOWN:\n                    if (paddle1Speed > 1) paddle1Speed--;\n                    screen.showOSD(\"P2 Paddle speed: \" + paddle1Speed, true);\n                    return true;\n            }\n        } else {\n            switch(control) {\n                case cc.JOY0_LEFT:\n                    paddle0MovingLeft = false; return true;\n                case cc.JOY0_RIGHT:\n                    paddle0MovingRight = false; return true;\n                case cc.JOY1_LEFT:\n                    paddle1MovingLeft = false; return true;\n                case cc.JOY1_RIGHT:\n                    paddle1MovingRight = false; return true;\n            }\n        }\n        return false;\n    };\n\n    var setPaddleMode = function(mode, showOSD) {\n        if (paddleMode !== mode) self.releaseControllers();\n        paddleMode = mode;\n        paddle0Speed = paddle1Speed = 2;\n        paddle0Position = paddle1Position = (paddleMode ? 190 : -1);\t// -1 = disconnected, won't charge POTs\n        // Only send Paddles connection reset when not in NetPlay Client mode\n        if (room.netPlayMode !== 2) {\n            processControlValue(cc.PADDLE0_POSITION, paddle0Position);\n            processControlValue(cc.PADDLE1_POSITION, paddle1Position);\n        }\n        gamepadControls.setPaddleMode(paddleMode);\n        if (showOSD) showModeOSD();\n    };\n\n    var showModeOSD = function() {\n        screen.showOSD(\"Controllers: \" + (paddleMode ? \"Paddles\" : \"Joysticks\") + (p1ControlsMode ? \", Swapped\" : \"\"), true);\n    };\n\n    function fireModeStateUpdate() {\n        screen.controlsModeStateUpdate();\n    }\n\n    var initKeys = function() {\n        var k = jt.DOMKeys;\n\n        keyCodeMap = {};\n        keyStateMap = {};\n        turboKeyCodeMap = {};\n\n        // Fixed keys\n\n        keyCodeMap[KEY_POWER]                   = cc.POWER;\n        keyCodeMap[KEY_POWER | k.ALT]           = cc.POWER;\n\n        keyCodeMap[KEY_POWER | k.SHIFT]         = cc.POWER_FRY;\n        keyCodeMap[KEY_POWER | k.SHIFT | k.ALT] = cc.POWER_FRY;\n\n        keyCodeMap[KEY_BW]                      = cc.BLACK_WHITE;\n        keyCodeMap[KEY_BW | k.ALT]              = cc.BLACK_WHITE;\n\n        keyCodeMap[KEY_SELECT]                  = cc.SELECT;\n        keyCodeMap[KEY_SELECT | k.ALT]          = cc.SELECT;\n\n        keyCodeMap[KEY_RESET]                   = cc.RESET;\n        keyCodeMap[KEY_RESET | k.ALT]           = cc.RESET;\n\n        keyCodeMap[KEY_DIFF_0]                  = cc.DIFFICULTY0;\n        keyCodeMap[KEY_DIFF_0 | k.ALT]          = cc.DIFFICULTY0;\n\n        keyCodeMap[KEY_DIFF_1]                  = cc.DIFFICULTY1;\n        keyCodeMap[KEY_DIFF_1 | k.ALT]          = cc.DIFFICULTY1;\n\n        keyCodeMap[KEY_SPEED]                   = cc.FAST_SPEED;\n        keyCodeMap[KEY_SPEED | k.ALT]           = cc.FAST_SPEED;\n        keyCodeMap[KEY_SPEED | k.SHIFT]         = cc.SLOW_SPEED;\n        keyCodeMap[KEY_SPEED | k.SHIFT | k.ALT] = cc.SLOW_SPEED;\n\n        keyCodeMap[KEY_INC_SPEED | k.SHIFT | k.ALT]    = cc.INC_SPEED;\n        keyCodeMap[KEY_DEC_SPEED | k.SHIFT | k.ALT]    = cc.DEC_SPEED;\n        keyCodeMap[KEY_NORMAL_SPEED | k.SHIFT | k.ALT] = cc.NORMAL_SPEED;\n        keyCodeMap[KEY_MIN_SPEED | k.SHIFT | k.ALT]    = cc.MIN_SPEED;\n\n        keyCodeMap[KEY_PAUSE | k.ALT]           = cc.PAUSE;\n        keyCodeMap[KEY_PAUSE | k.SHIFT | k.ALT] = cc.PAUSE_AUDIO_ON;\n        keyCodeMap[KEY_FRAME | k.ALT]           = cc.FRAME;\n        keyCodeMap[KEY_FRAMEa | k.ALT]          = cc.FRAME;\n        keyCodeMap[KEY_TRACE | k.ALT]           = cc.TRACE;\n        keyCodeMap[KEY_INFO | k.ALT]            = cc.SHOW_INFO;\n        keyCodeMap[KEY_DEBUG | k.ALT]           = cc.DEBUG;\n        keyCodeMap[KEY_NO_COLLISIONS | k.ALT]   = cc.NO_COLLISIONS;\n        keyCodeMap[KEY_VIDEO_STANDARD | k.ALT]  = cc.VIDEO_STANDARD;\n        keyCodeMap[KEY_VIDEO_STANDARD2 | k.ALT] = cc.VIDEO_STANDARD;\n        keyCodeMap[KEY_VSYNCH | k.ALT]          = cc.VSYNCH;\n\n        keyCodeMap[KEY_STATE_0   | k.CONTROL]         = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_0a  | k.CONTROL]         = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_0   | k.CONTROL | k.ALT] = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_0a  | k.CONTROL | k.ALT] = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_1   | k.CONTROL]         = cc.SAVE_STATE_1;\n        keyCodeMap[KEY_STATE_1   | k.CONTROL | k.ALT] = cc.SAVE_STATE_1;\n        keyCodeMap[KEY_STATE_2   | k.CONTROL]         = cc.SAVE_STATE_2;\n        keyCodeMap[KEY_STATE_2   | k.CONTROL | k.ALT] = cc.SAVE_STATE_2;\n        keyCodeMap[KEY_STATE_3   | k.CONTROL]         = cc.SAVE_STATE_3;\n        keyCodeMap[KEY_STATE_3   | k.CONTROL | k.ALT] = cc.SAVE_STATE_3;\n        keyCodeMap[KEY_STATE_4   | k.CONTROL]         = cc.SAVE_STATE_4;\n        keyCodeMap[KEY_STATE_4   | k.CONTROL | k.ALT] = cc.SAVE_STATE_4;\n        keyCodeMap[KEY_STATE_5   | k.CONTROL]         = cc.SAVE_STATE_5;\n        keyCodeMap[KEY_STATE_5   | k.CONTROL | k.ALT] = cc.SAVE_STATE_5;\n        keyCodeMap[KEY_STATE_6   | k.CONTROL]         = cc.SAVE_STATE_6;\n        keyCodeMap[KEY_STATE_6   | k.CONTROL | k.ALT] = cc.SAVE_STATE_6;\n        keyCodeMap[KEY_STATE_7   | k.CONTROL]         = cc.SAVE_STATE_7;\n        keyCodeMap[KEY_STATE_7   | k.CONTROL | k.ALT] = cc.SAVE_STATE_7;\n        keyCodeMap[KEY_STATE_8   | k.CONTROL]         = cc.SAVE_STATE_8;\n        keyCodeMap[KEY_STATE_8   | k.CONTROL | k.ALT] = cc.SAVE_STATE_8;\n        keyCodeMap[KEY_STATE_9   | k.CONTROL]         = cc.SAVE_STATE_9;\n        keyCodeMap[KEY_STATE_9   | k.CONTROL | k.ALT] = cc.SAVE_STATE_9;\n        keyCodeMap[KEY_STATE_10  | k.CONTROL]         = cc.SAVE_STATE_10;\n        keyCodeMap[KEY_STATE_10  | k.CONTROL | k.ALT] = cc.SAVE_STATE_10;\n        keyCodeMap[KEY_STATE_11  | k.CONTROL]         = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_11a | k.CONTROL]         = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_11  | k.CONTROL | k.ALT] = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_11a | k.CONTROL | k.ALT] = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_12  | k.CONTROL]         = cc.SAVE_STATE_12;\n        keyCodeMap[KEY_STATE_12a | k.CONTROL]         = cc.SAVE_STATE_12;\n        keyCodeMap[KEY_STATE_12  | k.CONTROL | k.ALT] = cc.SAVE_STATE_12;\n        keyCodeMap[KEY_STATE_12a | k.CONTROL | k.ALT] = cc.SAVE_STATE_12;\n\n        keyCodeMap[KEY_STATE_0   | k.ALT] = cc.LOAD_STATE_0;\n        keyCodeMap[KEY_STATE_0a  | k.ALT] = cc.LOAD_STATE_0;\n        keyCodeMap[KEY_STATE_1   | k.ALT] = cc.LOAD_STATE_1;\n        keyCodeMap[KEY_STATE_2   | k.ALT] = cc.LOAD_STATE_2;\n        keyCodeMap[KEY_STATE_3   | k.ALT] = cc.LOAD_STATE_3;\n        keyCodeMap[KEY_STATE_4   | k.ALT] = cc.LOAD_STATE_4;\n        keyCodeMap[KEY_STATE_5   | k.ALT] = cc.LOAD_STATE_5;\n        keyCodeMap[KEY_STATE_6   | k.ALT] = cc.LOAD_STATE_6;\n        keyCodeMap[KEY_STATE_7   | k.ALT] = cc.LOAD_STATE_7;\n        keyCodeMap[KEY_STATE_8   | k.ALT] = cc.LOAD_STATE_8;\n        keyCodeMap[KEY_STATE_9   | k.ALT] = cc.LOAD_STATE_9;\n        keyCodeMap[KEY_STATE_10  | k.ALT] = cc.LOAD_STATE_10;\n        keyCodeMap[KEY_STATE_11  | k.ALT] = cc.LOAD_STATE_11;\n        keyCodeMap[KEY_STATE_11a | k.ALT] = cc.LOAD_STATE_11;\n        keyCodeMap[KEY_STATE_12  | k.ALT] = cc.LOAD_STATE_12;\n        keyCodeMap[KEY_STATE_12a | k.ALT] = cc.LOAD_STATE_12;\n\n        // Alternate Savetates controls with SHIFT pressed\n\n        keyCodeMap[KEY_STATE_0   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_0a  | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_0   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_0a  | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_0;\n        keyCodeMap[KEY_STATE_1   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_1;\n        keyCodeMap[KEY_STATE_1   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_1;\n        keyCodeMap[KEY_STATE_2   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_2;\n        keyCodeMap[KEY_STATE_2   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_2;\n        keyCodeMap[KEY_STATE_3   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_3;\n        keyCodeMap[KEY_STATE_3   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_3;\n        keyCodeMap[KEY_STATE_4   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_4;\n        keyCodeMap[KEY_STATE_4   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_4;\n        keyCodeMap[KEY_STATE_5   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_5;\n        keyCodeMap[KEY_STATE_5   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_5;\n        keyCodeMap[KEY_STATE_6   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_6;\n        keyCodeMap[KEY_STATE_6   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_6;\n        keyCodeMap[KEY_STATE_7   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_7;\n        keyCodeMap[KEY_STATE_7   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_7;\n        keyCodeMap[KEY_STATE_8   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_8;\n        keyCodeMap[KEY_STATE_8   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_8;\n        keyCodeMap[KEY_STATE_9   | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_9;\n        keyCodeMap[KEY_STATE_9   | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_9;\n        keyCodeMap[KEY_STATE_10  | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_10;\n        keyCodeMap[KEY_STATE_10  | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_10;\n        keyCodeMap[KEY_STATE_11  | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_11a | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_11  | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_11a | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_11;\n        keyCodeMap[KEY_STATE_12  | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_12;\n        keyCodeMap[KEY_STATE_12a | k.SHIFT | k.CONTROL]         = cc.SAVE_STATE_12;\n        keyCodeMap[KEY_STATE_12  | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_12;\n        keyCodeMap[KEY_STATE_12a | k.SHIFT | k.CONTROL | k.ALT] = cc.SAVE_STATE_12;\n\n        keyCodeMap[KEY_STATE_0   | k.SHIFT | k.ALT] = cc.LOAD_STATE_0;\n        keyCodeMap[KEY_STATE_0a  | k.SHIFT | k.ALT] = cc.LOAD_STATE_0;\n        keyCodeMap[KEY_STATE_1   | k.SHIFT | k.ALT] = cc.LOAD_STATE_1;\n        keyCodeMap[KEY_STATE_2   | k.SHIFT | k.ALT] = cc.LOAD_STATE_2;\n        keyCodeMap[KEY_STATE_3   | k.SHIFT | k.ALT] = cc.LOAD_STATE_3;\n        keyCodeMap[KEY_STATE_4   | k.SHIFT | k.ALT] = cc.LOAD_STATE_4;\n        keyCodeMap[KEY_STATE_5   | k.SHIFT | k.ALT] = cc.LOAD_STATE_5;\n        keyCodeMap[KEY_STATE_6   | k.SHIFT | k.ALT] = cc.LOAD_STATE_6;\n        keyCodeMap[KEY_STATE_7   | k.SHIFT | k.ALT] = cc.LOAD_STATE_7;\n        keyCodeMap[KEY_STATE_8   | k.SHIFT | k.ALT] = cc.LOAD_STATE_8;\n        keyCodeMap[KEY_STATE_9   | k.SHIFT | k.ALT] = cc.LOAD_STATE_9;\n        keyCodeMap[KEY_STATE_10  | k.SHIFT | k.ALT] = cc.LOAD_STATE_10;\n        keyCodeMap[KEY_STATE_11  | k.SHIFT | k.ALT] = cc.LOAD_STATE_11;\n        keyCodeMap[KEY_STATE_11a | k.SHIFT | k.ALT] = cc.LOAD_STATE_11;\n        keyCodeMap[KEY_STATE_12  | k.SHIFT | k.ALT] = cc.LOAD_STATE_12;\n        keyCodeMap[KEY_STATE_12a | k.SHIFT | k.ALT] = cc.LOAD_STATE_12;\n\n\n        // Configurable in preferences\n\n        var a = p1ControlsMode ? 1 : 0;\n        var b = p1ControlsMode ? 0 : 1;\n\n        keyCodeMap[prefs.joystickKeys[a].left.c] = cc.JOY0_LEFT;\n        keyCodeMap[prefs.joystickKeys[a].up.c] = cc.JOY0_UP;\n        keyCodeMap[prefs.joystickKeys[a].right.c] = cc.JOY0_RIGHT;\n        keyCodeMap[prefs.joystickKeys[a].down.c] = cc.JOY0_DOWN;\n        keyCodeMap[prefs.joystickKeys[a].button.c] = cc.JOY0_BUTTON;\n        keyCodeMap[prefs.joystickKeys[b].left.c] = cc.JOY1_LEFT;\n        keyCodeMap[prefs.joystickKeys[b].up.c] = cc.JOY1_UP;\n        keyCodeMap[prefs.joystickKeys[b].right.c] = cc.JOY1_RIGHT;\n        keyCodeMap[prefs.joystickKeys[b].down.c] = cc.JOY1_DOWN;\n        keyCodeMap[prefs.joystickKeys[b].button.c] = cc.JOY1_BUTTON;\n\n        turboKeyCodeMap[prefs.joystickKeys[a].buttonT.c] = cc.JOY0_BUTTON;\n        turboKeyCodeMap[prefs.joystickKeys[b].buttonT.c] = cc.JOY1_BUTTON;\n    };\n\n\n    // NetPlay  -------------------------------------------\n\n    this.netGetControlsToSend = function() {\n        return netControlsToSend.length ? netControlsToSend : undefined;\n    };\n\n    this.netClearControlsToSend = function() {\n        netControlsToSend.length = 0;\n    };\n\n    this.netServerProcessControlsChanges = function(changes) {\n        for (var i = 0, len = changes.length; i < len; ++i) {\n            var change = changes[i];\n            if (change < 16000) {\n                // Store changes to be sent to Clients?\n                if (!netServerLocalOnlyControls.has(change >> 4)) netControlsToSend.push(change);\n                applyControlState(change >> 4, change & 0x01);       // binary encoded\n            } else\n                applyControlValue(change & ~0x3fff, (change & 0x3fff) - 10);\n        }\n    };\n\n    this.netClientApplyControlsChanges = function(changes) {\n        for (var i = 0, len = changes.length; i < len; ++i) {\n            var change = changes[i];\n            if (change < 16000)\n                applyControlState(change >> 4, change & 0x01);       // binary encoded\n            else\n                applyControlValue(change & ~0x3fff, (change & 0x3fff) - 10);\n        }\n    };\n\n\n    var cc = jt.ConsoleControls;\n\n    var consoleControlsSocket;\n    var screen;\n\n    var keyCodeMap;\n    var keyStateMap;\n    var turboKeyCodeMap;\n\n    var turboControlState = {};\n\n    var prefs = Javatari.userPreferences.current;\n\n    var p1ControlsMode = false;\n    var paddleMode = false;\n\n    var hapticFeedbackCapable = !!navigator.vibrate;\n    var hapticFeedbackEnabled = hapticFeedbackCapable && !!prefs.hapticFeedback;\n\n    var turboFireSpeed = 0, turboFireClocks = 0, turboFireClockCount = 0, turboFireFlipClock = 0;\n    var turboFirePerSecond = [ 0, 1, 2, 2.4, 3, 4, 5, 6, 7.5, 10, 12 ];\n\n    var paddle0Position = 0;\t\t\t// 380 = LEFT, 190 = MIDDLE, 0 = RIGHT\n    var paddle0Speed = 3;\t\t\t\t// 1 to 10\n    var paddle0MovingLeft = false;\n    var paddle0MovingRight = false;\n    var paddle1Position = 0;\n    var paddle1Speed = 3;\n    var paddle1MovingLeft = false;\n    var paddle1MovingRight = false;\n\n    var gamepadControls;\n    var touchControls;\n\n    var netControlsToSend = new Array(100); netControlsToSend.length = 0;     // pre allocate empty Array\n\n    var PADDLES_MODE = Javatari.PADDLES_MODE;\n\n\n    // Default Key Values\n\n    var KEY_POWER            = jt.DOMKeys.VK_F1.c;\n    var KEY_BW               = jt.DOMKeys.VK_F2.c;\n    var KEY_SELECT           = jt.DOMKeys.VK_F11.c;\n    var KEY_RESET            = jt.DOMKeys.VK_F12.c;\n\n    var KEY_DIFF_0           = jt.DOMKeys.VK_F4.c;\n    var KEY_DIFF_1           = jt.DOMKeys.VK_F9.c;\n\n    var KEY_SPEED            = jt.DOMKeys.VK_TAB.c;\n\n    var KEY_INC_SPEED        = jt.DOMKeys.VK_UP.c;\n    var KEY_DEC_SPEED        = jt.DOMKeys.VK_DOWN.c;\n    var KEY_NORMAL_SPEED     = jt.DOMKeys.VK_RIGHT.c;\n    var KEY_MIN_SPEED        = jt.DOMKeys.VK_LEFT.c;\n\n    var KEY_PAUSE            = jt.DOMKeys.VK_P.c;\n    var KEY_FRAME            = jt.DOMKeys.VK_O.c;\n    var KEY_FRAMEa           = jt.DOMKeys.VK_F.c;\n\n    var KEY_DEBUG            = jt.DOMKeys.VK_D.c;\n    var KEY_TRACE            = jt.DOMKeys.VK_VOID;\n    var KEY_INFO             = jt.DOMKeys.VK_I.c;\n    var KEY_NO_COLLISIONS    = jt.DOMKeys.VK_C.c;\n    var KEY_VIDEO_STANDARD   = jt.DOMKeys.VK_V.c;\n    var KEY_VIDEO_STANDARD2  = jt.DOMKeys.VK_Q.c;\n    var KEY_VSYNCH           = jt.DOMKeys.VK_W.c;\n\n    var KEY_STATE_0          = jt.DOMKeys.VK_QUOTE.c;\n    var KEY_STATE_0a         = jt.DOMKeys.VK_BACKQUOTE.c;\n    var KEY_STATE_1          = jt.DOMKeys.VK_1.c;\n    var KEY_STATE_2          = jt.DOMKeys.VK_2.c;\n    var KEY_STATE_3          = jt.DOMKeys.VK_3.c;\n    var KEY_STATE_4          = jt.DOMKeys.VK_4.c;\n    var KEY_STATE_5          = jt.DOMKeys.VK_5.c;\n    var KEY_STATE_6          = jt.DOMKeys.VK_6.c;\n    var KEY_STATE_7          = jt.DOMKeys.VK_7.c;\n    var KEY_STATE_8          = jt.DOMKeys.VK_8.c;\n    var KEY_STATE_9          = jt.DOMKeys.VK_9.c;\n    var KEY_STATE_10         = jt.DOMKeys.VK_0.c;\n    var KEY_STATE_11         = jt.DOMKeys.VK_MINUS.c;\n    var KEY_STATE_11a        = jt.DOMKeys.VK_FF_MINUS.c;\n    var KEY_STATE_12         = jt.DOMKeys.VK_EQUALS.c;\n    var KEY_STATE_12a        = jt.DOMKeys.VK_FF_EQUALS.c;\n\n    var netServerLocalOnlyControls = new Set([\n        cc.SAVE_STATE_0, cc.SAVE_STATE_1, cc.SAVE_STATE_2, cc.SAVE_STATE_3, cc.SAVE_STATE_4, cc.SAVE_STATE_5, cc.SAVE_STATE_6,\n        cc.SAVE_STATE_7, cc.SAVE_STATE_8, cc.SAVE_STATE_9, cc.SAVE_STATE_10, cc.SAVE_STATE_11, cc.SAVE_STATE_12, cc.SAVE_STATE_FILE,\n        cc.LOAD_STATE_0, cc.LOAD_STATE_1, cc.LOAD_STATE_2, cc.LOAD_STATE_3, cc.LOAD_STATE_4, cc.LOAD_STATE_5, cc.LOAD_STATE_6,\n        cc.LOAD_STATE_7, cc.LOAD_STATE_8, cc.LOAD_STATE_9, cc.LOAD_STATE_10, cc.LOAD_STATE_11, cc.LOAD_STATE_12,\n        cc.POWER_FRY, cc.VSYNCH, cc.TRACE, cc.CARTRIDGE_FORMAT\n    ]);\n\n\n    init();\n\n    jt.DOMConsoleControls.hapticFeedback = this.hapticFeedback;\n    jt.DOMConsoleControls.hapticFeedbackOnTouch = this.hapticFeedbackOnTouch;\n\n};\n"
  },
  {
    "path": "src/main/room/controls/DOMKeys.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// General, immutable info about host keys on different browsers and keyboard languages/layouts\n\njt.DOMKeys = {};\n\njt.DOMKeys.MOD_SHIFT = 16;\njt.DOMKeys.LOC_SHIFT = 24;\n\njt.DOMKeys.SHIFT =   0x10000;\njt.DOMKeys.CONTROL = 0x20000;\njt.DOMKeys.ALT =     0x40000;\njt.DOMKeys.META =    0x80000;\n\njt.DOMKeys.LOCNONE =  0x0000000;\njt.DOMKeys.LOCLEFT =  0x1000000;\njt.DOMKeys.LOCRIGHT = 0x2000000;\njt.DOMKeys.LOCNUM =   0x3000000;\n\njt.DOMKeys.IGNORE_ALL_MODIFIERS_MASK = ~(jt.DOMKeys.SHIFT | jt.DOMKeys.CONTROL | jt.DOMKeys.ALT | jt.DOMKeys.META);\n\n\n(function(k, left, right, num) {\n\n    // Common keys (US)\n\n    k.VK_F1 = {c: 112, n: \"F1\" };\n    k.VK_F2 = {c: 113, n: \"F2\" };\n    k.VK_F3 = {c: 114, n: \"F3\" };\n    k.VK_F4 = {c: 115, n: \"F4\" };\n    k.VK_F5 = {c: 116, n: \"F5\" };\n    k.VK_F6 = {c: 117, n: \"F6\" };\n    k.VK_F7 = {c: 118, n: \"F7\" };\n    k.VK_F8 = {c: 119, n: \"F8\" };\n    k.VK_F9 = {c: 120, n: \"F9\" };\n    k.VK_F10 = {c: 121, n: \"F10\" };\n    k.VK_F11 = {c: 122, n: \"F11\" };\n    k.VK_F12 = {c: 123, n: \"F12\" };\n\n    k.VK_1 = {c: 49, n: \"1\" };\n    k.VK_2 = {c: 50, n: \"2\" };\n    k.VK_3 = {c: 51, n: \"3\" };\n    k.VK_4 = {c: 52, n: \"4\" };\n    k.VK_5 = {c: 53, n: \"5\" };\n    k.VK_6 = {c: 54, n: \"6\" };\n    k.VK_7 = {c: 55, n: \"7\" };\n    k.VK_8 = {c: 56, n: \"8\" };\n    k.VK_9 = {c: 57, n: \"9\" };\n    k.VK_0 = {c: 48, n: \"0\" };\n\n    k.VK_Q = {c: 81, n: \"Q\" };\n    k.VK_W = {c: 87, n: \"W\" };\n    k.VK_E = {c: 69, n: \"E\" };\n    k.VK_R = {c: 82, n: \"R\" };\n    k.VK_T = {c: 84, n: \"T\" };\n    k.VK_Y = {c: 89, n: \"Y\" };\n    k.VK_U = {c: 85, n: \"U\" };\n    k.VK_I = {c: 73, n: \"I\" };\n    k.VK_O = {c: 79, n: \"O\" };\n    k.VK_P = {c: 80, n: \"P\" };\n    k.VK_A = {c: 65, n: \"A\" };\n    k.VK_S = {c: 83, n: \"S\" };\n    k.VK_D = {c: 68, n: \"D\" };\n    k.VK_F = {c: 70, n: \"F\" };\n    k.VK_G = {c: 71, n: \"G\" };\n    k.VK_H = {c: 72, n: \"H\" };\n    k.VK_J = {c: 74, n: \"J\" };\n    k.VK_K = {c: 75, n: \"K\" };\n    k.VK_L = {c: 76, n: \"L\" };\n    k.VK_Z = {c: 90, n: \"Z\" };\n    k.VK_X = {c: 88, n: \"X\" };\n    k.VK_C = {c: 67, n: \"C\" };\n    k.VK_V = {c: 86, n: \"V\" };\n    k.VK_B = {c: 66, n: \"B\" };\n    k.VK_N = {c: 78, n: \"N\" };\n    k.VK_M = {c: 77, n: \"M\" };\n\n    k.VK_ESCAPE = {c: 27, n: \"Esc\" };\n    k.VK_ENTER = {c: 13, n: \"Enter\" };\n    k.VK_SPACE = {c: 32, n: \"Space\" };\n    k.VK_TAB = {c: 9, n: \"Tab\" };\n    k.VK_BACKSPACE = {c: 8, n: \"BackSpc\" };\n\n    k.VK_CONTEXT = {c: 93, n: \"Context\" };\n\n    k.VK_LSHIFT = {c: 16 | left, n: \"L-Shift\" };\n    k.VK_LCONTROL = {c: 17 | left, n: \"L-Control\" };\n    k.VK_LALT = {c: 18 | left, n: \"L-Alt\" };\n    k.VK_LMETA = {c: 91 | left, n: \"L-Meta\" };\n\n    k.VK_RSHIFT = {c: 16 | right, n: \"R-Shift\" };\n    k.VK_RCONTROL = {c: 17 | right, n: \"R-Control\" };\n    k.VK_RALT = {c: 18 | right, n: \"R-Alt\" };\n    k.VK_RMETA = {c: 91 | right, n: \"R-Meta\" };\n\n    k.VK_CAPS_LOCK = {c: 20, n: \"CapsLock\" };\n    k.VK_PRINT_SCREEN = {c: 44, n: \"PrtScr\" };\n    k.VK_SCROLL_LOCK = {c: 145, n: \"ScrLck\" };\n    k.VK_PAUSE = {c: 19, n: \"Pause\" };\n    k.VK_BREAK = {c: 3, n: \"Break\" };\n\n    k.VK_INSERT = {c: 45, n: \"Ins\" };\n    k.VK_DELETE = {c: 46, n: \"Del\" };\n    k.VK_HOME = {c: 36, n: \"Home\" };\n    k.VK_END = {c: 35, n: \"End\" };\n    k.VK_PAGE_UP = {c: 33, n: \"PgUp\" };\n    k.VK_PAGE_DOWN = {c: 34, n: \"PgDown\" };\n\n    k.VK_NUM_INSERT = {c: 45 | num, n: \"Num Ins\" };\n    k.VK_NUM_DELETE = {c: 46 | num, n: \"Num Del\" };\n    k.VK_NUM_HOME = {c: 36 | num, n: \"Num Home\" };\n    k.VK_NUM_END = {c: 35 | num, n: \"Num End\" };\n    k.VK_NUM_PAGE_UP = {c: 33 | num, n: \"Num PgUp\" };\n    k.VK_NUM_PAGE_DOWN = {c: 34 | num, n: \"Num PgDown\" };\n\n    k.VK_UP = {c: 38, n: \"Up\" };\n    k.VK_DOWN = {c: 40, n: \"Down\" };\n    k.VK_LEFT = {c: 37, n: \"Left\" };\n    k.VK_RIGHT = {c: 39, n: \"Right\" };\n\n    k.VK_NUM_UP = {c: 38 | num, n: \"Num Up\" };\n    k.VK_NUM_DOWN = {c: 40 | num, n: \"Num Down\" };\n    k.VK_NUM_LEFT = {c: 37 | num, n: \"Num Left\" };\n    k.VK_NUM_RIGHT = {c: 39 | num, n: \"Num Right\" };\n\n    k.VK_NUMLOCK = {c: 144, n: \"NumLock\" };\n    k.VK_NUM_COMMA = {c: 110 | num, n: \"Num ,\" };\n    k.VK_NUM_DIVIDE = {c: 111 | num, n: \"Num /\" };\n    k.VK_NUM_MULTIPLY = {c: 106 | num, n: \"Num *\" };\n    k.VK_NUM_MINUS = {c: 109 | num, n: \"Num -\" };\n    k.VK_NUM_PLUS = {c: 107 | num, n: \"Num +\" };\n    k.VK_NUM_PERIOD = {c: 194 | num, n: \"Num .\" };\n    k.VK_NUM_0 = {c: 96 | num, n: \"Num 0\" };\n    k.VK_NUM_1 = {c: 97 | num, n: \"Num 1\" };\n    k.VK_NUM_2 = {c: 98 | num, n: \"Num 2\" };\n    k.VK_NUM_3 = {c: 99 | num, n: \"Num 3\" };\n    k.VK_NUM_4 = {c: 100 | num, n: \"Num 4\" };\n    k.VK_NUM_5 = {c: 101 | num, n: \"Num 5\" };\n    k.VK_NUM_6 = {c: 102 | num, n: \"Num 6\" };\n    k.VK_NUM_7 = {c: 103 | num, n: \"Num 7\" };\n    k.VK_NUM_8 = {c: 104 | num, n: \"Num 8\" };\n    k.VK_NUM_9 = {c: 105 | num, n: \"Num 9\" };\n    k.VK_NUM_CLEAR = {c: 12 | num, n: \"Num Clear\" };\n    k.VK_NUM_ENTER = {c: 13 | num, n: \"Num Enter\" };\n\n    k.VK_QUOTE = {c: 222, n: \"'\" };\n    k.VK_BACKQUOTE = {c: 192, n: \"`\" };\n    k.VK_MINUS = {c: 189, n: \"-\" };\n    k.VK_EQUALS = {c: 187, n: \"=\" };\n    k.VK_OPEN_BRACKET = {c: 219, n: \"[\" };\n    k.VK_CLOSE_BRACKET = {c: 221, n: \"]\" };\n    k.VK_COMMA = {c: 188, n: \",\" };\n    k.VK_PERIOD = {c: 190, n: \".\" };\n    k.VK_SEMICOLON = {c: 186, n: \";\" };\n    k.VK_SLASH = {c: 191, n: \"/\" };\n    k.VK_BACKSLASH = {c: 220, n: \"\\\\\" };\n\n    k.VK_ALTERNATE_ESC = { c: k.VK_F1.c | jt.DOMKeys.ALT, n: [ \"Alt\", \"F1\" ] };\n\n    // Alternate codes for FF\n    k.VK_FF_MINUS = {c: 173, n: \"-\" };\n    k.VK_FF_EQUALS = {c: 61, n: \"=\" };\n    k.VK_FF_SEMICOLON = {c: 59, n: \";\" };\n\n    // BR alternate codes\n    k.VK_BR_QUOTE = {c: 192, n: \"'\" };\n    k.VK_BR_OPEN_BRACKET = {c: 221, n: \"[\" };\n    k.VK_BR_CLOSE_BRACKET = {c: 220, n: \"]\" };\n    k.VK_BR_SEMICOLON = {c: 191, n: \";\" };\n    k.VK_BR_SLASH = {c: 193, n: \"/\" };\n    k.VK_BR_BACKSLASH = {c: 226, n: \"\\\\\" };\n\n    // BR additional keys\n    k.VK_BR_CEDILLA = {c: 186, n: \"Ç\" };\n    k.VK_BR_TILDE = {c: 222, n: \"~\" };\n    k.VK_BR_ACUTE = {c: 219, n: \"´\" };\n\n    k.VK_FF_BR_TILDE = {c: 176, n: \"~\" };\n    //k.VK_FF_BR_CEDILLA = {c: 0, n: \"Ç\" };\n\n    k.VK_VOID = {c: -1, n: \"\"}\n\n})(jt.DOMKeys, jt.DOMKeys.LOCLEFT, jt.DOMKeys.LOCRIGHT, jt.DOMKeys.LOCNUM);\n\njt.DOMKeys.forcedNames = {\n    27:  \"Esc\",\n    13:  \"Enter\",\n    32:  \"Space\",\n    9:   \"Tab\",\n    8:   \"BkSpc\",\n    16:  \"Shift\",\n    17:  \"Ctrl\",\n    18:  \"Alt\",\n    91:  \"Meta\",\n    93:  \"Context\",\n    20:  \"Caps\",\n    44:  \"PrtScr\",\n    145: \"ScrLck\",\n    19:  \"Pause\",\n    3:   \"Break\",\n    45:  \"Ins\",\n    46:  \"Del\",\n    36:  \"Home\",\n    35:  \"End\",\n    33:  \"PgUp\",\n    34:  \"PgDown\",\n    38:  \"Up\",\n    40:  \"Down\",\n    37:  \"Left\",\n    39:  \"Right\"\n};\n\njt.DOMKeys.isModifierKeyCode = function(keyCode) {\n    return keyCode === 16 || keyCode === 17 || keyCode === 18 || keyCode === 91;\n};\n\njt.DOMKeys.codeForKeyboardEvent = function(e) {\n    var code = e.keyCode;\n\n    // Ignore modifiers for modifier keys SHIFT, CONTROL, ALT, META\n    if (this.isModifierKeyCode(code))\n        return (code & this.IGNORE_ALL_MODIFIERS_MASK) | (e.location << this.LOC_SHIFT);\n\n    return code\n        | (e.location << this.LOC_SHIFT)\n        | (e.shiftKey ? this.SHIFT : 0)\n        | (e.ctrlKey ? this.CONTROL : 0)\n        | (e.altKey  ? this.ALT : 0)\n        | (e.metaKey ? this.META : 0);\n};\n\njt.DOMKeys.nameForKeyboardEvent = function(e) {\n    var keyCode = e.keyCode;\n    var name = this.forcedNames[keyCode] || e.key;\n    var nameUp = name && name.toUpperCase();\n    if (!nameUp || nameUp === \"UNIDENTIFIED\" || nameUp === \"UNDEFINED\" || nameUp === \"UNKNOWN\") name = \"#\" + keyCode;\n    else if (nameUp === \"DEAD\") name = \"Dead#\" + keyCode;\n\n    if (name.length === 1) name = name.toUpperCase();                           // For normal letters\n    else if (name.length > 12) name = name.substr(0, 12);                       // Limit size\n\n    // Add location info\n    switch(e.location) {\n        case 1: name = \"L-\" + name; break;\n        case 2: name = \"R-\" + name; break;\n        case 3: name = \"Num \" + name;\n    }\n\n    if (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey) {\n        name = [ name ];\n        // Add modifiers info\n        if (e.metaKey) name.unshift(\"Meta\");\n        if (e.altKey) name.unshift(\"Alt\");\n        if (e.ctrlKey) name.unshift(\"Ctrl\");\n        if (e.shiftKey) name.unshift(\"Shift\");\n    }\n\n    return name;\n};\n\njt.DOMKeys.nameForKeyboardEventSingle = function(e) {\n    var keyCode = e.keyCode;\n    var name = this.forcedNames[keyCode] || e.key;\n    var nameUp = name && name.toUpperCase();\n    if (!nameUp || nameUp === \"UNIDENTIFIED\" || nameUp === \"UNDEFINED\" || nameUp === \"UNKNOWN\") name = \"#\" + keyCode;\n    else if (nameUp === \"DEAD\") name = \"Dead#\" + keyCode;\n\n    if (name.length === 1) name = name.toUpperCase();                           // For normal letters\n    else if (name.length > 12) name = name.substr(0, 12);                       // Limit size\n\n    // Add location info\n    switch(e.location) {\n        case 1: name = \"L-\" + name; break;\n        case 2: name = \"R-\" + name; break;\n        case 3: name = \"Num \" + name;\n    }\n\n    return name;\n};\n"
  },
  {
    "path": "src/main/room/controls/DOMPeripheralControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.DOMPeripheralControls = function(room) {\n\"use strict\";\n\n    var self = this;\n\n    function init() {\n        initKeys();\n    }\n\n    this.connect = function(pCartridgeSocket) {\n        cartridgeSocket = pCartridgeSocket;\n    };\n\n    this.connectPeripherals = function(pScreen, pSpeaker, pConsoleControls, pFileLoader) {\n        screen = pScreen;\n        speaker = pSpeaker;\n        monitor = pScreen.getMonitor();\n        consoleControls = pConsoleControls;\n        fileLoader = pFileLoader;\n    };\n\n    this.getControlReport = function(control) {\n        switch (control) {\n            case pc.PADDLES_TOGGLE_MODE:\n            case pc.P1_CONTROLS_TOGGLE:\n            case pc.TURBO_FIRE_TOGGLE:\n            case pc.TOUCH_TOGGLE_DIR_BIG:\n            case pc.HAPTIC_FEEDBACK_TOGGLE_MODE:\n                return consoleControls.getControlReport(control);\n            case pc.SCREEN_CRT_FILTER:\n                return screen.getControlReport(control);\n            case pc.SPEAKER_BUFFER_TOGGLE:\n                return speaker.getControlReport(control);\n        }\n        return { label: \"Unknown\", active: false };\n    };\n\n    this.processKey = function(code, press) {\n        if (!press) return false;\n        var control = keyCodeMap[code] || keyCodeMap[code & EXCLUDE_SHIFT_MASK];\n        if (!control) return false;\n\n        self.controlActivated(control, !!(code & INCLUDE_SHIFT_MASK), false);     // Never secPort\n        return true;\n    };\n\n    this.controlActivated = function(control, altPower, secPort) {                // Never secPort\n        // Check for NetPlay blocked controls\n        if (room.netPlayMode === 2 && netClientDisabledControls.has(control))\n                return room.showOSD(\"Function not available in NetPlay Client mode\", true, true);\n\n        // All controls are Press-only and repeatable\n        switch(control) {\n            case pc.CONSOLE_POWER_TOGGLE:\n                consoleControls.processControlState(jt.ConsoleControls.POWER, true);\n                break;\n            case pc.CONSOLE_POWER_FRY:\n                consoleControls.processControlState(jt.ConsoleControls.POWER_FRY, true);\n                break;\n            case pc.CONSOLE_LOAD_STATE_FILE:\n                fileLoader.openFileChooserDialog(OPEN_TYPE.STATE, false, false, false);\n                break;\n            case pc.CONSOLE_SAVE_STATE_FILE:\n                consoleControls.processControlState(jt.ConsoleControls.SAVE_STATE_FILE, true);\n                break;\n            case pc.CONSOLE_LOAD_STATE_MENU:\n                screen.openSaveStateDialog(false);\n                break;\n            case pc.CONSOLE_SAVE_STATE_MENU:\n                screen.openSaveStateDialog(true);\n                break;\n            case pc.CARTRIDGE_LOAD_RECENT:\n                if (!mediaChangeDisabledWarning()) screen.openCartridgeChooserDialog(false, altPower, secPort);\n                break;\n            case pc.CARTRIDGE_LOAD_FILE:\n                if (!mediaChangeDisabledWarning()) fileLoader.openFileChooserDialog(OPEN_TYPE.ROM, altPower, secPort, false);\n                break;\n            case pc.CARTRIDGE_LOAD_URL:\n                if (!mediaChangeDisabledWarning()) fileLoader.openURLChooserDialog(OPEN_TYPE.ROM, altPower, secPort);\n                break;\n            case pc.CARTRIDGE_REMOVE:\n                if (!mediaChangeDisabledWarning()) cartridgeSocket.insert(null, false);\n                break;\n            case pc.CARTRIDGE_LOAD_DATA_FILE:\n                //if (cartridgeSocket.dataOperationNotSupportedMessage(secPort ? 1 : 0, false, false)) break;\n                //fileLoader.openFileChooserDialog(OPEN_TYPE.CART_DATA, altPower, secPort, false);\n                break;\n            case pc.CARTRIDGE_SAVE_DATA_FILE:\n                //cartridgeSocket.saveCartridgeDataFile(secPort ? 1 : 0);\n                break;\n            case pc.CARTRIDGE_CHOOSE_FORMAT:\n                if (!mediaChangeDisabledWarning()) screen.openCartridgeFormatDialog(altPower);\n                break;\n            case pc.AUTO_LOAD_FILE:\n                if (!mediaChangeDisabledWarning()) fileLoader.openFileChooserDialog(OPEN_TYPE.AUTO, altPower, secPort, false);\n                break;\n            case pc.AUTO_LOAD_URL:\n                if (!mediaChangeDisabledWarning()) fileLoader.openURLChooserDialog(OPEN_TYPE.AUTO, altPower, secPort, false);\n                break;\n            case pc.SCREEN_CRT_MODE:\n                monitor.crtModeToggle(); break;\n            case pc.SCREEN_CRT_FILTER:\n                monitor.crtFilterToggle(); break;\n            case pc.SCREEN_FULLSCREEN:\n                monitor.fullscreenToggle(); break;\n            case pc.SCREEN_DEFAULTS:\n                consoleControls.processControlState(jt.ConsoleControls.DEFAULTS, true);\n                monitor.setDefaults();\n                break;\n            case pc.SCREEN_TOGGLE_MENU:\n                screen.toggleMenuByKey();\n                break;\n            case pc.SCREEN_OPEN_HELP:\n                screen.openHelp();\n                break;\n            case pc.SCREEN_OPEN_ABOUT:\n                screen.openAbout();\n                break;\n            case pc.SCREEN_OPEN_SETTINGS:\n                if (altPower) return this.controlActivated(pc.SCREEN_DEFAULTS);\n                screen.openSettings();\n                break;\n            case pc.SCREEN_OPEN_QUICK_OPTIONS:\n                screen.openQuickOptionsDialog();\n                break;\n            case pc.SCREEN_CONSOLE_PANEL_TOGGLE:\n                screen.toggleConsolePanel();\n                break;\n            case pc.SCREEN_OPEN_NETPLAY:\n                screen.openNetPlayDialog();\n                break;\n            case pc.P1_CONTROLS_TOGGLE:\n                consoleControls.toggleP1ControlsMode(); break;\n            case pc.JOYSTICKS_TOGGLE_MODE:\n                consoleControls.toggleGamepadMode(); break;\n            case pc.PADDLES_TOGGLE_MODE:\n                consoleControls.togglePaddleMode(); break;\n            case pc.TOUCH_TOGGLE_MODE:\n                consoleControls.toggleTouchControlsMode(); break;\n            case pc.TOUCH_TOGGLE_DIR_BIG:\n                consoleControls.toggleTouchDirBig(); break;\n            case pc.TURBO_FIRE_TOGGLE:\n                consoleControls.toggleTurboFireSpeed(); break;\n            case pc.HAPTIC_FEEDBACK_TOGGLE_MODE:\n                consoleControls.toggleHapticFeedback(); break;\n            case pc.CAPTURE_SCREEN:\n                screen.saveScreenCapture(); break;\n            case pc.SPEAKER_BUFFER_TOGGLE:\n                speaker.toggleBufferBaseSize(); break;\n            case pc.VIEWPORT_ORIGIN_MINUS:\n                monitor.viewportOriginDecrease(); break;\n            case pc.VIEWPORT_ORIGIN_PLUS:\n                monitor.viewportOriginIncrease(); break;\n        }\n        if (SCREEN_FIXED_SIZE) return;\n        switch(control) {\n            case pc.SCREEN_ASPECT_MINUS:\n                monitor.displayAspectDecrease(); break;\n            case pc.SCREEN_ASPECT_PLUS:\n                monitor.displayAspectIncrease(); break;\n            case pc.SCREEN_SCALE_MINUS:\n                monitor.displayScaleDecrease(); break;\n            case pc.SCREEN_SCALE_PLUS:\n                monitor.displayScaleIncrease(); break;\n            case pc.VIEWPORT_SIZE_MINUS:\n                monitor.viewportSizeDecrease(); break;\n            case pc.VIEWPORT_SIZE_PLUS:\n                monitor.viewportSizeIncrease(); break;\n        }\n    };\n\n    var mediaChangeDisabledWarning = function() {\n        if (Javatari.CARTRIDGE_CHANGE_DISABLED) {\n            monitor.showOSD(\"Cartridge change is disabled!\", true, true);\n            return true;\n        }\n        if (room.netPlayMode === 2) {\n            monitor.showOSD(\"Cartridge change is disabled in NetPlay Client mode!\", true, true);\n            return true;\n        }\n        return false;\n    };\n    this.mediaChangeDisabledWarning = mediaChangeDisabledWarning;\n\n    var initKeys = function() {\n        var k = jt.DOMKeys;\n\n        keyCodeMap[KEY_LOAD_RECENT]         = pc.CARTRIDGE_LOAD_RECENT;\n        keyCodeMap[KEY_LOAD_RECENT | k.ALT] = pc.CARTRIDGE_LOAD_RECENT;\n        keyCodeMap[KEY_LOAD_URL]            = pc.AUTO_LOAD_URL;\n        keyCodeMap[KEY_LOAD_URL | k.ALT]    = pc.AUTO_LOAD_URL;\n        keyCodeMap[KEY_CART_REMOVE]         = pc.CARTRIDGE_REMOVE;\n        keyCodeMap[KEY_CART_REMOVE | k.ALT] = pc.CARTRIDGE_REMOVE;\n        keyCodeMap[KEY_STATE_FILE]          = pc.CONSOLE_SAVE_STATE_FILE;\n        keyCodeMap[KEY_STATE_FILE | k.ALT]  = pc.CONSOLE_SAVE_STATE_FILE;\n\n        keyCodeMap[KEY_P1_CONTROLS_TOGGLE | k.ALT]    = pc.P1_CONTROLS_TOGGLE;\n        keyCodeMap[KEY_PADDLES_TOGGLE | k.ALT]        = pc.PADDLES_TOGGLE_MODE;\n        keyCodeMap[KEY_JOYSTICKS_TOGGLE | k.ALT]      = pc.JOYSTICKS_TOGGLE_MODE;\n        keyCodeMap[KEY_TOUCH_TOGGLE | k.ALT]          = pc.TOUCH_TOGGLE_MODE;\n        keyCodeMap[KEY_TURBO_FIRE_TOGGLE | k.ALT]     = pc.TURBO_FIRE_TOGGLE;\n\n        keyCodeMap[KEY_CRT_FILTER | k.ALT]      = pc.SCREEN_CRT_FILTER;\n        keyCodeMap[KEY_CRT_MODE | k.ALT] \t    = pc.SCREEN_CRT_MODE;\n        keyCodeMap[KEY_SETTINGS | k.ALT]    \t= pc.SCREEN_OPEN_SETTINGS;\n        keyCodeMap[KEY_QUICK_OPTIONS | k.ALT] \t= pc.SCREEN_OPEN_QUICK_OPTIONS;\n        keyCodeMap[KEY_CONSOLE_PANEL | k.ALT] \t= pc.SCREEN_CONSOLE_PANEL_TOGGLE;\n\n        keyCodeMap[KEY_FULLSCREEN | k.ALT]  = pc.SCREEN_FULLSCREEN;\n\n        keyCodeMap[KEY_UP | k.CONTROL | k.ALT]     = pc.SCREEN_SCALE_MINUS;\n        keyCodeMap[KEY_DOWN | k.CONTROL | k.ALT]   = pc.SCREEN_SCALE_PLUS;\n        keyCodeMap[KEY_LEFT | k.CONTROL | k.ALT]   = pc.SCREEN_ASPECT_MINUS;\n        keyCodeMap[KEY_RIGHT | k.CONTROL | k.ALT]  = pc.SCREEN_ASPECT_PLUS;\n\n        keyCodeMap[KEY_UP | k.SHIFT | k.CONTROL]     = pc.VIEWPORT_ORIGIN_MINUS;\n        keyCodeMap[KEY_DOWN | k.SHIFT | k.CONTROL]   = pc.VIEWPORT_ORIGIN_PLUS;\n        keyCodeMap[KEY_LEFT | k.SHIFT | k.CONTROL]   = pc.VIEWPORT_SIZE_MINUS;\n        keyCodeMap[KEY_RIGHT | k.SHIFT | k.CONTROL]  = pc.VIEWPORT_SIZE_PLUS;\n\n        keyCodeMap[KEY_MENU]         \t  = pc.SCREEN_TOGGLE_MENU;\n        keyCodeMap[KEY_DEFAULTS]          = pc.SCREEN_DEFAULTS;\n        keyCodeMap[KEY_DEFAULTS | k.ALT]  = pc.SCREEN_DEFAULTS;\n\n        keyCodeMap[KEY_CAPTURE_SCREEN | k.ALT] = pc.CAPTURE_SCREEN;\n\n        keyCodeMap[KEY_SPEAKER_BUFFER | k.ALT] = pc.SPEAKER_BUFFER_TOGGLE;\n    };\n\n\n    var pc = jt.PeripheralControls;\n\n    var screen;\n    var monitor;\n    var speaker;\n    var consoleControls;\n    var fileLoader;\n    var cartridgeSocket;\n\n    var keyCodeMap = {};                // SHIFT is considered differently\n\n    var EXCLUDE_SHIFT_MASK = ~jt.DOMKeys.SHIFT;\n    var INCLUDE_SHIFT_MASK = jt.DOMKeys.SHIFT;\n\n    var OPEN_TYPE = jt.FileLoader.OPEN_TYPE;\n\n    var KEY_LEFT    = jt.DOMKeys.VK_LEFT.c;\n    var KEY_UP      = jt.DOMKeys.VK_UP.c;\n    var KEY_RIGHT   = jt.DOMKeys.VK_RIGHT.c;\n    var KEY_DOWN    = jt.DOMKeys.VK_DOWN.c;\n\n    var KEY_MENU      = jt.DOMKeys.VK_CONTEXT.c;\n    var KEY_DEFAULTS  = jt.DOMKeys.VK_BACKSPACE.c;\n\n    var KEY_CAPTURE_SCREEN  = jt.DOMKeys.VK_G.c;\n\n    var KEY_SPEAKER_BUFFER  = jt.DOMKeys.VK_A.c;\n\n    var KEY_LOAD_RECENT = jt.DOMKeys.VK_F5.c;\n    var KEY_LOAD_URL    = jt.DOMKeys.VK_F6.c;\n    var KEY_CART_REMOVE = jt.DOMKeys.VK_F7.c;\n\n    var KEY_P1_CONTROLS_TOGGLE    = jt.DOMKeys.VK_K.c;\n    var KEY_JOYSTICKS_TOGGLE      = jt.DOMKeys.VK_J.c;\n    var KEY_PADDLES_TOGGLE        = jt.DOMKeys.VK_L.c;\n    var KEY_TOUCH_TOGGLE          = jt.DOMKeys.VK_N.c;\n    var KEY_TURBO_FIRE_TOGGLE     = jt.DOMKeys.VK_H.c;\n\n    var KEY_CRT_MODE      = jt.DOMKeys.VK_R.c;\n    var KEY_CRT_FILTER    = jt.DOMKeys.VK_T.c;\n    var KEY_SETTINGS      = jt.DOMKeys.VK_Y.c;\n    var KEY_QUICK_OPTIONS = jt.DOMKeys.VK_U.c;\n    var KEY_CONSOLE_PANEL = jt.DOMKeys.VK_S.c;\n\n    var KEY_FULLSCREEN  = jt.DOMKeys.VK_ENTER.c;\n\n    var KEY_MACHINE_POWER  = jt.DOMKeys.VK_F1.c;\n    var KEY_STATE_FILE     = jt.DOMKeys.VK_F8.c;\n\n    var SCREEN_FIXED_SIZE = Javatari.SCREEN_RESIZE_DISABLED;\n\n\n    var netClientDisabledControls = new Set([\n        pc.CONSOLE_POWER_FRY,\n        pc.CONSOLE_LOAD_STATE_FILE, pc.CONSOLE_SAVE_STATE_FILE, pc.CONSOLE_LOAD_STATE_MENU, pc.CONSOLE_SAVE_STATE_MENU,\n        pc.CARTRIDGE_LOAD_RECENT,\n        pc.CARTRIDGE_LOAD_FILE, pc.CARTRIDGE_LOAD_URL, pc.CARTRIDGE_REMOVE, pc.CARTRIDGE_LOAD_DATA_FILE, pc.CARTRIDGE_SAVE_DATA_FILE,\n        pc.AUTO_LOAD_FILE, pc.AUTO_LOAD_URL\n    ]);\n\n\n    init();\n\n};\n"
  },
  {
    "path": "src/main/room/controls/DOMTouchControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.DOMTouchControls = function(consoleControls) {\n\"use strict\";\n\n    var self = this;\n\n    this.connect = function(pConsoleControlsSocket) {\n        consoleControlsSocket = pConsoleControlsSocket;\n    };\n\n    this.connectScreen = function(pScreen) {\n        screen = pScreen;\n    };\n\n    this.powerOn = function() {\n        this.applyPreferences();\n        resetStates();\n        updateVisuals();\n    };\n\n    this.powerOff = function() {\n    };\n\n    this.releaseControllers = function() {\n        resetStates();\n    };\n\n    this.updateConsolePanelSize = function(screenWidth, width, height, isFullscreen, isLandscape) {\n        if (!speedControls || !isFullscreen) return;\n\n        var center = !isLandscape && ((screenWidth - width - 10) / 2) < SPEED_CONTROLS_WIDTH;\n\n        speedControls.classList.toggle(\"jt-center\", center);\n        if (center) speedControls.style.bottom = \"\" + (jt.ScreenGUI.BAR_HEIGHT + height + 3) + \"px\";\n        else speedControls.style.removeProperty(\"bottom\");\n    };\n\n    this.toggleMode = function() {\n        if (!isTouchDevice) {\n            screen.showOSD(\"Touch Controls unavailable. Not a touch device!\", true, true);\n            return;\n        }\n\n        mode++; if (mode > 2) mode = 0;     // AUTO mode not selectable\n        resetStates();\n        this.applyPreferences();\n        updateVisuals();\n        screen.showOSD(\"Touch Controls \" + this.getModeDesc(), true);\n    };\n\n    this.setP1ControlsMode = function(state) {\n        p1ControlsMode = state;\n        this.applyPreferences();\n    };\n\n    this.getModeDesc = function() {\n        switch (mode) {\n            case -1: return \"AUTO\";\n            case 0:  return \"DISABLED\";\n            case 1:  return \"ENABLED\";\n            case 2:  return \"ENABLED (swapped)\";\n        }\n    };\n\n    this.toggleTouchDirBig = function() {\n        dirBig = !dirBig;\n        prefs.touch.directionalBig = dirBig;\n        Javatari.userPreferences.setDirty();\n        updateVisuals();\n    };\n\n    this.isDirBig = function() {\n        return dirBig;\n    };\n\n    this.setupTouchControlsIfNeeded = function(mainElement) {\n        if (dirElement || mode <= 0) return;\n\n        speedControls = document.createElement('div');\n        speedControls.id = \"jt-touch-speed\";\n        var pause = document.createElement('div');\n        pause.id = \"jt-touch-pause\";\n        pause.addEventListener(\"touchstart\", pauseTouchStart);\n        pause.addEventListener(\"touchend\", pauseTouchEnd);\n        speedControls.appendChild(pause);\n        var ff = document.createElement('div');\n        ff.id = \"jt-touch-fast\";\n        ff.addEventListener(\"touchstart\", fastTouchStart);\n        ff.addEventListener(\"touchend\", fastTouchEnd);\n        speedControls.appendChild(ff);\n        mainElement.appendChild(speedControls);\n\n        var group = document.createElement('div');\n        group.id = \"jt-touch-left\";\n        dirElement = createDirectional();\n        dirElement.addEventListener(\"touchstart\", dirTouchStart);\n        dirElement.addEventListener(\"touchmove\", dirTouchMove);\n        dirElement.addEventListener(\"touchend\", dirTouchEnd);\n        dirElement.addEventListener(\"touchcancel\", dirTouchEnd);\n        group.appendChild(dirElement);\n        mainElement.appendChild(group);\n\n        group = document.createElement('div');\n        group.id = \"jt-touch-right\";\n        createButton(group, \"buttonT\");         // Landscape top-down order\n        createButton(group, \"button\");\n        mainElement.appendChild(group);\n\n        updateSpeedControls();\n\n        function createDirectional() {\n            var elem = document.createElement('div');\n            elem.classList.add(\"jt-touch-dir\");\n            elem.classList.add(\"jt-touch-dir-joy\");\n            createArrowKey(\"left\");\n            createArrowKey(\"right\");\n            createArrowKey(\"up\");\n            createArrowKey(\"down\");\n            return elem;\n\n            function createArrowKey(dir) {\n                var key = document.createElement('div');\n                key.classList.add(\"jt-touch-dir-\" + dir);\n                elem.appendChild(key);\n                var arr = document.createElement('div');\n                arr.classList.add(\"jt-arrow-\" + dir);\n                elem.appendChild(arr);\n            }\n        }\n\n        function createButton(group, name) {\n            var but = document.createElement('div');\n            but.id = \"jt-touch-\" + name;\n            but.classList.add(\"jt-touch-button\");\n            but.classList.add(\"jt-touch-button-joy\");\n            but.classList.add(\"jt-touch-button-joy-\" + name);\n            but.jtControl = name;\n            but.addEventListener(\"touchstart\", buttonTouchStart);\n            but.addEventListener(\"touchmove\", jt.Util.blockEvent);\n            but.addEventListener(\"touchend\", buttonTouchEnd);\n            but.addEventListener(\"touchcancel\", buttonTouchEnd);\n            but.addEventListener(\"mousedown\", buttonTouchStart);\n            but.addEventListener(\"mouseup\", buttonTouchEnd);\n            buttonElements[name] = but;\n            group.appendChild(but);\n        }\n    };\n\n    this.consolePowerAndUserPauseStateUpdate = function(power, paused) {\n        consolePower = power;\n        consolePaused = paused;\n        if (speedControls) updateSpeedControls();\n    };\n\n    function updateSpeedControls() {\n        speedControls.classList.toggle(\"jt-poweroff\", !consolePower);\n        speedControls.classList.toggle(\"jt-paused\", consolePaused);\n    }\n\n    function updateVisuals() {\n        var active = mode > 0;\n        document.documentElement.classList.toggle(\"jt-touch-active\", active);\n        document.documentElement.classList.toggle(\"jt-dir-big\", dirBig);\n        screen.touchControlsActiveUpdate(active, dirBig);\n    }\n\n    function dirTouchStart(e) {\n        jt.Util.blockEvent(e);\n        if (dirTouchID !== null) return;\n        if (dirTouchCenterX === undefined) setDirTouchCenter();\n\n        var touch = e.changedTouches[0];\n        dirTouchID = touch.identifier;\n        updateDirMovement(touch.pageX, touch.pageY);\n    }\n\n    function dirTouchEnd(e) {\n        jt.Util.blockEvent(e);\n        if (dirTouchID !== null) {\n            dirTouchID = null;\n            setCurrentDirection(-1);\n        }\n    }\n\n    function dirTouchMove(e) {\n        jt.Util.blockEvent(e);\n        if (dirTouchID === null) return;\n\n        var changed = e.changedTouches;\n        for (var i = 0; i < changed.length; ++i) {\n            if (changed[i].identifier === dirTouchID) {\n                updateDirMovement(changed[i].pageX, changed[i].pageY);\n                return;\n            }\n        }\n    }\n\n    function updateDirMovement(newX, newY) {\n        var dir = -1;\n        var x = newX - dirTouchCenterX, y = newY - dirTouchCenterY;\n        var dist = Math.sqrt(x*x + y*y);\n        if (dist > dirDeadZone) {\n            dir = (1 - Math.atan2(x, y) / Math.PI) / 2;\n            dir += 1 / 16;\n            if (dir >= 1) dir -= 1;\n            dir = (dir * 8) | 0;\n        }\n        setCurrentDirection(dir);\n    }\n\n    function setCurrentDirection(newDir) {\n        if (dirCurrentDir === newDir) return;\n\n        if (newDir >= 0) consoleControls.hapticFeedback();\n\n        var newUp = false, newRight = false, newDown = false, newLeft = false;\n        switch (newDir) {\n            case 0: newUp = true; break;\n            case 1: newUp = newRight = true; break;\n            case 2: newRight = true; break;\n            case 3: newDown = newRight = true; break;\n            case 4: newDown = true; break;\n            case 5: newDown = newLeft = true; break;\n            case 6: newLeft = true; break;\n            case 7: newUp = newLeft = true; break;\n        }\n        consoleControls.processKey(joyKeys.up.c, newUp);\n        consoleControls.processKey(joyKeys.right.c, newRight);\n        consoleControls.processKey(joyKeys.down.c, newDown);\n        consoleControls.processKey(joyKeys.left.c, newLeft);\n\n        dirCurrentDir = newDir;\n    }\n\n    function setDirTouchCenter() {\n        var rec = dirElement.getBoundingClientRect();\n        dirDeadZone = ((rec.right - rec.left) * 0.14) | 0;      // 14% deadzone each direction\n        dirTouchCenterX = (((rec.left + rec.right) / 2) | 0) + window.pageXOffset;\n        dirTouchCenterY = (((rec.top + rec.bottom) / 2) | 0) + window.pageYOffset;\n    }\n\n    function buttonTouchStart(e) {\n        jt.Util.blockEvent(e);\n        processButtonTouch(e.target.jtControl, true);\n    }\n\n    function buttonTouchEnd(e) {\n        jt.Util.blockEvent(e);\n        processButtonTouch(e.target.jtControl, false);\n    }\n\n    function processButtonTouch(control, press) {\n        if (!control) return;\n\n        if (press) consoleControls.hapticFeedback();\n        consoleControls.processKey(joyKeys[control].c, press);\n    }\n\n    function pauseTouchStart(e) {\n        jt.Util.blockEvent(e);\n        consoleControls.hapticFeedback();\n        consoleControls.processControlState(!consolePower ? jt.ConsoleControls.POWER : jt.ConsoleControls.PAUSE, true);\n    }\n\n    function pauseTouchEnd(e) {\n        jt.Util.blockEvent(e);\n        consoleControls.processControlState(!consolePower ? jt.ConsoleControls.POWER : jt.ConsoleControls.PAUSE, false);\n    }\n\n    function fastTouchStart(e) {\n        jt.Util.blockEvent(e);\n        consoleControls.processControlState(consolePaused ? jt.ConsoleControls.FRAME : jt.ConsoleControls.FAST_SPEED, true);\n    }\n\n    function fastTouchEnd(e) {\n        jt.Util.blockEvent(e);\n        consoleControls.processControlState(consolePaused ? jt.ConsoleControls.FRAME : jt.ConsoleControls.FAST_SPEED, false);\n    }\n\n    function resetStates() {\n        joyState.reset();\n        dirTouchCenterX = dirTouchCenterY = undefined;\n        dirTouchID = null;\n        setCurrentDirection(-1);\n    }\n\n    this.applyPreferences = function() {\n        dirBig = !!prefs.touch.directionalBig;\n        var p = mode === 2 ? 1 : 0;\n        joyKeys = prefs.joystickKeys[p];\n    };\n\n\n    var consoleControlsSocket;\n    var screen;\n\n    var isTouchDevice = jt.Util.isTouchDevice();\n    var isMobileDevice = jt.Util.isMobileDevice();\n    var mode = Javatari.TOUCH_MODE >= 0 ? Javatari.TOUCH_MODE : isTouchDevice && isMobileDevice ? 1 : 0;            // -1: auto, 0: disabled, 1: enabled, 2: enabled (swapped)\n    var p1ControlsMode = false;\n    var dirBig = false;\n\n    var dirElement = null, dirTouchID = null, dirTouchCenterX, dirTouchCenterY, dirCurrentDir = -1, dirDeadZone = 0;\n    var buttonElements = { };\n    var speedControls;\n\n    var joyKeys;\n    var joyState = new JoystickState();\n    var consolePower = false, consolePaused = false;\n\n    var prefs = Javatari.userPreferences.current;\n\n    var SPEED_CONTROLS_WIDTH = 84;\n\n\n    function JoystickState() {\n        this.reset = function() {\n            this.portValue = 0x3f;          // All switches off\n        };\n        this.reset();\n    }\n\n\n    // Savestate  -------------------------------------------\n\n    this.saveState = function() {\n        return {\n        };\n    };\n\n    this.loadState = function(s) {\n        resetStates();\n    };\n\n};\n"
  },
  {
    "path": "src/main/room/controls/GamepadButtons.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// General, immutable info about host Gamepad Buttons\n\njt.GamepadButtons = {\n\n    GB_1:     { b:  0, n: \"1\" },\n    GB_2:     { b:  1, n: \"2\" },\n    GB_3:     { b:  2, n: \"3\" },\n    GB_4:     { b:  3, n: \"4\" },\n    GB_L1:    { b:  4, n: \"L1\" },\n    GB_R1:    { b:  5, n: \"R1\" },\n    GB_L2:    { b:  6, n: \"L2\" },\n    GB_R2:    { b:  7, n: \"R2\" },\n    GB_BACK:  { b:  8, n: \"BACK\" },\n    GB_START: { b:  9, n: \"START\" },\n    GB_S1:    { b: 10, n: \"S1\" },\n    GB_S2:    { b: 11, n: \"S2\" },\n    GB_UP:    { b: 12, n: \"&#9650;\" },\n    GB_DOWN:  { b: 13, n: \"&#9660;\" },\n    GB_LEFT:  { b: 14, n: \"&#9668;\" },\n    GB_RIGHT: { b: 15, n: \"&#9658;\" },\n    GB_LOGO:  { b: 16, n: \"LOGO\" },\n\n    GB_VOID:  { b: -1, n: \"Unbound\" }\n\n};\n"
  },
  {
    "path": "src/main/room/controls/GamepadConsoleControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.GamepadConsoleControls = function(consoleControls) {\n\"use strict\";\n\n    this.connect = function(pConsoleControlsSocket) {\n        consoleControlsSocket = pConsoleControlsSocket;\n    };\n\n    this.connectScreen = function(pScreen) {\n        screen = pScreen;\n    };\n\n    this.powerOn = function() {\n        supported = !!navigator.getGamepads;\n        if (!supported) return;\n        this.applyPreferences();\n        resetStates();\n    };\n\n    this.powerOff = function() {\n        supported = false;\n    };\n\n    this.toggleMode = function() {\n        if (!supported) {\n            screen.showOSD(\"Joysticks unavailable (not supported by browser)\", true, true);\n            return;\n        }\n        ++mode; if (mode > 0) mode = -2;\n\n        if (mode === -2) {\n            joystick0 = joystick1 = null;\n        } else if (mode === -1) {\n            gamepadsDetectionDelay = 60;\n            this.controlsClockPulse();\n        }\n\n        swappedMode = mode === 0;\n        this.applyPreferences();\n        resetStates();\n\n        screen.showOSD(\"Gamepads \" + this.getModeDesc(), true);\n    };\n\n    this.setPaddleMode = function(state) {\n        if (!supported) return;\n        paddleMode = state;\n        joy0State.xPosition = joy1State.xPosition = -1;\n    };\n\n    this.setP1ControlsMode = function(state) {\n        p1ControlsMode = state;\n        this.applyPreferences();\n    };\n\n    this.controlsClockPulse = function() {\n        if (!supported || mode === -2) return;\n\n        // Try to avoid polling at gamepads if none are present, as it may be expensive\n        // Only try to detect connected gamepads once each 60 clocks (frames)\n        if (++gamepadsDetectionDelay >= 60) gamepadsDetectionDelay = 0;\n        if (!joystick0 && !joystick1 && gamepadsDetectionDelay !== 0) return;\n\n        var gamepads = navigator.getGamepads();     // Just one poll per clock here then use it several times\n\n        if (joystick0) {\n            if (joystick0.update(gamepads)) {\n                if (joystick0.hasMoved())\n                    update(joystick0, joy0State, joy0Prefs, joy0Keys);\n            } else {\n                joystick0 = null;\n                joystickConnectionMessage(true, false);\n            }\n        } else {\n            if (gamepadsDetectionDelay === 0) {\n                joystick0 = detectNewJoystick(joy0Prefs, joy1Prefs, gamepads);\n                if (joystick0) joystickConnectionMessage(true, true);\n            }\n        }\n\n        if (joystick1) {\n            if (joystick1.update(gamepads)) {\n                if (joystick1.hasMoved())\n                    update(joystick1, joy1State, joy1Prefs, joy1Keys);\n            } else {\n                joystick1 = null;\n                joystickConnectionMessage(false, false);\n            }\n        } else {\n            if (gamepadsDetectionDelay === 0) {\n                joystick1 = detectNewJoystick(joy1Prefs, joy0Prefs, gamepads);\n                if (joystick1) joystickConnectionMessage(false, true);\n            }\n        }\n    };\n\n    var joystickConnectionMessage = function (joy0, conn) {\n        screen.showOSD((joy0 ^ p1ControlsMode ^ swappedMode ? \"P1\" : \"P2\") + \" Gamepad \" + (conn ? \"connected\" : \"disconnected\"), joy0);\n    };\n\n    var detectNewJoystick = function(prefs, notPrefs, gamepads) {\n        if (!gamepads || gamepads.length === 0) return;\n        // Fixed index detection. Also allow the same gamepad to control both players\n        var device = prefs.device;\n        if (device >= 0)   // pref.device == -1 means \"auto\"\n            return gamepads[device] && gamepads[device].buttons.length > 0 ? new Joystick(device, prefs) : null;\n        // Auto detection\n        for (var i = 0, len = gamepads.length; i < len; i++)\n            if (gamepads[i] && gamepads[i].buttons.length > 0)\n                if (i !== notPrefs.device && (!joystick0 || joystick0.index !== i) && (!joystick1 || joystick1.index !== i))\n                    // New Joystick found!\n                    return new Joystick(i, prefs);\n    };\n\n    var resetStates = function() {\n        joy0State = newControllerState();\n        joy1State = newControllerState();\n    };\n\n    var update = function (joystick, joyState, joyPrefs, joyKeys) {\n        // Paddle Analog\n        if (paddleMode && joyPrefs.paddleSens !== 0) {\n            var newPosition = joystick.getPaddlePosition();\n            if (newPosition !== joyState.xPosition) {\n                joyState.xPosition = newPosition;\n                consoleControls.processControlValue(joyPrefs.player ? controls.PADDLE1_POSITION : controls.PADDLE0_POSITION, newPosition);\n            }\n        }\n        // Joystick direction (Analog or POV) and Paddle Digital (Analog or POV)\n        var newDirection = joystick.getDPadDirection();\n        if (newDirection === -1 && (!paddleMode || joyPrefs.paddleSens === 0))\n            newDirection = joystick.getStickDirection();\n        if (newDirection !== joyState.direction) {\n            var newUp = false, newRight = false, newDown = false, newLeft = false;\n            switch (newDirection) {\n                case 0: newUp = true; break;\n                case 1: newUp = newRight = true; break;\n                case 2: newRight = true; break;\n                case 3: newDown = newRight = true; break;\n                case 4: newDown = true; break;\n                case 5: newDown = newLeft = true; break;\n                case 6: newLeft = true; break;\n                case 7: newUp = newLeft = true; break;\n            }\n            consoleControls.processKey(joyKeys.up.c, newUp);\n            consoleControls.processKey(joyKeys.right.c, newRight);\n            consoleControls.processKey(joyKeys.down.c, newDown);\n            consoleControls.processKey(joyKeys.left.c, newLeft);\n            joyState.direction = newDirection;\n        }\n        // Joystick Normal Button\n        var newButton = joystick.getButtonDigital(joyPrefs.button);\n        if (newButton !== joyState.button) {\n            consoleControls.processKey(joyKeys.button.c, newButton);\n            joyState.button = newButton;\n        }\n        // Joystick Turbo Button\n        newButton = joystick.getButtonDigital(joyPrefs.buttonT);\n        if (newButton !== joyState.buttonT) {\n            consoleControls.processKey(joyKeys.buttonT.c, newButton);\n            joyState.buttonT = newButton;\n        }\n        // Other Console controls\n        var newSelect = joystick.getButtonDigital(joyPrefs.select);\n        if (newSelect !== joyState.select) {\n            consoleControls.processControlState(controls.SELECT, newSelect);\n            joyState.select = newSelect;\n        }\n        var newReset = joystick.getButtonDigital(joyPrefs.reset);\n        if (newReset !== joyState.reset) {\n            consoleControls.processControlState(controls.RESET, newReset);\n            joyState.reset = newReset;\n        }\n        var newPause = joystick.getButtonDigital(joyPrefs.pause);\n        if (newPause !== joyState.pause) {\n            consoleControls.processControlState(controls.PAUSE, newPause);\n            joyState.pause = newPause;\n        }\n        var newFastSpeed = joystick.getButtonDigital(joyPrefs.fastSpeed);\n        if (newFastSpeed !== joyState.fastSpeed) {\n            consoleControls.processControlState(controls.FAST_SPEED, newFastSpeed);\n            joyState.fastSpeed = newFastSpeed;\n        }\n        var newSlowSpeed = joystick.getButtonDigital(joyPrefs.slowSpeed);\n        if (newSlowSpeed !== joyState.slowSpeed) {\n            consoleControls.processControlState(controls.SLOW_SPEED, newSlowSpeed);\n            joyState.slowSpeed = newSlowSpeed;\n        }\n    };\n\n    var newControllerState = function() {\n        return {\n            direction: -1,         // CENTER\n            button: false, buttonT: false, select: false, reset: false, fastSpeed: false, pause: false,\n            xPosition: -1          // PADDLE POSITION\n        }\n    };\n\n    this.getModeDesc = function() {\n        switch (mode) {\n            case -1: return \"AUTO\";\n            case 0:  return \"AUTO (swapped)\";\n            default: return !supported ? \"NOT SUPPORTED\" : \"DISABLED\";\n        }\n    };\n\n    this.applyPreferences = function() {\n        var p0 = swappedMode ? 1 : 0;\n        var p1 = p0 ? 0 : 1;\n        joy0Prefs = prefs.joystickGamepads[p0];\n        joy0Prefs.player = p1ControlsMode ^ swappedMode? 1 : 0;\n        joy1Prefs = prefs.joystickGamepads[p1];\n        joy1Prefs.player = p1ControlsMode ^ swappedMode ? 0 : 1;\n        joy0Keys = prefs.joystickKeys[p0];\n        joy1Keys = prefs.joystickKeys[p1];\n    };\n\n\n    var supported = false;\n    var gamepadsDetectionDelay = -1;\n\n    var controls = jt.ConsoleControls;\n    var consoleControlsSocket;\n    var screen;\n\n    var mode = -1;\n    var paddleMode = false;\n    var swappedMode = false;\n    var p1ControlsMode = false;\n\n    var joystick0;\n    var joystick1;\n    var joy0State;\n    var joy1State;\n    var joy0Prefs;\n    var joy1Prefs;\n    var joy0Keys;\n    var joy1Keys;\n\n    var joyButtonDetection = null;\n\n    var prefs = Javatari.userPreferences.current;\n\n\n    function Joystick(index, prefs) {\n\n        this.index = index;\n\n        this.update = function(gamepads) {\n            gamepad = gamepads[index];\n            return !!gamepad;\n        };\n\n        this.hasMoved = function() {\n            var newTime = gamepad.timestamp;\n            if (newTime) {\n                if (newTime > lastTimestamp) {\n                    lastTimestamp = newTime;\n                    return true;\n                } else\n                    return false;\n            } else\n                return true;        // Always true if the timestamp property is not supported\n        };\n\n        this.getButtonDigital = function(butIndex) {\n            var b = gamepad.buttons[butIndex];\n            if (typeof(b) === \"object\") return b.pressed || b.value > 0.5;\n            else return b > 0.5;\n        };\n\n        this.getDPadDirection = function() {\n            if (this.getButtonDigital(12)) {\n                if (this.getButtonDigital(15)) return 1;                // NORTHEAST\n                else if (this.getButtonDigital(14)) return 7;           // NORTHWEST\n                else return 0;                                          // NORTH\n            } else if (this.getButtonDigital(13)) {\n                if (this.getButtonDigital(15)) return 3;                // SOUTHEAST\n                else if (this.getButtonDigital(14)) return 5;           // SOUTHWEST\n                else return 4;                                          // SOUTH\n            } else if (this.getButtonDigital(14)) return 6;             // WEST\n            else if (this.getButtonDigital(15)) return 2;               // EAST\n            else return -1;                                             // CENTER\n        };\n\n        this.getStickDirection = function() {\n            var x = gamepad.axes[xAxis];\n            var y = gamepad.axes[yAxis];\n            if ((x < 0 ? -x : x) < deadzone) x = 0; else x *= xAxisSig;\n            if ((y < 0 ? -y : y) < deadzone) y = 0; else y *= yAxisSig;\n            if (x === 0 && y === 0) return -1;\n            var dir = (1 - Math.atan2(x, y) / Math.PI) / 2;\n            dir += 1/16; if (dir >= 1) dir -= 1;\n            return (dir * 8) | 0;\n        };\n\n        this.getPaddlePosition = function() {\n            var pos = (gamepad.axes[paddleAxis] * paddleAxisSig * paddleSens + paddleCenter) | 0;\n            if (pos < 0) pos = 0;\n            else if (pos > 380) pos = 380;\n            return pos;\n        };\n\n        var gamepad;\n\n        var xAxis = prefs.xAxis;\n        var yAxis = prefs.yAxis;\n        var xAxisSig = prefs.xAxisSig;\n        var yAxisSig = prefs.yAxisSig;\n        var paddleAxis = prefs.paddleAxis;\n        var paddleAxisSig = prefs.paddleAxisSig;\n        var paddleSens = prefs.paddleSens * -190;\n        var paddleCenter = prefs.paddleCenter * -190 + 190 - 5;\n        var deadzone = prefs.deadzone;\n\n        var lastTimestamp = Number.MIN_VALUE;\n\n    }\n\n};\n\n\n"
  },
  {
    "path": "src/main/room/controls/PeripheralControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.PeripheralControls = {\n\n    SCREEN_ASPECT_PLUS: 1, SCREEN_ASPECT_MINUS: 2,\n    SCREEN_SCALE_PLUS: 3, SCREEN_SCALE_MINUS: 4,\n    VIEWPORT_ORIGIN_PLUS: 5, VIEWPORT_ORIGIN_MINUS: 6,\n    VIEWPORT_SIZE_PLUS: 7, VIEWPORT_SIZE_MINUS: 8,\n\n    SCREEN_FULLSCREEN: 10,\n    SCREEN_CRT_FILTER: 11, SCREEN_CRT_MODE: 12,\n    SCREEN_TOGGLE_MENU: 13,\n    SCREEN_OPEN_HELP: 14,\n    SCREEN_OPEN_ABOUT: 15,\n    SCREEN_OPEN_SETTINGS: 16,\n    SCREEN_OPEN_QUICK_OPTIONS: 17,\n    SCREEN_DEFAULTS: 18,\n\n    SCREEN_CONSOLE_PANEL_TOGGLE: 19,\n\n    SPEAKER_BUFFER_TOGGLE: 20,\n\n    CONSOLE_POWER_TOGGLE: 102, CONSOLE_POWER_FRY: 103,\n    CONSOLE_LOAD_STATE_FILE: 104, CONSOLE_SAVE_STATE_FILE: 105, CONSOLE_LOAD_STATE_MENU: 106, CONSOLE_SAVE_STATE_MENU: 107,\n\n    P1_CONTROLS_TOGGLE: 201, JOYSTICKS_TOGGLE_MODE: 202, PADDLES_TOGGLE_MODE: 203, TOUCH_TOGGLE_MODE: 204, TOUCH_TOGGLE_DIR_BIG: 205, TURBO_FIRE_TOGGLE: 206,\n    HAPTIC_FEEDBACK_TOGGLE_MODE: 207,\n\n    CAPTURE_SCREEN: 304,\n\n    CARTRIDGE_LOAD_RECENT: 40,\n    CARTRIDGE_LOAD_FILE: 41, CARTRIDGE_LOAD_URL: 42, CARTRIDGE_REMOVE: 43, CARTRIDGE_LOAD_DATA_FILE: 44, CARTRIDGE_SAVE_DATA_FILE: 45, CARTRIDGE_CHOOSE_FORMAT: 46,\n    AUTO_LOAD_FILE: 47, AUTO_LOAD_URL: 48,\n\n    SCREEN_OPEN_NETPLAY: 500\n\n};\n"
  },
  {
    "path": "src/main/room/controls/TouchControls.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// General, immutable info about host Touch Buttons\n\njt.TouchControls = {\n\n    buttons: [ \"T_B\", \"T_A\" ]       // Specific order for vertical in-line placement on the screen\n\n};\n"
  },
  {
    "path": "src/main/room/files/FileDownloader.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.FileDownloader = function() {\n\"use strict\";\n\n    this.connectPeripherals = function(pScreen) {\n        screen = pScreen;\n    };\n\n    this.registerForDownloadElement = function (element) {\n        downloadLinkElementParent = element;\n    };\n\n    this.startDownloadBinary = function (fileName, data, desc) {\n        try {\n            if (!saveType) setup();\n            if (checkNone()) return;\n\n            var href;\n            if (saveType === \"BLOB\") {\n                // Release previous URL\n                if (downloadLinkElement.href) (window.URL || window.webkitURL).revokeObjectURL(downloadLinkElement.href);\n                var blob = new Blob([data], {type: \"data:application/octet-stream\"});\n                href = (window.URL || window.webkitURL).createObjectURL(blob);\n            } else\n                href = \"data:application/octet-stream;base64,\" + btoa(typeof data === \"string\" ? data : jt.Util.int8BitArrayToByteString(data));\n\n            downloadLinkElement.download = fileName && fileName.trim();\n            downloadLinkElement.href = href;\n            downloadLinkElement.click();\n\n            screen.showOSD(desc + \" saved\", true);\n        } catch(ex) {\n            screen.showOSD(desc + \" save FAILED!\", true, true);\n            jt.Util.error(ex);\n        }\n    };\n\n    this.startDownloadURL = function (fileName, url, desc) {\n        try {\n            if (!saveType) setup();\n            if (checkNone()) return;\n\n            if (saveType === \"BLOB\")\n                // Release previous URL\n                if (downloadLinkElement.href) (window.URL || window.webkitURL).revokeObjectURL(downloadLinkElement.href);\n\n            downloadLinkElement.download = fileName && fileName.trim();\n            downloadLinkElement.href = url;\n            downloadLinkElement.click();\n\n            screen.showOSD(desc + \" saved\", true);\n        } catch(ex) {\n            screen.showOSD(desc + \" save FAILED!\", true, true);\n            jt.Util.error(ex);\n        }\n    };\n\n    function checkNone() {\n        if (saveType === \"NONE\") {\n            alert(\"Unfortunately file saving in WebApps is broken in this version of iOS. The file could not be saved. If you really need to save a file, you must run Javatari on the official homepage.\" );\n            return true;\n        }\n    }\n\n    function setup() {\n        saveType = jt.Util.isIOSDevice()\n            ? jt.Util.isBrowserStandaloneMode() ? \"NONE\" : \"DATA\"\n            : jt.Util.browserInfo().name === \"SAFARI\" ? \"DATA\" : \"BLOB\";\n\n        // No need to create link element if we won't use it\n        if (saveType === \"NONE\") return;\n\n        downloadLinkElement = document.createElement('a');\n        downloadLinkElement.style.display = \"none\";\n        downloadLinkElement.target = \"_blank\";\n        downloadLinkElement.href = \"#\";\n        downloadLinkElementParent.appendChild(downloadLinkElement);\n    }\n\n\n    var saveType;\n    var downloadLinkElement;\n    var downloadLinkElementParent;\n    var screen;\n\n};\n"
  },
  {
    "path": "src/main/room/files/FileLoader.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.FileLoader = function(room, recentStoredROMs, peripheralControls) {\n\"use strict\";\n\n    var self = this;\n\n    this.connect = function(pConsole) {\n        console = pConsole;\n        cartridgeSocket = console.getCartridgeSocket();\n        saveStateSocket = console.getSavestateSocket();\n    };\n\n    this.registerForDnD = function (element) {\n        element.addEventListener(\"dragover\", onDragOver, false);\n        element.addEventListener(\"drop\", onDrop, false);\n    };\n\n    this.registerForFileInputElement = function (element) {\n        fileInputElementParent = element;\n    };\n\n    this.openFileChooserDialog = function (openType, altPower, inSecondaryPort, asExpansion) {\n        if (!fileInputElement) createFileInputElement();\n        fileInputElement.multiple = INPUT_MULTI[OPEN_TYPE[openType] || OPEN_TYPE.AUTO];\n        fileInputElement.accept = INPUT_ACCEPT[OPEN_TYPE[openType] || OPEN_TYPE.AUTO];\n\n        chooserOpenType = openType;\n        chooserPort = inSecondaryPort ? 1 : 0;\n        chooserAltPower = altPower;\n        chooserAsExpansion = asExpansion;\n        fileInputElement.click();\n    };\n\n    this.openURLChooserDialog = function (openType, altPower, inSecondaryPort, asExpansion) {\n        var port = inSecondaryPort ? 1 : 0;\n        var url;\n        try {\n            url = localStorage && localStorage[LOCAL_STORAGE_LAST_URL_KEY];\n        } catch (e) {\n            // give up\n        }\n\n        var wasPaused = console.systemPause(true);\n\n        url = prompt(\"Load file from URL:\", url || \"\");\n        url = url && url.toString().trim();\n\n        if (url) {\n            try {\n                localStorage[LOCAL_STORAGE_LAST_URL_KEY] = url;\n            } catch (e) {\n                // give up\n            }\n            this.readFromURL(url, openType, port, altPower, asExpansion, function () {\n                if (!wasPaused) console.systemPause(false);\n            });\n        } else {\n            if (!wasPaused) console.systemPause(false);\n        }\n    };\n\n    this.readFromFile = function (file, openType, port, altPower, asExpansion, then) {      // Auto detects type\n        jt.Util.log(\"Reading file: \" + file.name);\n        var reader = new FileReader();\n        reader.onload = function (event) {\n            var content = new Uint8Array(event.target.result);\n            var aFile = { name: file.name, content: content, lastModifiedDate: file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate };     // lastModifiedDate deprecated?\n            self.loadFromFile(aFile, openType, port, altPower, asExpansion);\n            if (then) then(true);\n        };\n        reader.onerror = function (event) {\n            showError(\"File reading error: \" + event.target.error.name + DIR_NOT_SUPPORTED_HINT);     // Directories not supported\n            if (then) then(false);\n        };\n\n        reader.readAsArrayBuffer(file);\n    };\n\n    this.readFromURL = function (url, openType, port, altPower, asExpansion, then) {\n        new jt.MultiDownloader(\n            [{ url: url }],\n            function onAllSuccess(urls) {\n                var aFile = { name: url, content: urls[0].content, lastModifiedDate: null };\n                self.loadFromFile(aFile, openType, port, altPower, asExpansion);\n                if (then) then(true);\n            },\n            function onAnyError(urls) {\n                showError(\"URL reading error: \" + urls[0].error);\n                if (then) then(false);\n            }\n        ).start();\n    };\n\n    this.readFromFiles = function (files, openType, port, altPower, asExpansion, then) {\n        var reader = new jt.MultiFileReader(files,\n            function onSuccessAll(files) {\n                self.loadFromFiles(files, openType, port, altPower, asExpansion);\n                if (then) then(true);\n            },\n            function onFirstError(files, error, known) {\n                if (!known) error += DIR_NOT_SUPPORTED_HINT;                  // Directories not supported\n                showError(\"File reading error: \" + error);\n                if (then) then(false);\n            }\n        );\n        reader.start();\n    };\n\n    this.loadFromContent = function(name, content, openType, port, altPower, asExpansion, format) {\n        return this.loadFromFile({ name: name, content: content }, openType, port, altPower, asExpansion, format);\n    };\n\n    this.loadFromFile = function(file, openType, port, altPower, asExpansion, format) {\n        var zip, mes;\n        zip = jt.Util.checkContentIsZIP(file.content);\n        if (zip) {\n            try {\n                // Try normal loading from files\n                var files = jt.Util.getZIPFilesSorted(zip);\n                if (tryLoadFilesAsMedia(files, openType, port, altPower, asExpansion, format, true)) return;\n            } catch(ez) {\n                jt.Util.error(ez);      // Error decompressing files. Abort\n            }\n        } else {\n            // Try normal loading from files\n            if (tryLoadFilesAsMedia([file], openType, port, altPower, asExpansion, format, false)) return;\n        }\n        showError(\"No valid \" + TYPE_DESC[openType] + \" found.\")\n    };\n\n    this.loadFromFiles = function(files, openType, port, altPower, asExpansion) {\n        // Sort files by name\n        files = jt.Util.asNormalArray(files).slice(0);\n        files.sort(function sortFiles(a, b) {\n            return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;\n        });\n\n        if (tryLoadFilesAsMedia(files, openType, port, altPower, asExpansion, null, false)) return;\n        showError(\"No valid \" + TYPE_DESC[openType] + \" found.\")\n    };\n\n    this.loadROM = function(rom, port, altPower, chooserAsExpansion) {\n        var cart = jt.CartridgeCreator.createCartridgeFromRom(rom);\n        if (!cart) return false;\n        cartridgeSocket.insert(cart, !altPower);\n        recentStoredROMs.storeROM(rom);\n        return true;\n    };\n\n    function tryLoadFilesAsMedia(files, openType, port, altPower, asExpansion, format, filesFromZIP) {\n        // Try as Single media (first found)\n        for (var i = 0; i < files.length; i++)\n            if (tryLoadFileAsSingleMedia(files[i], openType, port, altPower, asExpansion, format, filesFromZIP)) return true;\n        return false;\n    }\n\n    function tryLoadFileAsSingleMedia(file, openType, port, altPower, asExpansion, format, fileFromZIP, stopRecursion) {\n        try {\n            if (fileFromZIP && !file.content) file.content = file.asUint8Array();\n            var content = file.content;\n\n            if (!stopRecursion) {\n                var zip = jt.Util.checkContentIsZIP(content);\n                if (zip) {\n                    var files = jt.Util.getZIPFilesSorted(zip);\n                    for (var i = 0; i < files.length; i++)\n                        if (tryLoadFileAsSingleMedia(files[i], openType, port, altPower, asExpansion, format, true, true)) return true;\n                    return false;\n                }\n            }\n\n            var gzip = jt.Util.checkContentIsGZIP(content);\n            if (gzip) return tryLoadFileAsSingleMedia({ name: file.name, content: gzip }, openType, port, altPower, asExpansion, format, false, true);\n        } catch (ez) {\n            jt.Util.error(ez);      // Error decompressing files. Abort\n            return false;\n        }\n\n        return tryLoadContentAsSingleMedia(file.name, content, openType, port, altPower, asExpansion, format);\n    }\n\n    function tryLoadContentAsSingleMedia(name, content, openType, port, altPower, asExpansion, format) {\n        openType = openType || OPEN_TYPE.AUTO;\n        // Try as a SaveState file\n        if (openType === OPEN_TYPE.STATE || openType === OPEN_TYPE.AUTO)\n            if (saveStateSocket.loadStateFile(content)) return true;\n        // Try as Cartridge Data (SRAM, etc)\n        if (openType === OPEN_TYPE.CART_DATA || openType === OPEN_TYPE.AUTO)\n            if (cartridgeSocket.loadCartridgeData(port, name, content)) return true;\n        // Try to load as ROM (Cartridge)\n        if (openType === OPEN_TYPE.ROM || openType === OPEN_TYPE.AUTO) {\n            var rom = new jt.ROM(name, content, null, format);\n            return self.loadROM(rom, port, altPower, asExpansion);\n        }\n        // Not a valid content\n        return false;\n    }\n\n    function onFileInputChange(e) {\n        e.returnValue = false;  // IE\n        e.preventDefault();\n        e.stopPropagation();\n        e.target.focus();\n        if (!this.files || this.files.length === 0) return;           // this will have a property \"files\"!\n\n        var files = jt.Util.asNormalArray(this.files);\n\n        // Tries to clear the last selected file so the same file can be chosen\n        try {\n            fileInputElement.value = \"\";\n        } catch (ex) {\n            // Ignore\n        }\n\n        var wasPaused = console.systemPause(true);\n        var resume = function (s) {\n            if (!wasPaused) console.systemPause(false);\n        };\n\n        if (files && files.length > 0) {\n            if (files.length === 1)\n                self.readFromFile(files[0], chooserOpenType, chooserPort, chooserAltPower, chooserAsExpansion, resume);\n            else\n                self.readFromFiles(files, chooserOpenType, chooserPort, chooserAltPower, chooserAsExpansion, resume);\n        }\n\n        return false;\n    }\n\n    function onDragOver(e) {\n        e.returnValue = false;  // IE\n        e.preventDefault();\n        e.stopPropagation();\n\n        if (e.dataTransfer) {\n            if (Javatari.CARTRIDGE_CHANGE_DISABLED)\n                e.dataTransfer.dropEffect = \"none\";\n            else if (e.ctrlKey)\n                e.dataTransfer.dropEffect = \"copy\";\n            else if (e.altKey)\n                e.dataTransfer.dropEffect = \"link\";\n        }\n\n        dragButtons = e.buttons > 0 ? e.buttons : MOUSE_BUT1_MASK;      // If buttons not supported, consider it a left-click\n    }\n\n    function onDrop(e) {\n        e.returnValue = false;  // IE\n        e.preventDefault();\n        e.stopPropagation();\n        e.target.focus();\n\n        if (!e.dataTransfer) return;\n        if (peripheralControls.mediaChangeDisabledWarning()) return;\n\n        var wasPaused = console.systemPause(true);\n\n        var port = e.shiftKey ? 1 : 0;\n        var altPower = dragButtons & MOUSE_BUT2_MASK;\n        var asExpansion = e.ctrlKey;\n\n        var openType = OPEN_TYPE.AUTO;\n\n        // Try to get local file/files if present\n        var files = e.dataTransfer && e.dataTransfer.files;\n        var resume = function (s) {\n            if (!wasPaused) console.systemPause(false);\n        };\n        if (files && files.length > 0) {\n            if (files.length === 1)\n                self.readFromFile(files[0], openType, port, altPower, asExpansion, resume);\n            else\n                self.readFromFiles(files, openType, port, altPower, asExpansion, resume);\n        } else {\n            // If not, try to get URL\n            var url = e.dataTransfer.getData(\"text\");\n            if (url && url.length > 0)\n                self.readFromURL(url, openType, port, altPower, asExpansion, resume);\n            else\n                resume();\n        }\n    }\n\n    function showError(message) {\n        jt.Util.message(\"Could not load file(s):\\n\\n\" + message + \"\\n\");\n    }\n\n    function createFileInputElement() {\n        fileInputElement = document.createElement(\"input\");\n        fileInputElement.id = \"jt-file-loader-input\";\n        fileInputElement.type = \"file\";\n        fileInputElement.multiple = true;\n        fileInputElement.accept = INPUT_ACCEPT.AUTO;\n        fileInputElement.style.display = \"none\";\n        fileInputElement.addEventListener(\"change\", onFileInputChange);\n        fileInputElementParent.appendChild(fileInputElement);\n    }\n\n\n    var console;\n    var cartridgeSocket;\n    var saveStateSocket;\n\n    var fileInputElement;\n    var fileInputElementParent;\n\n    var chooserOpenType;\n    var chooserPort = 0;\n    var chooserAltPower = false;\n    var chooserAsExpansion = false;\n\n    var dragButtons = 1;\n\n    var MOUSE_BUT1_MASK = 1;\n    var MOUSE_BUT2_MASK = 2;\n\n\n    var OPEN_TYPE = jt.FileLoader.OPEN_TYPE;\n    this.OPEN_TYPE = OPEN_TYPE;                         // For the programatic interface\n\n    var INPUT_ACCEPT = {\n        ROM:   \".bin,.BIN,.rom,.ROM,.a26,.A26,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\",\n        STATE: \".jst,.JST\",\n        CART_DATA: \".dat,.DAT,.sram,.SRAM\",\n        AUTO:   \".bin,.BIN,.rom,.ROM,.a26,.A26,.jst,.JST,.zip,.ZIP,.gz,.GZ,.gzip,.GZIP\"\n    };\n\n    var INPUT_MULTI = {\n        ROM:   false,\n        STATE: false,\n        CART_DATA: false,\n        AUTO:   false\n    };\n\n    var TYPE_DESC = {\n        ROM:   \"ROM\",\n        STATE: \"Savestate\",\n        CART_DATA: \"Cartridge Data\",\n        AUTO:   \"ROM\"\n    };\n\n    var LOCAL_STORAGE_LAST_URL_KEY = \"javatarilasturl\";\n\n    var DIR_NOT_SUPPORTED_HINT = '\\n\\nIMPORTANT: Directories are not supported for loading!';\n\n    Javatari.fileLoader = this;\n\n};\n\njt.FileLoader.OPEN_TYPE = {  AUTO: \"AUTO\", ROM: \"ROM\", STATE: \"STATE\", CART_DATA: \"CART_DATA\" };"
  },
  {
    "path": "src/main/room/files/RecentStoredROMs.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.RecentStoredROMs = function() {\n\n    this.getCatalog = function() {\n        if (!storedList) {\n            try {\n                storedList = JSON.parse(localStorage.javataristoredromsicatalog);\n            } catch (e) {\n                // giveup\n            }\n            if (!storedList) initStore();\n        }\n        return storedList;\n    };\n\n    this.storeROM = function(rom) {\n        this.getCatalog();\n        var found = storedList.find(function(stored) { return stored && stored.h === rom.info.h; });\n\n        if (!found || (found.n != rom.info.l || found.f != rom.info.f)) {\n            getStoredROMs();\n            if (found) {\n                var oldIdx = storedList.indexOf(found);\n                storedList.splice(oldIdx, 1);\n                storedROMs.splice(oldIdx, 1);\n            } else if (storedList.length >= MAX_ITMES) {\n                storedList = storedList.slice(0, MAX_ITMES - 1);\n                storedROMs = storedROMs.slice(0, MAX_ITMES - 1);\n            }\n            storedList.unshift({ n: rom.info.l, h: rom.info.h, f: rom.info.f });\n            for (var i = 0; i < storedList.length; ++i) storedList[i].i = i;\n            localStorage.javataristoredromsicatalog = JSON.stringify(storedList);\n            storedROMs.unshift(rom.saveState(true));        // true: include content bytes\n            localStorage.javataristoredromsdata = JSON.stringify(storedROMs);\n            this.lastROMLoadedIndex = 0;\n            jt.Util.log(\"New ROM stored: \" + rom.info.n + \", \" + rom.info.h);\n        } else\n            this.lastROMLoadedIndex = storedList.indexOf(found);\n\n        localStorage.javataristoredromslastindex = this.lastROMLoadedIndex;\n    };\n\n    this.getROM = function(index) {\n        this.lastROMLoadedIndex = index;\n        localStorage.javataristoredromslastindex = index;\n        var romState = getStoredROMs()[index];\n        return romState ? jt.ROM.loadState(romState) : null;\n    };\n\n\n    function getStoredROMs() {\n        if (!storedROMs) {\n            try {\n                storedROMs = JSON.parse(localStorage.javataristoredromsdata);\n            } catch (e) {\n                // giveup\n            }\n            if (!storedROMs) initStore();\n        }\n        return storedROMs;\n    }\n\n    function initStore() {\n        storedList = [];\n        localStorage.javataristoredromsicatalog = JSON.stringify(storedList);\n        storedROMs = [];\n        localStorage.javataristoredromsdata = JSON.stringify(storedROMs);\n    }\n\n    var last = localStorage.javataristoredromslastindex;\n    this.lastROMLoadedIndex = last !== undefined ? Number.parseInt(last) : -1;\n\n    var storedList, storedROMs;\n\n    var MAX_ITMES = 10;\n\n};"
  },
  {
    "path": "src/main/room/netplay/NetClient.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.NetClient = function(room) {\n    \"use strict\";\n\n    var self = this;\n\n    this.joinSession = function(pSessionID, pNick) {\n        sessionIDToJoin = (\"\" + pSessionID).trim();\n        if (!sessionIDToJoin)\n            return room.showOSD(\"Must enter Session Name for joining NetPlay session\", true, true);\n\n        // Check for wsOnly indicator\n        var wsOnlyAsked;\n        if (sessionIDToJoin[sessionIDToJoin.length - 1] === \"@\") {\n            sessionIDToJoin  = sessionIDToJoin.substr(0, sessionIDToJoin.length -1);\n            wsOnlyAsked = true;\n        } else\n            wsOnlyAsked = false;\n\n        nickDesired = pNick;\n        wsOnlyDesired = wsOnlyAsked;\n\n        if (sessionID === sessionIDToJoin && nick === nickDesired && wsOnly === wsOnlyDesired) return;\n        if (sessionID) this.leaveSession(true);\n\n        room.enterNetPendingMode(this);\n\n        if (!ws) {\n            ws = new WebSocket(\"wss://\" + Javatari.SERVER_ADDRESS);\n            ws.onmessage = onSessionMessage;\n            ws.onopen = onSessionServerConnected;\n            ws.onclose = onSessionServerDisconnected;\n        } else\n            onSessionServerConnected();\n    };\n\n    this.leaveSession = function(wasError, userMessage) {\n        clearInterval(keepAliveTimer);\n        keepAliveTimer = undefined;\n\n        sessionID = nick = undefined;\n        wsOnly = false;\n\n        if (ws) {\n            ws.onopen = ws.onclose = ws.onmessage = undefined;\n            ws.close();\n            ws = undefined;\n        }\n        if (dataChannel) dataChannel.onopen = dataChannel.onclose = dataChannel.onmessage = undefined;\n        if (rtcConnection) rtcConnection.onicecandidate = rtcConnection.ondatachannel = undefined;\n\n        dataChannelActive = false;\n        dataChannelFragmentData = \"\";\n\n        if (wasError) stopRTC();\n        else setTimeout(stopRTC, 300);      // Give some time before ending RTC so Session Disconnection can be detected first by Server\n\n        room.showOSD(userMessage || \"NetPlay session ended\", true, wasError);\n        (wasError ? jt.Util.error : jt.Util.log) (userMessage || \"NetPlay session ended\");\n\n        room.enterStandaloneMode();\n    };\n\n    this.getSessionID = function() {\n        return sessionID;\n    };\n\n    this.netVideoClockPulse = function() {\n        // Client gets clocks from Server at onServerNetUpdate()\n    };\n\n    function onSessionServerConnected() {\n        // Setup keep-alive\n        if (keepAliveTimer === undefined) keepAliveTimer = setInterval(keepAlive, 30000);\n        // Join a Session\n        ws.send(JSON.stringify({\n            sessionControl: \"joinSession\", sessionType: \"javatari\", sessionID: sessionIDToJoin, clientNick: nickDesired, wsOnly: wsOnlyDesired,\n            queryVariables: [ \"RTC_CONFIG\" ]\n        }));\n    }\n\n    function onSessionServerDisconnected() {\n        self.leaveSession(true, keepAliveTimer ? \"NetPlay session ended: Connection lost\" : \"NetPlay: Connection error\");\n    }\n\n    function onSessionMessage(event) {\n        var message = JSON.parse(event.data);\n\n        if (message.javatariUpdate)\n            return onServerNetUpdate(JSON.parse(message.javatariUpdate));\n\n        if (message.sessionControl) {\n            switch (message.sessionControl) {\n                case \"sessionJoined\":\n                    onSessionJoined(message);\n                    return;\n                case \"sessionDestroyed\":\n                    self.leaveSession(false, 'NetPlay Session \"' + sessionID + '\" ended');\n                    return;\n                case \"joinError\":\n                    self.leaveSession(true, \"NetPlay: \" + message.errorMessage);\n                    return;\n            }\n            return;\n        }\n\n        if(message.serverSDP)\n            onServerSDP(message);\n    }\n\n    function onSessionJoined(message) {\n        sessionID = message.sessionID;\n        nick = message.clientNick;\n        wsOnly = wsOnlyDesired || message.wsOnly;\n        justJoined = true;\n\n        if (wsOnly) return enterNetClientMode();\n\n        try {\n            rtcConnectionConfig = JSON.parse(message.queriedVariables.RTC_CONFIG || \"{}\");\n        } catch (e) {}\n\n        // Start RTC\n        rtcConnection = new RTCPeerConnection(rtcConnectionConfig);\n\n        // Set up the ICE candidates\n        rtcConnection.onicecandidate = function(e) {\n            if (!e.candidate)\n                ws.send(JSON.stringify({ clientSDP: rtcConnection.localDescription }));\n        };\n\n        // Wait for data channel\n        rtcConnection.ondatachannel = function(event) {\n            dataChannel = event.channel;\n            dataChannel.onopen = onDataChannelOpen;\n            dataChannel.onclose = onDataChannelClose;\n            dataChannel.onmessage = onDataChannelMessage;\n        };\n    }\n\n    function enterNetClientMode() {\n        room.showOSD('NetPlay Session \"' + sessionID + '\" joined as \"' + nick + '\"', true);\n        jt.Util.log('NetPlay Session \"' + sessionID + '\" joined as \"' + nick + '\"');\n\n        consoleControls.netClearControlsToSend();\n        room.enterNetClientMode(self);\n    }\n\n    function onServerSDP(message) {\n        rtcConnection.setRemoteDescription(new RTCSessionDescription(message.serverSDP))\n            .then(function() { return rtcConnection.createAnswer(); })\n            .then(function(desc) { return rtcConnection.setLocalDescription(desc); })\n            .catch(onRTCError);\n    }\n\n    function onDataChannelOpen(event) {\n        dataChannelActive = true;\n        dataChannelFragmentData = \"\";\n        enterNetClientMode();\n    }\n\n    function onDataChannelClose(event) {\n        jt.Util.error(\"NetPlay dataChannel closed\");\n        self.leaveSession(true, \"NetPlay session ended: P2P connection lost\");\n    }\n\n    function onDataChannelMessage(event) {\n        var data = receiveFromDataChannel(event);\n        if (data) onServerNetUpdate(JSON.parse(data));\n    }\n\n    function onRTCError(error) {\n        jt.Util.error(\"NetPlay RTC error:\", error);\n        self.leaveSession(true, \"NetPlay session ended: P2P connection error\");\n    }\n\n    function stopRTC() {\n        if (dataChannel) {\n            dataChannel.onopen = dataChannel.onclose = dataChannel.onmessage = undefined;\n            dataChannel.close();\n            dataChannel = undefined;\n        }\n        if (rtcConnection) {\n            rtcConnection.onicecandidate = rtcConnection.ondatachannel = undefined;\n            rtcConnection.close();\n            rtcConnection = undefined;\n        }\n    }\n\n    function onServerNetUpdate(netUpdate) {\n        // console.log(netUpdate);\n\n        // Full Update?\n        if (netUpdate.s) {\n            atariConsole.loadState(netUpdate.s);    // extended\n            if (justJoined) {\n                // Change Controls Mode automatically to adapt to Server\n                room.consoleControls.setP1ControlsAndPaddleMode(!netUpdate.cm.p1, netUpdate.cm.pd);\n                justJoined = false;\n            }\n        } else {\n            // Apply controls changes from Server\n            if (netUpdate.c) consoleControls.netClientApplyControlsChanges(netUpdate.c);\n\n            // Send local (Client) Machine clock\n            atariConsole.videoClockPulseApplyPulldowns(netUpdate.v);\n        }\n\n        // Send clock do Controllers\n        atariConsole.getConsoleControlsSocket().controlsClockPulse();\n\n        // Send local controls to Server. We always send a message even when empty to keep the channel active\n        var update = { c: consoleControls.netGetControlsToSend() };\n\n        // Use DataChannel if available\n        if (dataChannelActive) dataChannel.send(JSON.stringify(update));\n        // Or fallback to WebSocket relayed through the Session Server (BAD!)\n        else ws.send(JSON.stringify({ javatariUpdate: update }));\n\n        consoleControls.netClearControlsToSend();\n    }\n\n    function keepAlive() {\n        try {\n            ws.send('{ \"sessionControl\": \"keep-alive\" }');\n        } catch (e) {\n            jt.Util.error(\"NetPlay error sending keep-alive\");\n            self.leaveSession(true, \"NetPlay session ended: Connection error\");\n        }\n    }\n\n    // Automatically reconstructs message fragments as needed. Data must be a String\n    function receiveFromDataChannel(event) {\n        var data = event.data;\n\n        var fragFlag = data.substr(0, 8);\n        if (fragFlag === DATA_CHANNEL_FRAG_PART || fragFlag === DATA_CHANNEL_FRAG_END) {\n            dataChannelFragmentData += data.substr(8);\n            if (fragFlag === DATA_CHANNEL_FRAG_END) {\n                data = dataChannelFragmentData;\n\n                // console.log(\"Fragmented message received: \" + data.length + \", fragments: \" + ((data.length / DATA_CHANNEL_FRAG_SIZE - 0.0001) | 0 + 1));\n\n                dataChannelFragmentData = \"\";\n                return data;\n            }\n        } else {\n            dataChannelFragmentData = \"\";\n            return data;\n        }\n    }\n\n\n    var atariConsole = room.console;\n    var consoleControls = room.consoleControls;\n\n    var ws;\n    var sessionID;\n    var sessionIDToJoin;\n    var nick;\n    var nickDesired;\n    var wsOnlyDesired = false;\n    var justJoined = false;\n    var keepAliveTimer;\n\n    var rtcConnectionConfig;\n    var wsOnly = false;\n\n    var rtcConnection;\n    var dataChannel;\n    var dataChannelActive = false;\n    var dataChannelFragmentData = \"\";\n\n\n    var DATA_CHANNEL_FRAG_SIZE = 16200;\n    var DATA_CHANNEL_FRAG_PART = \"#@FrgS@#\";\n    var DATA_CHANNEL_FRAG_END =  \"#@FrgE@#\";\n\n};\n\njt.NetClient.initKeepAlive = function() {\n    if (Javatari.SERVER_ADDRESS && Javatari.SERVER_KEEPALIVE) jt.NetClient.sendKeepAlive();\n};\n\njt.NetClient.sendKeepAlive = function() {\n    fetch(\"https://\" + Javatari.SERVER_ADDRESS + \"/keepalive\", { mode: \"no-cors\" })\n        .catch(function(e) {\n            jt.Util.error(\"Sending KeepAlive: \", e);\n        })\n        .finally(function() {\n            if (Javatari.SERVER_KEEPALIVE > 0) setTimeout(jt.NetClient.sendKeepAlive, Javatari.SERVER_KEEPALIVE);\n        });\n};"
  },
  {
    "path": "src/main/room/netplay/NetServer.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.NetServer = function(room) {\n    \"use strict\";\n\n    var self = this;\n\n    this.startSession = function(pSessionID) {\n        sessionIDToCreate = pSessionID ? (\"\" + pSessionID).trim() : undefined;\n\n        // Check for wsOnly indicator\n        var wsOnlyAsked;\n        if (sessionIDToCreate && sessionIDToCreate[sessionIDToCreate.length - 1] === \"@\") {\n            sessionIDToCreate  = sessionIDToCreate.substr(0, sessionIDToCreate.length -1);\n            wsOnlyAsked = true;\n        } else\n            wsOnlyAsked = false;\n\n        if (sessionIDToCreate && (sessionID === sessionIDToCreate) && (wsOnly === wsOnlyAsked)) return;\n        if (sessionID) this.stopSession(true);\n\n        room.enterNetPendingMode(this);\n\n        wsOnly = wsOnlyAsked;\n\n        if (!ws) {\n            ws = new WebSocket(\"wss://\" + Javatari.SERVER_ADDRESS);\n            ws.onmessage = onSessionMessage;\n            ws.onopen = onSessionServerConnected;\n            ws.onclose = onSessionServerDisconnected;\n        } else\n            onSessionServerConnected();\n    };\n\n    this.stopSession = function(wasError, userMessage) {\n        clearInterval(keepAliveTimer);\n        keepAliveTimer = undefined;\n\n        if (ws) {\n            ws.onmessage = ws.onopen = ws.onclose = undefined;\n            ws.close();\n            ws = undefined;\n        }\n\n        if (wasError) dropAllClients();\n        else setTimeout(dropAllClients, 300);      // Give some time before ending RTC so Session ending can be detected first by Clients\n\n        room.showOSD(userMessage || 'NetPlay Session \"' + sessionID + '\" stopped', true, wasError);\n        (wasError ? jt.Util.error : jt.Util.log) (userMessage || 'NetPlay Session \"' + sessionID + '\" stopped');\n\n        sessionID = undefined;\n        room.enterStandaloneMode();\n    };\n\n    this.getSessionID = function() {\n        return sessionID;\n    };\n\n    this.netVideoClockPulse = function() {\n        // Send clock do Controllers\n        atariConsole.getConsoleControlsSocket().controlsClockPulse();\n\n        // Send local (Server) Machine clock\n        var videoPulls = atariConsole.videoClockPulseGetNextPulldowns();\n        atariConsole.videoClockPulseApplyPulldowns(videoPulls);\n\n        // Send net clock update to all Clients\n        var data, dataFull, dataNormal;\n        for (var cNick in clients) {\n            var client = clients[cNick];\n            if (!client.wsOnly && !client.dataChannelActive) continue;\n\n            if (client.justJoined || nextUpdateFull) {\n                client.justJoined = false;\n                if (!dataFull) {\n                    var netUpdateFull = {\n                        s: atariConsole.saveState(true),     // extended\n                        cm: { p1: room.consoleControls.isP1ControlsMode(), pd: room.consoleControls.isPaddleMode() }\n                    };\n                    dataFull = JSON.stringify(netUpdateFull);\n                }\n                data = dataFull;\n            } else {\n                if (!dataNormal) {\n                    netUpdate.c = consoleControls.netGetControlsToSend();\n                    netUpdate.v = videoPulls;\n                    dataNormal = JSON.stringify(netUpdate);\n                }\n                data = dataNormal;\n            }\n\n            try {\n                // Use DataChannel if available\n                if (client.dataChannelActive) sendToDataChannel(client.dataChannel, data);\n                // Or fallback to WebSocket relayed through the Session Server (BAD!)\n                else ws.send(JSON.stringify({ toClientNick: client.nick, javatariUpdate: data }));\n            } catch (e) {\n                dropClient(client, true, true, 'NetPlay client \"' + client.nick + '\" dropped: P2P error sending data');\n            }\n        }\n\n        nextUpdateFull = false;\n        consoleControls.netClearControlsToSend();\n    };\n\n    this.processExternalStateChange = function() {\n        nextUpdateFull = true;\n    };\n\n    function onSessionServerConnected() {\n        // Setup keep-alive\n        if (keepAliveTimer === undefined) keepAliveTimer = setInterval(keepAlive, 30000);\n        // Start a new Session\n        var command = { sessionControl: \"createSession\", sessionType: \"javatari\", wsOnly: wsOnly, queryVariables: [ \"RTC_CONFIG\", \"RTC_DATA_CHANNEL_CONFIG\" ] };\n        if (sessionIDToCreate) command.sessionID = sessionIDToCreate;\n        ws.send(JSON.stringify(command));\n    }\n\n    function onSessionServerDisconnected() {\n        self.stopSession(true, keepAliveTimer ? \"NetPlay Session stopped: Connection lost\" : \"NetPlay: Connection error\");\n    }\n\n    function onSessionMessage(event) {\n        var message = JSON.parse(event.data);\n\n        if (message.javatariUpdate)\n            return onClientNetUpdate(message.javatariUpdate);\n\n        if (message.sessionControl) {\n            switch (message.sessionControl) {\n                case \"sessionCreated\":\n                    onSessionCreated(message);\n                    return;\n                case \"clientJoined\":\n                    onClientJoined(message);\n                    return;\n                case \"clientLeft\":\n                    onClientLeft(message);\n                    return;\n                case \"createError\":\n                    self.stopSession(true, \"NetPlay: \" + message.errorMessage);\n                    return;\n            }\n            return;\n        }\n\n        if(message.clientSDP)\n            onClientSDP(message);\n    }\n\n    function onSessionCreated(message) {\n        try {\n            rtcConnectionConfig = JSON.parse(message.queriedVariables.RTC_CONFIG || \"{}\");\n        } catch (e) {}\n        try {\n            dataChannelConfig = JSON.parse(message.queriedVariables.RTC_DATA_CHANNEL_CONFIG || \"{}\");\n        } catch (e) {}\n\n        sessionID = message.sessionID;\n        consoleControls.netClearControlsToSend();\n        room.enterNetServerMode(self);\n\n        room.showOSD('NetPlay session \"' + message.sessionID + '\" started', true);\n        jt.Util.log('NetPlay session \"' + message.sessionID + '\" started');\n    }\n\n    function onClientJoined(message) {\n        var client = { nick: message.clientNick, justJoined: true, wsOnly: wsOnly || !!message.wsOnly };\n        clients[client.nick] = client;\n\n        room.showOSD('NetPlay client \"' + client.nick + '\" joined', true);\n        jt.Util.log('NetPlay client \"' + client.nick + '\" joined');\n\n        // Use RTC?\n        if (client.wsOnly) return;\n\n        // Start RTC\n        var rtcConnection = new RTCPeerConnection(rtcConnectionConfig);\n        client.rtcConnection = rtcConnection;\n\n        rtcConnection.onicecandidate = function(e) {\n            if (!e.candidate) {\n                jt.Util.log(\"Server SDP for client \" + client.nick + \":\", rtcConnection.localDescription);\n\n                ws.send(JSON.stringify({toClientNick: client.nick, serverSDP: rtcConnection.localDescription}));\n            }\n        };\n\n        var dataChannel = rtcConnection.createDataChannel(\"dataChannel\", dataChannelConfig );\n        client.dataChannel = dataChannel;\n        dataChannel.onopen = function(event) { onDataChannelOpen(client, event) };\n        dataChannel.onclose = function(event) { onDataChannelClose(client, event) };\n        dataChannel.onmessage = function(event) { onDataChannelMessage(client, event) };\n\n        // Create an offer to connect\n        rtcConnection.createOffer()\n            .then(function(desc) { return rtcConnection.setLocalDescription(desc); })\n            .catch( function(error) { onRTCError(client, error); });\n    }\n\n    function onClientLeft(message) {\n        var client = clients[message.clientNick];\n        if (!client) return;\n\n        dropClient(client, true, false, 'NetPlay client \"' + client.nick + '\" left');\n    }\n\n    function onClientSDP(message) {\n        var client = clients[message.fromClientNick];\n        if (!client) return;\n\n        jt.Util.log(\"Client SDP from client \" + client.nick + \":\", message.clientSDP);\n\n        client.rtcConnection.setRemoteDescription(new RTCSessionDescription(message.clientSDP))\n            .catch(onRTCError);\n    }\n\n    function onDataChannelOpen(client, event) {\n        jt.Util.log(\"Client \" + client.nick + \" dataChannel open\");\n\n        client.dataChannelActive = true;\n    }\n\n    function onDataChannelClose(client, event) {\n        jt.Util.error(\"NetPlay Client \" + client.nick + \" dataChannel closed\");\n        dropClient(client, true, true, 'NetPlay client \"' + client.nick + '\" dropped: P2P connection lost');\n    }\n\n    function onDataChannelMessage(client, event) {\n        onClientNetUpdate(JSON.parse(event.data));\n    }\n\n    function onRTCError(client, error) {\n        jt.Util.error(\"NetPlay Client \" + client.nick + \" RTC error:\", error);\n        dropClient(client, true, true, 'NetPlay client \"' + client.nick + '\" dropped: P2P connection error');\n    }\n\n    function dropAllClients() {\n        for (var cID in clients)\n            dropClient(clients[cID], false);\n    }\n\n    function dropClient(client, showMessage, wasError, userMessage) {\n        if (showMessage) {\n            room.showOSD(userMessage || 'NetPlay client \"' + client.nick + '\" left', true, wasError);\n            (wasError ? jt.Util.error : jt.Util.log) (userMessage || 'NetPlay client \"' + client.nick + '\" left');\n        }\n\n        if (client.dataChannel) {\n            client.dataChannel.onopen = client.dataChannel.onclose = client.dataChannel.onmessage = undefined;\n            client.dataChannel.close();\n        }\n        if (client.rtcConnection) {\n            client.rtcConnection.onicecandidate = undefined;\n            client.rtcConnection.close();\n        }\n        delete clients[client.nick];\n    }\n\n    function onClientNetUpdate(netUpdate) {\n        // console.log(netUpdate);\n        // client.lastUpdate = netUpdate;\n\n        // Process Controls changes as if they were local controls immediately\n        if (netUpdate.c) consoleControls.netServerProcessControlsChanges(netUpdate.c);\n    }\n\n    function keepAlive() {\n        try {\n            ws.send('{ \"sessionControl\": \"keep-alive\" }');\n        } catch (e) {\n            jt.Util.error(\"NetPlay error sending keep-alive\");\n            self.stopSession(true, \"NetPlay Session stopped: connection error\");\n        }\n    }\n\n    // Automatically fragments message if needed. Data must be a String\n    function sendToDataChannel(dataChannel, data) {\n        var len = data.length;\n\n        if (len < MAX_DATA_CHANNEL_SIZE)\n            return dataChannel.send(data);\n\n        var c = 0;\n        var p = 0;\n        while (true) {\n            var frag = data.substr(p, DATA_CHANNEL_FRAG_SIZE);\n            p += DATA_CHANNEL_FRAG_SIZE;\n            c++;\n            if (p < len)\n                dataChannel.send(DATA_CHANNEL_FRAG_PART + frag);\n            else {\n                dataChannel.send(DATA_CHANNEL_FRAG_END + frag);\n\n                // console.log(\"Fragmented message sent: \" + data.length, + \", fragments: \" + c);\n\n                return;\n            }\n        }\n    }\n\n\n    var atariConsole = room.console;\n    var consoleControls = room.consoleControls;\n\n    var netUpdate = { v: 0, c: undefined };\n    var nextUpdateFull = false;\n\n    var ws;\n    var sessionID;\n    var sessionIDToCreate;\n    var keepAliveTimer;\n    var clients = {};\n    var wsOnly = false;\n\n    var rtcConnectionConfig;\n    var dataChannelConfig;\n\n\n    var MAX_DATA_CHANNEL_SIZE = 16300;\n    var DATA_CHANNEL_FRAG_SIZE = 16200;\n    var DATA_CHANNEL_FRAG_PART = \"#@FrgS@#\";\n    var DATA_CHANNEL_FRAG_END =  \"#@FrgE@#\";\n\n};\n"
  },
  {
    "path": "src/main/room/savestate/LocalStorageSaveStateMedia.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.LocalStorageSaveStateMedia = function(room) {\n\"use strict\";\n\n    this.connect = function(socket) {\n        socket.connectMedia(this);\n    };\n\n    this.connectPeripherals = function(pFileDownloader) {\n        fileDownloader = pFileDownloader;\n    };\n\n    this.isSlotUsed = function(slot) {\n        return localStorage[\"javatarisave\" + slot] !== undefined;\n    };\n\n    this.saveState = function(slot, state) {\n        var data = buildDataFromState(state);\n        return data && saveToLocalStorage(\"save\" + slot, data);\n    };\n\n    this.loadState = function(slot) {\n        var data = loadFromLocalStorage(\"save\" + slot);\n        return buildStateFromData(data);\n    };\n\n    this.saveStateFile = function(fileName, state) {\n        if (checkDenyNetPlayOperation()) return;\n\n        var data = buildDataFromState(state);\n        if (data) fileDownloader.startDownloadBinary((fileName || \"Javatari SaveState\") + SAVE_STATE_FILE_EXTENSION, data, \"System State file\");\n    };\n\n    this.loadStateFile = function(data) {\n        if (checkDenyNetPlayOperation()) return;\n\n        return buildStateFromData(data);\n    };\n\n    this.saveResource = function(entry, data) {\n        try {\n            var res = data && JSON.stringify(data);\n            return saveToLocalStorage(\"res\" + entry, res);\n        } catch(ex) {\n            // give up\n        }\n    };\n\n    this.loadResource = function(entry) {\n        try {\n            var res = loadFromLocalStorage(\"res\" + entry);\n            return res && JSON.parse(res);\n        } catch(ex) {\n            // give up\n        }\n    };\n\n    this.externalStateChange = function() {\n        // Let the NetPlay Server know\n        if (room.netPlayMode === 1) room.netController.processExternalStateChange();\n    };\n\n    var saveToLocalStorage = function(entry, data) {\n        if (checkDenyNetPlayOperation()) return true;\n\n        try {\n            localStorage[\"javatari\" + entry] = data;\n            return true;\n        } catch (ex) {\n            jt.Util.error(ex);\n            return false;\n        }\n    };\n\n    var loadFromLocalStorage = function(entry) {\n        if (checkDenyNetPlayOperation()) return;\n\n        try {\n            return localStorage[\"javatari\" + entry];\n        } catch (ex) {\n            jt.Util.warning(ex);\n            // give up\n        }\n    };\n\n    var buildDataFromState = function(state) {\n        try {\n            return SAVE_STATE_IDENTIFIER + JSON.stringify(state);\n        } catch(ex) {\n            jt.Util.error(ex);\n            // give up\n        }\n    };\n\n    var buildStateFromData = function (data) {\n        try {\n            var id;\n            if (typeof data == \"string\")\n                id = data.substr(0, SAVE_STATE_IDENTIFIER.length);\n            else\n                id = jt.Util.int8BitArrayToByteString(data, 0, SAVE_STATE_IDENTIFIER.length);\n\n            // Check for the identifier\n            if (id !== SAVE_STATE_IDENTIFIER && id !== SAVE_STATE_IDENTIFIER_OLD) return;\n\n            var stateData;\n            if (typeof data == \"string\")\n                stateData = data.slice(SAVE_STATE_IDENTIFIER.length);\n            else\n                stateData = jt.Util.int8BitArrayToByteString(data, SAVE_STATE_IDENTIFIER.length);\n\n            return stateData && JSON.parse(stateData);\n        } catch(ex) {\n            jt.Util.error(ex);\n        }\n    };\n\n    function checkDenyNetPlayOperation() {\n        // Do not perform operation during NetPlay Client mode\n        return room.netPlayMode === 2;\n    }\n\n    var fileDownloader;\n\n    var SAVE_STATE_IDENTIFIER = String.fromCharCode(0, 0) + \"javataristate!\";     // char 0 so browsers like Safari think the file is binary...  :-(\n    var SAVE_STATE_IDENTIFIER_OLD = \"javatarijsstate!\";\n    var SAVE_STATE_FILE_EXTENSION = \".jst\";\n\n};\n"
  },
  {
    "path": "src/main/room/screen/CanvasDisplay.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// TODO Remove \"Center\" rounding problems as possible. Main screen element centering still remaining\n// TODO Possible to use hotkeys and bypass logo messages\n\njt.CanvasDisplay = function(room, mainElement) {\n\"use strict\";\n\n    var self = this;\n\n    function init() {\n        jt.Util.insertCSS(jt.ScreenGUI.css());\n        delete jt.ScreenGUI.css;\n        setupMain();\n        setupBar();\n        setupFullscreen();\n        consolePanel = new jt.ConsolePanel(self, consolePanelElement);\n        monitor = new jt.Monitor(self);\n    }\n\n    this.connect = function(pConsole) {\n        atariConsole = pConsole;\n        monitor.connect(atariConsole.getVideoOutput());\n        consoleControlsSocket = atariConsole.getConsoleControlsSocket();\n        cartridgeSocket = atariConsole.getCartridgeSocket();\n        consolePanel.connect(consoleControlsSocket);\n    };\n\n    this.connectPeripherals = function(pRecentROMs, pFileLoader, pFileDownloader, pConsoleControls, pPeripheralControls, pStateMedia) {\n        recentROMs = pRecentROMs;\n        fileLoader = pFileLoader;\n        pFileLoader.registerForDnD(fsElement);\n        pFileLoader.registerForFileInputElement(fsElement);\n        fileDownloader = pFileDownloader;\n        fileDownloader.registerForDownloadElement(fsElement);\n        peripheralControls = pPeripheralControls;\n        consoleControls = pConsoleControls;\n        consoleControls.addKeyInputElement(fsElement);\n        stateMedia = pStateMedia;\n        consolePanel.connectPeripherals(pFileLoader, consoleControls, peripheralControls);\n    };\n\n    this.powerOn = function() {\n        monitor.setDefaults();\n        updateLogo();\n        document.documentElement.classList.add(\"jt-started\");\n        setPageVisibilityHandling();\n        this.focus();\n        if (JavatariFullScreenSetup.shouldStartInFullScreen()) {\n            setFullscreenState(true);\n            setEnterFullscreenByAPIOnFirstTouch();\n        }\n    };\n\n    this.powerOff = function() {\n        document.documentElement.classList.remove(\"jt-started\");\n    };\n\n    this.start = function(startAction) {\n        // Show mobile messages or start automatically\n        if (isMobileDevice && !isBrowserStandalone && !isFullscreen) {\n            // Install as App message\n            if (jt.Util.isOfficialHomepage())\n                showLogoMessage('For ' + (fullscreenAPIEnterMethod ? 'the best' : 'a full-screen') + ' experience, use<br>the \"Add to Home Screen\" function<br>then launch from the Installed App', \"NICE!\", false, startActionInFullScreen);\n            // Go fullscreen message\n            else\n                showLogoMessage('For the best experience,<br>Javatari will go full-screen', \"GO!\", true, startActionInFullScreen);\n        } else\n            startAction();\n\n        function startActionInFullScreen() {\n            self.setFullscreen(true);\n            startAction();\n        }\n    };\n\n    this.refresh = function(image, sourceWidth, sourceHeight) {\n        // Hide mouse cursor if not moving for some time\n        if (cursorHideFrameCountdown > 0)\n            if (--cursorHideFrameCountdown <= 0) hideCursorAndBar();\n\n        // If needed, turn signal on and hide logo\n        if (!signalIsOn) {\n            signalIsOn = true;\n            updateLogo();\n        }\n\n        // Update frame\n        if (!canvasContext) createCanvasContext();\n        canvasContext.drawImage(\n            image,\n            0, 0,\n            canvas.width, canvas.height\n        );\n\n        //console.log(\"\" + sourceWidth + \"x\" + sourceHeight + \" > \" + targetWidth + \"x\" + targetHeight);\n    };\n\n    this.videoSignalOff = function() {\n        signalIsOn = false;\n        showCursorAndBar();\n        updateLogo();\n    };\n\n    this.mousePointerLocked = function(state) {\n        mousePointerLocked = state;\n        if (mousePointerLocked) hideCursorAndBar();\n        else showCursorAndBar();\n    };\n\n    this.openHelp = function() {\n        self.openSettings(\"GENERAL\");\n        return false;\n    };\n\n    this.openAbout = function() {\n        self.openSettings(\"ABOUT\");\n        return false;\n    };\n\n    this.openSettings = function(page) {\n        closeAllOverlays();\n        if (!settingsDialog) settingsDialog = new jt.SettingsDialog(fsElementCenter, consoleControls);\n        settingsDialog.show(page);\n    };\n\n    this.openSaveStateDialog = function(save) {\n        closeAllOverlays();\n        if (!saveStateDialog) saveStateDialog = new jt.SaveStateDialog(fsElementCenter, consoleControls, peripheralControls, stateMedia);\n        saveStateDialog.show(save);\n    };\n\n    this.openQuickOptionsDialog = function() {\n        closeAllOverlays();\n        if (!quickOtionsDialog) quickOtionsDialog = new jt.QuickOptionsDialog(fsElementCenter, consoleControls, consoleControlsSocket, peripheralControls);\n        quickOtionsDialog.show();\n    };\n\n    this.openNetPlayDialog = function() {\n        closeAllOverlays();\n        if (!netPlayDialog) netPlayDialog = new jt.NetPlayDialog(room, fsElementCenter);\n        netPlayDialog.show();\n    };\n\n    this.openCartridgeFormatDialog = function(altPower) {\n        closeAllOverlays();\n        if (!cartFormatDialog) cartFormatDialog = new jt.CartridgeFormatDialog(this, fsElementCenter, atariConsole, cartridgeSocket);\n        cartFormatDialog.show(altPower);\n    };\n\n    this.openLoadFileDialog = function(altPower, secPort) {\n        fileLoader.openFileChooserDialog(jt.FileLoader.OPEN_TYPE.AUTO, altPower, secPort, false);\n    };\n\n    this.openRecentROMsDialog = function () {\n        closeAllOverlays();\n        if (!recentROMsDialog) recentROMsDialog = new jt.RecentROMsDialog(fsElementCenter, this, recentROMs, fileLoader);\n        recentROMsDialog.show();\n    };\n\n    this.openCartridgeChooserDialog = function (force, altPower, secPort) {\n        if (logoMessageActive) self.closeLogoMessage();      // May be invoked directly from outside!\n        if (!force && recentROMs.getCatalog().length === 0) this.openLoadFileDialog(altPower, secPort);\n        else this.openRecentROMsDialog();\n    };\n\n    this.toggleConsolePanel = function() {\n        if (isFullscreen && isLandscape) consolePanelActiveLandscape = !consolePanelActiveLandscape;\n        else consolePanelActivePortrait = !consolePanelActivePortrait;\n        consolePanelUpdateForOrientation();\n    };\n\n    this.getControlReport = function(control) {\n        // Only CRT Filter for now\n        return { label: crtFilter === -2 ? \"Browser\" : crtFilter === -1 ? \"Auto\" : crtFilter === 0 ? \"OFF\" : \"Level \" + crtFilter, active: crtFilter >= 0 };\n    };\n\n    function consolePanelUpdateForOrientation() {\n        setConsolePanelActive(isFullscreen && isLandscape ? consolePanelActiveLandscape : consolePanelActivePortrait);\n    }\n\n    function setConsolePanelActive(active) {\n        if (consolePanelActive === active) return;\n        consolePanelActive = active;\n        consolePanel.setActive(consolePanelActive);\n        updateScale();\n        if (consolePanelActive) showBar();\n        else cursorHideFrameCountdown = CURSOR_HIDE_FRAMES;\n    }\n\n    this.toggleMenuByKey = function() {\n        if (barMenuActive) hideBarMenu();\n        else {\n            closeAllOverlays();\n            showBarMenu(barMenuSystem, true);\n        }\n    };\n\n    this.getScreenCapture = function() {\n        if (!signalIsOn) return;\n        return canvas.toDataURL('image/png');\n    };\n\n    this.saveScreenCapture = function() {\n        var cap = this.getScreenCapture();\n        if (cap) fileDownloader.startDownloadURL(\"Javatari Screen\", cap, \"Screen Capture\");\n    };\n\n    this.displayMetrics = function (pTargetWidth, pTargetHeight) {\n        // No need to resize display if target size is unchanged\n        if (targetWidth === pTargetWidth && targetHeight === pTargetHeight) return;\n\n        targetWidth = pTargetWidth;\n        targetHeight = pTargetHeight;\n        updateCanvasContentSize();\n        if (isFullscreen) this.requestReadjust(true);\n        else updateScale();\n    };\n\n    this.displayScale = function(pAspectX, pScaleY) {\n        aspectX = pAspectX;\n        scaleY = pScaleY;\n        updateScale();\n    };\n\n    this.getMonitor = function() {\n        return monitor;\n    };\n\n    this.showOSD = function(message, overlap, error) {\n        if (osdTimeout) clearTimeout(osdTimeout);\n        if (!message) {\n            osd.style.transition = \"all 0.15s linear\";\n            osd.style.top = \"-29px\";\n            osd.style.opacity = 0;\n            osdShowing = false;\n            return;\n        }\n        if (overlap || !osdShowing) {\n            osd.innerHTML = message;\n            osd.style.color = error ? \"rgb(255, 60, 40)\" : \"rgb(0, 255, 0)\";\n        }\n        osd.style.transition = \"none\";\n        osd.style.top = \"15px\";\n        osd.style.opacity = 1;\n        osdShowing = true;\n\n        var availWidth = canvasOuter.clientWidth - 30;      //  message width - borders\n        var width = osd.clientWidth;\n        var scale = width < availWidth ? 1 : availWidth / width;\n        osd.style.transform = \"scale(\" + scale.toFixed(4) + \")\";\n\n        osdTimeout = setTimeout(hideOSD, OSD_TIME);\n    };\n\n    this.displayDefaultScale = function() {\n        if (Javatari.SCREEN_DEFAULT_SCALE > 0) return Javatari.SCREEN_DEFAULT_SCALE;\n\n        var maxWidth = Number.parseFloat(window.getComputedStyle(mainElement.parentElement).width);\n\n        //atariConsole.error(\">>> Parent width: \" + maxWidth);\n\n        return maxWidth >= 640 ? 2.0 : maxWidth >= 540 ? 1.65 : maxWidth >= 420 ? 1.25 : maxWidth >= 355 ? 1.05 : maxWidth >= 340 ? 1 : maxWidth >= 300 ? 0.9 : 0.8;\n    };\n\n    function hideOSD() {\n        osd.style.transition = \"all 0.15s linear\";\n        osd.style.top = \"-29px\";\n        osd.style.opacity = 0;\n        osdShowing = false;\n    }\n\n    this.setDebugMode = function(boo) {\n        debugMode = !!boo;\n        canvasContext = null;\n    };\n\n    this.crtFilterToggle = function() {\n        var newLevel = crtFilter + 1; if (newLevel > 3) newLevel = -2;\n        setCRTFilter(newLevel);\n        var levelDesc = crtFilterEffective === null ? \"browser default\" : crtFilterEffective < 1 ? \"OFF\" : \"level \" + crtFilterEffective;\n        this.showOSD(\"CRT filter: \" + (crtFilter === -1 ? \"AUTO (\" + levelDesc + \")\" : levelDesc), true);\n\n        // Persist\n        if (Javatari.userPreferences.current.crtFilter !== crtFilter) {\n            Javatari.userPreferences.current.crtFilter = crtFilter;\n            Javatari.userPreferences.setDirty();\n            Javatari.userPreferences.save();\n        }\n    };\n\n    this.crtFilterSetDefault = function() {\n        var user = Javatari.userPreferences.current.crtFilter;\n        setCRTFilter(Javatari.SCREEN_FILTER_MODE !== -3 ? Javatari.SCREEN_FILTER_MODE : user !== null && user > -3 ? user : -1);\n    };\n\n    this.crtModeToggle = function() {\n        var newMode = crtMode + 1; if (newMode > 1) newMode = -1;\n        setCRTMode(newMode);\n        var effectDesc = crtModeEffective === 1 ? \"Phosphor\" : \"OFF\";\n        this.showOSD(\"CRT mode: \" + (crtMode === -1 ? \"AUTO (\" + effectDesc + \")\" : effectDesc), true);\n    };\n\n    this.crtModeSetDefault = function() {\n        setCRTMode(Javatari.SCREEN_CRT_MODE);\n    };\n\n    this.displayToggleFullscreen = function() {                 // Only and Always user initiated\n        if (FULLSCREEN_MODE === -2) return;\n\n        // If FullScreenAPI supported but not active, enter full screen by API regardless of previous state\n        if (fullscreenAPIEnterMethod && !isFullScreenByAPI()) {\n            enterFullScreenByAPI();\n            return;\n        }\n\n        // If not, toggle complete full screen state\n        this.setFullscreen(!isFullscreen);\n    };\n\n    this.setFullscreen = function(mode) {\n        if (fullscreenAPIEnterMethod) {\n            if (mode) enterFullScreenByAPI();\n            else exitFullScreenByAPI();\n        } else\n            setFullscreenState(mode)\n    };\n\n    this.focus = function() {\n        canvas.focus();\n    };\n\n    this.consolePowerAndUserPauseStateUpdate = function(power, paused) {\n        if (isLoading) power = false;\n        powerButton.style.backgroundPosition = \"\" + powerButton.jtBX + \"px \" + (mediaButtonBackYOffsets[power ? 2 : 1]) + \"px\";\n        powerButton.jtMenu[0].label = \"Power \" + (power ? \"OFF\" : \"ON\");\n\n        var netDisable = room.netPlayMode === 2;\n        powerButton.jtMenu[1].disabled = powerButton.jtMenu[12].disabled = netDisable || !power;\n        powerButton.jtMenu[6].disabled = netDisable || !(cartridgeSocket && cartridgeSocket.inserted());\n        powerButton.jtMenu[5].disabled = powerButton.jtMenu[8].disabled = powerButton.jtMenu[9].disabled = powerButton.jtMenu[11].disabled = netDisable;\n    };\n\n    this.cartridgeInserted = function(cart) {\n        consolePanel.cartridgeInserted(cart);\n        powerButton.jtMenu[6].disabled = !cart || room.netPlayMode === 2;\n    };\n\n    this.controlsModeStateUpdate = function () {\n        if(settingsDialog) settingsDialog.controlsModeStateUpdate();\n        if(quickOtionsDialog) quickOtionsDialog.controlsModeStateUpdate();\n    };\n\n    this.touchControlsActiveUpdate = function(active, dirBig) {\n        if (touchControlsActive === active && touchControlsDirBig === dirBig) return;\n        touchControlsActive = active;\n        touchControlsDirBig = dirBig;\n        if (isFullscreen) {\n            if (touchControlsActive) consoleControls.setupTouchControlsIfNeeded(fsElementCenter);\n            this.requestReadjust(true);\n        }\n    };\n\n    this.roomNetPlayStatusChangeUpdate = function(oldMode) {\n        if (!netPlayDialog || !netPlayDialog.isVisible()) closeAllOverlays();\n        if (netPlayDialog) netPlayDialog.roomNetPlayStatusChangeUpdate(oldMode);\n        netplayButton.classList.toggle(\"jt-hidden\", room.netPlayMode < 1);\n    };\n\n    this.controlStateChanged = function(control, state) {\n        consolePanel.controlStateChanged(control, state);\n        if (quickOtionsDialog) quickOtionsDialog.controlStateChanged(control, state);\n    };\n\n    this.controlsStatesRedefined = function() {\n        consolePanel.controlsStatesRedefined();\n    };\n\n    this.speakerUnlockStateUpdate = function(state) {\n        unmuteMessage.classList.toggle(\"jt-show\", !state);\n\n        if (!state) {\n            var availWidth = canvasOuter.clientWidth - 30;      //  message width - borders\n            var width = unmuteMessage.clientWidth;\n            var scale = width < availWidth ? 1 : availWidth / width;\n            unmuteMessage.style.transform = \"translate(-50%, 0) scale(\" + scale.toFixed(4) + \")\";\n        }\n    };\n\n    this.setLoading = function(state) {\n        isLoading = state;\n        updateLoading();\n    };\n\n    this.requestReadjust = function(now) {\n        if (settingsDialog && settingsDialog.isVisible()) settingsDialog.position();\n        if (now)\n            readjustAll(true);\n        else {\n            readjustRequestTime = jt.Util.performanceNow();\n            if (!readjustInterval) readjustInterval = setInterval(readjustAll, 50);\n        }\n    };\n\n    function releaseControllersOnLostFocus() {\n        consoleControlsSocket.releaseControllers();\n    }\n\n    function hideCursorAndBar() {\n        hideCursor();\n        hideBar();\n        cursorHideFrameCountdown = -1;\n    }\n\n    function showCursorAndBar(forceBar) {\n        showCursor();\n        if (forceBar || !mousePointerLocked) showBar();\n        cursorHideFrameCountdown = CURSOR_HIDE_FRAMES;\n    }\n\n    function showCursor() {\n        if (!cursorShowing) {\n            fsElement.style.cursor = cursorType;\n            cursorShowing = true;\n        }\n    }\n\n    function hideCursor() {\n        if (cursorShowing) {\n            fsElement.style.cursor = \"none\";\n            cursorShowing = false;\n        }\n    }\n\n    function fullscreenByAPIChanged() {\n        var prevFSState = isFullscreen;\n        var newAPIState = isFullScreenByAPI();\n\n        // Return to window interface mode if user asked or not in standalone mode\n        if (newAPIState || fullScreenAPIExitUserRequested || !isBrowserStandalone) setFullscreenState(newAPIState);\n        else self.requestReadjust();\n\n        // If console not paused and on mobile, set message to resume, or set event to return to full screen\n        if (prevFSState && !newAPIState && !fullScreenAPIExitUserRequested && isMobileDevice) {\n            if (isBrowserStandalone) {\n                setEnterFullscreenByAPIOnFirstTouch();\n            } else {\n                atariConsole.systemPause(true);\n                showLogoMessage(\"<br>Emulation suspended\", \"RESUME\", true, function () {\n                    self.setFullscreen(true);\n                    atariConsole.systemPause(false);\n                });\n            }\n        }\n\n        fullScreenAPIExitUserRequested = false;\n    }\n\n    function isFullScreenByAPI() {\n        return !!document[fullScreenAPIQueryProp];\n    }\n\n    function enterFullScreenByAPI() {\n        if (fullscreenAPIEnterMethod) try {\n            fullscreenAPIEnterMethod.call(fsElement);\n        } catch (e) {\n            /* give up */\n        }\n    }\n\n    function exitFullScreenByAPI() {\n        if (fullScreenAPIExitMethod) try {\n            fullScreenAPIExitUserRequested = true;\n            fullScreenAPIExitMethod.call(document);\n        } catch (e) {\n            /* give up */\n        }\n    }\n\n    function updateScale() {\n        var canvasWidth = Math.round(targetWidth * scaleY * aspectX * 2);    // Fixed internal aspectX of 2\n        var canvasHeight = Math.round(targetHeight * scaleY);\n        canvas.style.width = \"\" + canvasWidth + \"px\";\n        canvas.style.height = \"\" + canvasHeight + \"px\";\n        updateBarWidth(canvasWidth);\n        if (!signalIsOn) updateLogoScale();\n        if (settingsDialog && settingsDialog.isVisible()) settingsDialog.position();\n        updateConsolePanelScale(canvasWidth);\n    }\n\n    function updateBarWidth(canvasWidth) {\n        var fixedWidth = buttonsBarDesiredWidth > 0 ? buttonsBarDesiredWidth : canvasWidth;\n        buttonsBar.style.width = buttonsBarDesiredWidth === -1 ? \"100%\" : \"\" + fixedWidth + \"px\";\n        buttonsBar.classList.toggle(\"jt-narrow\", fixedWidth < NARROW_WIDTH);\n    }\n\n    function updateConsolePanelScale(maxWidth) {\n        var panelHeight = consolePanel.updateScale(maxWidth, isFullscreen, isLandscape);\n        mainElement.style.marginBottom = !isFullscreen && panelHeight > 0\n            ? \"\" + Math.ceil(panelHeight + 3) + \"px\"\n            : \"initial\";\n    }\n\n    function updateCanvasContentSize() {\n        var factor = crtFilterEffective > 0 ? CANVAS_SIZE_FACTOR : 1;\n        canvas.width = targetWidth * factor;\n        canvas.height = targetHeight * factor;\n        canvasContext = null;\n    }\n\n    function setCRTFilter(level) {\n        crtFilter = level;\n        crtFilterEffective = crtFilter === -2 ? null : crtFilter === -1 ? crtFilterAutoValue() : level;\n        updateCanvasContentSize();\n    }\n\n    function crtFilterAutoValue() {\n        // Use mode 1 by default (context imageSmoothing OFF and CSS image-rendering set to smooth)\n        // iOS browser bug: freezes after some time if imageSmoothing = true. OK if we use the setting above\n        // Firefox on Android bug: image looks terrible if imageSmoothing = false. Lets use mode 2 or 3, or let browser default\n        return isMobileDevice && !isIOSDevice && browserName === \"FIREFOX\" ? 0 : 1;\n    }\n\n    function setCRTMode(mode) {\n        crtMode = mode;\n        crtModeEffective = crtMode === -1 ? crtModeAutoValue() : crtMode;\n        canvasContext = null;\n    }\n\n    function crtModeAutoValue() {\n        return isMobileDevice ? 0 : 1;\n    }\n\n    function updateLogo() {\n        if (!signalIsOn) {\n            updateLogoScale();\n            showCursorAndBar(true);\n            if (canvasContext) canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n        }\n        logo.classList.toggle(\"jt-show\", !signalIsOn);\n    }\n\n    function updateLoading() {\n        var disp = isLoading ? \"block\" : \"none\";\n        logoLoadingIcon.style.display = disp;\n        canvasLoadingIcon.style.display = disp;\n    }\n\n    function createCanvasContext() {\n        // Prepare Context used to draw frame\n        canvasContext = canvas.getContext(\"2d\", { alpha: false, antialias: false });\n        setImageComposition();\n        setImageSmoothing();\n    }\n\n    function setImageComposition() {\n        if (crtModeEffective > 0 && !debugMode) {\n            canvasContext.globalCompositeOperation = \"source-over\";\n            canvasContext.globalAlpha = 0.8;\n        } else {\n            canvasContext.globalCompositeOperation = \"copy\";\n            canvasContext.globalAlpha = 1;\n        }\n    }\n\n    function setImageSmoothing() {\n        canvas.style.imageRendering = (crtFilterEffective === 0 || crtFilterEffective === 2) ? canvasImageRenderingValue : \"initial\";\n\n        if (crtFilterEffective === null) return;    // let default values for imageSmoothingEnabled\n\n        var smoothing = crtFilterEffective >= 2;\n        if (canvasContext.imageSmoothingEnabled !== undefined)\n            canvasContext.imageSmoothingEnabled = smoothing;\n        else {\n            canvasContext.webkitImageSmoothingEnabled = smoothing;\n            canvasContext.mozImageSmoothingEnabled = smoothing;\n            canvasContext.msImageSmoothingEnabled = smoothing;\n        }\n    }\n\n    function suppressContextMenu(element) {\n        element.addEventListener(\"contextmenu\", jt.Util.blockEvent);\n    }\n\n    function preventDrag(element) {\n        element.ondragstart = jt.Util.blockEvent;\n    }\n\n    function setupMain() {\n        mainElement.innerHTML = jt.ScreenGUI.html();\n        mainElement.tabIndex = -1;\n        delete jt.ScreenGUI.html;\n\n        fsElement = document.getElementById(\"jt-screen-fs\");\n        fsElementCenter = document.getElementById(\"jt-screen-fs-center\");\n        canvasOuter = document.getElementById(\"jt-screen-canvas-outer\");\n        canvas = document.getElementById(\"jt-screen-canvas\");\n        canvasLoadingIcon = document.getElementById(\"jt-canvas-loading-icon\");\n        osd = document.getElementById(\"jt-osd\");\n        logo = document.getElementById(\"jt-logo\");\n        logoCenter = document.getElementById(\"jt-logo-center\");\n        logoImage = document.getElementById(\"jt-logo-image\");\n        logoLoadingIcon = document.getElementById(\"jt-logo-loading-icon\");\n        logoMessage = document.getElementById(\"jt-logo-message\");\n        logoMessageText = document.getElementById(\"jt-logo-message-text\");\n        logoMessageOK = document.getElementById(\"jt-logo-message-ok\");\n        logoMessageOKText = document.getElementById(\"jt-logo-message-ok-text\");\n        scrollMessage = document.getElementById(\"jt-screen-scroll-message\");\n        unmuteMessage = document.getElementById(\"jt-unmute-message\");\n        consolePanelElement = document.getElementById(\"jt-console-panel\");\n\n        suppressContextMenu(mainElement);\n        preventDrag(logoImage);\n        preventDrag(logoLoadingIcon);\n        preventDrag(canvasLoadingIcon);\n\n        updateCanvasContentSize();\n\n        // Try to determine correct value for image-rendering for the canvas filter modes\n        switch (browserName) {\n            case \"CHROME\":\n            case \"EDGE\":\n            case \"OPERA\":   canvasImageRenderingValue = \"pixelated\"; break;\n            case \"FIREFOX\": canvasImageRenderingValue = \"-moz-crisp-edges\"; break;\n            case \"SAFARI\":  canvasImageRenderingValue = \"-webkit-optimize-contrast\"; break;\n            default:        canvasImageRenderingValue = \"pixelated\";\n        }\n        setupMainEvents();\n    }\n\n    function setupMainEvents() {\n        (isMobileDevice ? canvasOuter : fsElement).addEventListener(\"mousemove\", function showCursorOnMouseMove() {\n            showCursorAndBar();\n        });\n\n        if (\"onblur\" in document) fsElement.addEventListener(\"blur\", releaseControllersOnLostFocus, true);\n        else fsElement.addEventListener(\"focusout\", releaseControllersOnLostFocus, true);\n\n        window.addEventListener(\"orientationchange\", function orientationChanged() {\n            closeAllOverlays();\n            if (signalIsOn) hideCursorAndBar();\n            else showCursorAndBar();\n            self.requestReadjust();\n        });\n\n        mainElement.addEventListener(\"drop\", closeAllOverlays, true);\n\n        logoMessageOK.jtNeedsUIG = logoMessageOKText.jtNeedsUIG = true;     // User Initiated Gesture required\n        jt.Util.onTapOrMouseDownWithBlockUIG(logoMessageOK, self.closeLogoMessage);\n\n        // Used to show bar and close overlays and modals if not processed by any other function\n        jt.Util.addEventsListener(fsElementCenter, \"touchstart touchend mousedown\", function backScreenTouched(e) {\n            if (e.type !== \"touchend\") {                            // Execute actions only for touchstart or mousedown\n                closeAllOverlays();\n                showCursorAndBar();\n            } else\n                if (e.cancelable) e.preventDefault();               // preventDefault only on touchend to avoid redundant mousedown ater a touchstart\n        });\n    }\n\n    function setupBar() {\n        buttonsBar = document.getElementById(\"jt-bar\");\n        buttonsBarInner = document.getElementById(\"jt-bar-inner\");\n\n        if (BAR_AUTO_HIDE) {\n            document.documentElement.classList.add(\"jt-bar-auto-hide\");\n            fsElement.addEventListener(\"mouseleave\", hideBar);\n            hideBar();\n        }\n\n        var menu = [\n            { label: \"Power\",              clickModif: 0, control: jt.PeripheralControls.CONSOLE_POWER_TOGGLE },\n            { label: \"Fry Console\",                       control: jt.PeripheralControls.CONSOLE_POWER_FRY },\n            { label: \"\",                   divider: true },\n            { label: \"Net Play!\",                         control: jt.PeripheralControls.SCREEN_OPEN_NETPLAY },\n            { label: \"\",                   divider: true },\n            { label: \"Select Cartridge\",                  control: jt.PeripheralControls.CARTRIDGE_LOAD_RECENT },\n            { label: \"Set ROM Format\",     clickModif: KEY_SHIFT_MASK, control: jt.PeripheralControls.CARTRIDGE_CHOOSE_FORMAT },\n            { label: \"\",                   divider: true },\n            { label: \"Open File\",          clickModif: KEY_CTRL_MASK, control: jt.PeripheralControls.AUTO_LOAD_FILE, needsUIG: true },\n            { label: \"Open URL\",           clickModif: KEY_CTRL_MASK | KEY_ALT_MASK, control: jt.PeripheralControls.AUTO_LOAD_URL, needsUIG: true },\n            { label: \"\",                   divider: true },\n            { label: \"Load State\",                        control: jt.PeripheralControls.CONSOLE_LOAD_STATE_MENU },\n            { label: \"Save State\",                        control: jt.PeripheralControls.CONSOLE_SAVE_STATE_MENU }\n        ];\n        powerButton = addBarButton(\"jt-bar-power\", -5, -26, \"System Power\", null, false, menu, \"System\");\n        barMenuSystem = menu;\n        self.consolePowerAndUserPauseStateUpdate(false, false);     // init states\n\n        netplayButton  = addBarButton(\"jt-bar-netplay\", -192, -1, \"NetPlay!\", jt.PeripheralControls.SCREEN_OPEN_NETPLAY);\n        netplayButton.classList.add(\"jt-hidden\");\n\n        if (!isMobileDevice) {\n            menu = [\n                { label: \"Help & Settings\", clickModif: 0, control: jt.PeripheralControls.SCREEN_OPEN_SETTINGS },\n                { label: \"Quick Options\",                  control: jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS },\n                { label: \"Defaults\",                       control: jt.PeripheralControls.SCREEN_DEFAULTS/*,          fullScreenHidden: true*/ }\n            ];\n            settingsButton = addBarButton(\"jt-bar-settings\", -33, -26, \"Settings\", null, false, menu, \"Settings\");\n        } else {\n            settingsButton = addBarButton(\"jt-bar-settings\", -33, -26, \"Quick Options\", jt.PeripheralControls.SCREEN_OPEN_QUICK_OPTIONS, false);\n        }\n\n        gameSelectButton = addBarButton(\"jt-bar-select\", -78, -51, \"Game Select\", jt.ConsoleControls.SELECT, true);\n        gameResetButton = addBarButton(\"jt-bar-reset\", -33, -51, \"Game Reset\", jt.ConsoleControls.RESET, true);\n\n        if (FULLSCREEN_MODE !== -2) {\n            fullscreenButton = addBarButton(\"jt-bar-full-screen\", -103, -1, \"Full Screen\", jt.PeripheralControls.SCREEN_FULLSCREEN, false);\n            fullscreenButton.jtNeedsUIG = true;\n            if (isMobileDevice) fullscreenButton.classList.add(\"jt-mobile\");\n        }\n\n        if (!Javatari.SCREEN_RESIZE_DISABLED && !isMobileDevice) {\n            scaleUpButton = addBarButton(\"jt-bar-scale-plus\", -80, -1, \"Increase Screen\", jt.PeripheralControls.SCREEN_SCALE_PLUS, false);\n            scaleUpButton.classList.add(\"jt-full-screen-hidden\");\n            scaleDownButton = addBarButton(\"jt-bar-scale-minus\", -58, -1, \"Decrease Screen\", jt.PeripheralControls.SCREEN_SCALE_MINUS, false);\n            scaleDownButton.classList.add(\"jt-full-screen-hidden\");\n        }\n\n        var consolePanelButton = addBarButton(\"jt-bar-console-panel\", -61, -25, \"Toggle Console Panel\", jt.PeripheralControls.SCREEN_CONSOLE_PANEL_TOGGLE, false);\n        consolePanelButton.classList.add(\"jt-full-screen-only\");\n\n        logoButton = addBarButton(\"jt-bar-logo\", -99, -26, \"About Javatari\", jt.PeripheralControls.SCREEN_OPEN_ABOUT, false);\n        logoButton.classList.add(\"jt-full-screen-hidden\");\n\n        // Events for BarButtons and also MenuItems\n        jt.Util.onTapOrMouseDownWithBlockUIG(buttonsBar, barElementTapOrMouseDown);\n        jt.Util.addEventsListener(buttonsBar, \"touchmove\", barElementTouchMove);\n        jt.Util.addEventsListener(buttonsBar, \"mouseup touchend\", barElementTouchEndOrMouseUp);\n    }\n\n    function addBarButton(id, bx, by, tooltip, control, isConsoleControl, menu, menuTitle) {\n        var but = document.createElement('div');\n        but.id = id;\n        but.classList.add(\"jt-bar-button\");\n        but.jtBarElementType = 1;     // Bar button\n        but.jtControl = control;\n        but.jtIsConsoleControl = isConsoleControl;\n        but.style.backgroundPosition = \"\" + bx + \"px \" + by + \"px\";\n        but.jtBX = bx;\n        if (menu) {\n            but.jtMenu = menu;\n            menu.jtTitle = menuTitle;\n            menu.jtRefElement = but;\n            menu.jtMenuIndex = barMenus.length;\n            barMenus.push(menu);\n        }\n        if (tooltip) but.title = tooltip;\n\n        // Mouse hover button\n        but.addEventListener(\"mouseenter\", function(e) { barButtonHoverOver(e.target, e); });\n        // Mouse left button (only for ConsoleControls)\n        if (isConsoleControl) but.addEventListener(\"mouseleave\", barButtonMouseLeft);\n\n        buttonsBarInner.appendChild(but);\n        return but;\n    }\n\n    function barButtonTapOrMousedown(elem, e, uigStart, uigEnd) {\n        if (!uigEnd) consoleControls.hapticFeedbackOnTouch(e);\n        if (logoMessageActive || uigStart) return;\n\n        var prevActiveMenu = barMenuActive;\n        closeAllOverlays();\n\n        // Single option, only left click\n        if (elem.jtControl) {\n            if (!e.button) {\n                if (elem.jtIsConsoleControl) {\n                    barConsoleControlPressed = elem.jtControl;\n                    consoleControls.processControlState(barConsoleControlPressed, true);\n                } else\n                    peripheralControls.controlActivated(elem.jtControl);\n            }\n            return;\n        }\n\n        var menu = elem.jtMenu;\n        if (!menu) return;\n\n        var modifs = 0 | (e.altKey && KEY_ALT_MASK) | (e.ctrlKey && KEY_CTRL_MASK) | (e.shiftKey && KEY_SHIFT_MASK);\n\n        // Open/close menu with left-click if no modifiers\n        if (modifs === 0 && !e.button) {\n            if (prevActiveMenu !== menu) {\n                showBarMenu(menu);\n                // Only start LongTouch for touches!\n                if (e.type === \"touchstart\") barButtonLongTouchStart(e);\n            }\n            return;\n        }\n\n        // Modifier options for left, middle or right click\n        for (var i = 0; i < menu.length; ++i)\n            if (menu[i].clickModif === modifs) {\n                peripheralControls.controlActivated(menu[i].control, e.button === 1, menu[i].secSlot);         // altPower for middleClick (button === 1)\n                return;\n            }\n        // If no direct shortcut found with modifiers used, use SHIFT as secSlot modifier and try again\n        if (modifs & KEY_SHIFT_MASK) {\n            modifs &= ~KEY_SHIFT_MASK;\n            for (i = 0; i < menu.length; ++i)\n                if (menu[i].clickModif === modifs) {\n                    peripheralControls.controlActivated(menu[i].control, e.button === 1, true);               // altPower for middleClick (button === 1)\n                    return;\n                }\n        }\n    }\n\n    function barButtonLongTouchStart(e) {\n        barButtonLongTouchTarget = e.target;\n        barButtonLongTouchSelectTimeout = window.setTimeout(function buttonsBarLongTouchSelectDefault() {\n            if (!barMenuActive) return;\n            var items = barMenu.jtItems;\n            for (var i = 0; i < items.length; ++i) {\n                var option = items[i].jtMenuOption;\n                if (option && option.clickModif === 0) {\n                    barMenuItemSetActive(items[i], true);\n                    return;\n                }}\n        }, 450);\n    }\n\n    function barButtonLongTouchCancel() {\n        if (barButtonLongTouchSelectTimeout) {\n            clearTimeout(barButtonLongTouchSelectTimeout);\n            barButtonLongTouchSelectTimeout = null;\n        }\n    }\n\n    function barButtonHoverOver(elem, e) {\n        if (barMenuActive && elem.jtMenu && barMenuActive !== elem.jtMenu ) {\n            consoleControls.hapticFeedbackOnTouch(e);\n            showBarMenu(elem.jtMenu);\n        }\n    }\n\n    function barButtonMouseLeft() {\n        if (barConsoleControlPressed) {\n            cursorHideFrameCountdown = CURSOR_HIDE_FRAMES;\n            consoleControls.processControlState(barConsoleControlPressed, false);\n            barConsoleControlPressed = null;\n        }\n    }\n\n    function barButtonTouchEndOrMouseUp(e) {\n        if (logoMessageActive) return;\n        // Special case for ConsoleControl\n        if (barConsoleControlPressed) {\n            consoleControls.hapticFeedbackOnTouch(e);\n            consoleControls.processControlState(barConsoleControlPressed, false);\n            barConsoleControlPressed = null;\n            return;\n        }\n        // Only touch, left or middle button\n        if (barMenuItemActive && !(e.button > 1)) barMenuItemFireActive(e.shiftKey, e.button === 1 || e.ctrlKey);\n    }\n\n    function barMenuItemTapOrMouseDown(elem, e, uigEnd) {\n        if (uigEnd) return;\n        barMenuItemSetActive(elem, e.type === \"touchstart\");\n    }\n\n    function barMenuItemHoverOver(elem, e) {\n        barMenuItemSetActive(elem, e.type === \"touchmove\");\n    }\n\n    function barMenuItemHoverOut() {\n        barMenuItemSetActive(null);\n    }\n\n    function barMenuItemTouchEndOrMouseUp(e) {\n        if (logoMessageActive) return;\n        // Only touch, left or middle button\n        if (barMenuItemActive && !(e.button > 1)) barMenuItemFireActive(e.shiftKey, e.button === 1 || e.ctrlKey);\n    }\n\n    function barMenuItemFireActive(secSlot, altPower) {\n        var option = barMenuItemActive.jtMenuOption;\n        barMenuItemSetActive(null);\n        if (option && !option.disabled) {\n            if (option.extension) {\n                extensionsSocket.toggleExtension(option.extension, altPower, secSlot);\n            } else if (option.control) {\n                secSlot |= option.secSlot;\n                closeAllOverlays();\n                peripheralControls.controlActivated(option.control, altPower, secSlot);\n            }\n        }\n    }\n\n    function barMenuItemSetActive(element, haptic) {\n        if (element === barMenuItemActive) return;\n        if (barMenuItemActive) barMenuItemActive.classList.remove(\"jt-hover\");\n        if (element && element.jtMenuOption) {\n            barMenuItemActive = element;\n            if (haptic) consoleControls.hapticFeedback();\n            barMenuItemActive.classList.add(\"jt-hover\");\n        } else\n            barMenuItemActive = null;\n    }\n\n    function barElementTapOrMouseDown(e, uigStart, uigEnd) {\n        cursorHideFrameCountdown = CURSOR_HIDE_FRAMES;\n        var elem = e.target;\n        if (elem.jtBarElementType === 1) barButtonTapOrMousedown(elem, e, uigStart, uigEnd);\n        else if (elem.jtBarElementType === 2) barMenuItemTapOrMouseDown(elem, e, uigEnd);\n        else hideBarMenu();\n    }\n\n    function barElementTouchMove(e) {\n        jt.Util.blockEvent(e);\n        var t = e.changedTouches[0];\n        var elem = t && document.elementFromPoint(t.clientX, t.clientY);\n        if (barButtonLongTouchTarget && elem !== barButtonLongTouchTarget) barButtonLongTouchCancel();\n        if (elem.jtBarElementType !== 2 && elem !== barButtonLongTouchTarget) barMenuItemSetActive(null);\n        if (elem.jtBarElementType === 1) barButtonHoverOver(elem, e);\n        else if (elem.jtBarElementType === 2) barMenuItemHoverOver(elem, e);\n\n    }\n\n    function barElementTouchEndOrMouseUp(e) {\n        cursorHideFrameCountdown = CURSOR_HIDE_FRAMES;\n        jt.Util.blockEvent(e);\n        barButtonLongTouchCancel();\n        var elem = e.target;\n        if (elem.jtBarElementType === 1) barButtonTouchEndOrMouseUp(e);\n        else if (elem.jtBarElementType === 2) barMenuItemTouchEndOrMouseUp(e);\n    }\n\n    function setupFullscreen() {\n        fullscreenAPIEnterMethod = fsElement.requestFullscreen || fsElement.webkitRequestFullscreen || fsElement.webkitRequestFullScreen || fsElement.mozRequestFullScreen;\n        fullScreenAPIExitMethod =  document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen;\n        if (\"fullscreenElement\" in document) fullScreenAPIQueryProp = \"fullscreenElement\";\n        else if (\"webkitFullscreenElement\" in document) fullScreenAPIQueryProp = \"webkitFullscreenElement\";\n        else if (\"mozFullScreenElement\" in document) fullScreenAPIQueryProp = \"mozFullScreenElement\";\n\n        if (!fullscreenAPIEnterMethod && isMobileDevice && !isBrowserStandalone) fullScreenScrollHack = true;\n\n        if (\"onfullscreenchange\" in document)            document.addEventListener(\"fullscreenchange\", fullscreenByAPIChanged);\n        else if (\"onwebkitfullscreenchange\" in document) document.addEventListener(\"webkitfullscreenchange\", fullscreenByAPIChanged);\n        else if (\"onmozfullscreenchange\" in document)    document.addEventListener(\"mozfullscreenchange\", fullscreenByAPIChanged);\n\n        // Prevent scroll & zoom in fullscreen if not touching on the screen (canvas) or scroll message in hack mode\n        if (!fullscreenAPIEnterMethod) {\n            scrollMessage.jtScroll = canvas.jtScroll = logo.jtScroll = logoCenter.jtScroll = logoImage.jtScroll =\n                logoMessage.jtScroll = logoMessageText.jtScroll = logoMessageOK.jtScroll = logoMessageOKText.jtScroll = true;\n\n            fsElement.addEventListener(\"touchmove\", function preventTouchMoveInFullscreenByHack(e) {\n                if (isFullscreen) {\n                    if (!fullScreenScrollHack || !e.target.jtScroll)\n                        return jt.Util.blockEvent(e);\n                    else\n                        if (scrollMessageActive) setScrollMessage(false);\n                }\n            });\n        }\n    }\n\n    function setEnterFullscreenByAPIOnFirstTouch() {\n        // Add event to enter in real fullScreenByAPI on first touch/click if possible\n        if (fullscreenAPIEnterMethod) {\n            var done = false;\n            var enterFullScreenByAPIonFirstTouch = function() {\n                if (done) return;\n                done = true;\n                jt.Util.removeEventsListener(fsElement, \"touchend mousedown\", enterFullScreenByAPIonFirstTouch, true);\n                enterFullScreenByAPI();\n            };\n            jt.Util.addEventsListener(fsElement, \"touchend mousedown\", enterFullScreenByAPIonFirstTouch, true);    // Capture!\n        }\n    }\n\n    function setFullscreenState(mode) {\n        isFullscreen = mode;\n\n        if (mode) {\n            setViewport();\n            document.documentElement.classList.add(\"jt-full-screen\");\n            if (fullScreenScrollHack) document.documentElement.classList.add(\"jt-full-screen-scroll-hack\");\n            consoleControls.setupTouchControlsIfNeeded(fsElementCenter);\n            if (fullScreenScrollHack) setScrollMessage(true);\n            if (!fullscreenAPIEnterMethod) tryToFixSafariBugOnFullScreenChange();\n        } else {\n            restoreViewport();\n            document.documentElement.classList.remove(\"jt-full-screen\");\n            if (fullScreenScrollHack) document.documentElement.classList.remove(\"jt-full-screen-scroll-hack\");\n            if (!fullscreenAPIEnterMethod) tryToFixSafariBugOnFullScreenChange();\n        }\n\n        closeAllOverlays();\n        self.requestReadjust();\n    }\n\n    function tryToFixSafariBugOnFullScreenChange() {\n        // Toggle a dummy element existence inside mainElement to try to force a reflow\n        var dummy = document.getElementById(\"jt-dummy-element\");\n        if (dummy) {\n            mainElement.removeChild(dummy);\n        } else {\n            dummy = document.createElement(\"div\");\n            dummy.id = \"jt-dummy-element\";\n            mainElement.appendChild(dummy);\n        }\n    }\n\n    function showBar() {\n        buttonsBar.classList.remove(\"jt-hidden\");\n    }\n\n    function hideBar() {\n        if ((BAR_AUTO_HIDE || isFullscreen) && !barMenuActive && !consolePanelActive && !barConsoleControlPressed) {\n            hideBarMenu();\n            buttonsBar.classList.add(\"jt-hidden\");\n        }\n    }\n\n    function showBarMenu(menu, select) {\n        if (!menu || barMenuActive === menu) return;\n\n        if (!barMenu) {\n            setupBarMenu();\n            setTimeout(function() {\n                showBarMenu(menu, select);\n            }, 1);\n            return;\n        }\n\n        // Define items\n        refreshBarMenu(menu);\n        barMenuItemSetActive(select ? barMenu.jtDefaultItem : null);\n\n        // Position\n        var refElement = menu.jtRefElement;\n        var p = (refElement && (refElement.offsetLeft - 15)) || 0;\n        if (p + jt.ScreenGUI.BAR_MENU_WIDTH > refElement.parentElement.clientWidth) {\n            barMenu.style.right = 0;\n            barMenu.style.left = \"auto\";\n            barMenu.style.transformOrigin = \"bottom right\";\n        } else {\n            if (p < 0) p = 0;\n            barMenu.style.left = \"\" + p + \"px\";\n            barMenu.style.right = \"auto\";\n            barMenu.style.transformOrigin = \"bottom left\";\n        }\n\n        // Show\n        showCursorAndBar(true);\n        barMenuActive = menu;\n        barMenu.style.display = \"inline-block\";\n        barMenu.jtTitle.focus();\n    }\n\n    function refreshBarMenu(menu) {\n        barMenu.jtTitle.innerHTML = menu.jtTitle;\n        barMenu.jtDefaultItem = null;\n\n        var it = 0;\n        var item;\n        var maxShown = Math.min(menu.length, BAR_MENU_MAX_ITEMS);\n        var h = jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT + 3;         // title + borders\n\n        for (var op = 0; op < maxShown; ++op) {\n            var option = menu[op];\n            if (option.label !== undefined) {\n                item = barMenu.jtItems[it];\n                item.firstChild.textContent = option.label;\n                item.jtMenuOption = null;\n\n                if (option.hidden || (isFullscreen && option.fullScreenHidden) || (!isFullscreen && option.fullScreenOnly)) {\n                    item.style.display = \"none\";\n                } else {\n                    item.style.display = \"block\";\n\n                    // Divider?\n                    if (option.divider) {\n                        item.classList.add(\"jt-bar-menu-item-divider\");\n                    } else {\n                        item.classList.remove(\"jt-bar-menu-item-divider\");\n                        h += jt.ScreenGUI.BAR_MENU_ITEM_HEIGHT;   // each non-divider item\n\n                        // Toggle\n                        item.classList.toggle(\"jt-bar-menu-item-toggle\", option.toggle !== undefined);\n\n                        // Disabled?\n                        if (option.disabled) {\n                            item.classList.add(\"jt-bar-menu-item-disabled\");\n                        } else {\n                            item.classList.remove(\"jt-bar-menu-item-disabled\");\n\n                            item.jtMenuOption = option;\n                            if (option.clickModif === 0) barMenu.jtDefaultItem = item;    // If option is the default, set this item to be selected as default\n\n                            // User Generated Gesture needed?\n                            item.jtNeedsUIG = option.needsUIG;\n\n                            // Toggle checked\n                             if (option.toggle !== undefined) item.classList.toggle(\"jt-bar-menu-item-toggle-checked\", !!option.checked);\n                        }\n                    }\n                }\n\n                ++it;\n            }\n        }\n        for (var r = it; r < BAR_MENU_MAX_ITEMS; ++r) {\n            item = barMenu.jtItems[r];\n            item.firstChild.textContent = \"\";\n            item.style.display = \"none\";\n            item.jtMenuOption = null;\n        }\n\n        var height = fsElementCenter.clientHeight - jt.ScreenGUI.BAR_HEIGHT - 12;      // bar + borders + tolerance\n        var scale = h < height ? 1 : height / h;\n        if (barMenu) barMenu.style.transform = \"scale(\" + scale.toFixed(4) + \")\";\n\n        //console.error(\"MESSAGE SCALE height: \" + height + \", h: \" + h);\n    }\n\n    function hideBarMenu() {\n        if (!barMenuActive) return;\n        barMenuActive = null;\n        barMenu.style.display = \"none\";\n        barMenuItemSetActive(null);\n        cursorHideFrameCountdown = CURSOR_HIDE_FRAMES;\n        self.focus();\n    }\n\n    function setupBarMenu() {\n        barMenu = document.createElement('div');\n        barMenu.id = \"jt-bar-menu\";\n\n        var inner = document.createElement('div');\n        inner.id = \"jt-bar-menu-inner\";\n        barMenu.appendChild(inner);\n\n        var title = document.createElement('div');\n        title.id = \"jt-bar-menu-title\";\n        title.tabIndex = -1;\n        title.innerHTML = \"Menu Title\";\n        inner.appendChild(title);\n        barMenu.jtTitle = title;\n\n        barMenu.jtItems = new Array(BAR_MENU_MAX_ITEMS);\n        for (var i = 0; i < BAR_MENU_MAX_ITEMS; ++i) {\n            var item = document.createElement('div');\n            item.classList.add(\"jt-bar-menu-item\");\n            item.style.display = \"none\";\n            item.innerHTML = \"Menu Item \" + i;\n            item.jtBarElementType = 2;     // Menu Item\n            item.jtItemIndex = i;\n            item.addEventListener(\"mouseenter\", function (e) { barMenuItemHoverOver(e.target, e); });\n            item.addEventListener(\"mouseleave\", barMenuItemHoverOut);\n            inner.appendChild(item);\n            barMenu.jtItems[i] = item;\n        }\n\n        // Block keys and respond to some\n        barMenu.addEventListener(\"keydown\", function(e) {\n            // Hide\n            if (MENU_CLOSE_KEYS[e.keyCode]) hideBarMenu();\n            // Execute\n            else if (barMenuItemActive && MENU_EXEC_KEYS[e.keyCode & ~KEY_SHIFT_MASK & ~KEY_CTRL_MASK]) barMenuItemFireActive(e.shiftKey, e.ctrlKey);\n            // Select Menu\n            else if (MENU_SELECT_KEYS[e.keyCode]) {\n                if (!barMenuActive) return;\n                var newMenu = (barMenus.length + barMenuActive.jtMenuIndex + MENU_SELECT_KEYS[e.keyCode]) % barMenus.length;\n                showBarMenu(barMenus[newMenu], true);\n            }\n            // Select Item\n            else if (MENU_ITEM_SELECT_KEYS[e.keyCode]) {\n                var items = barMenu.jtItems;\n                var newItem = barMenuItemActive ? barMenuItemActive.jtItemIndex : -1;\n                var tries = BAR_MENU_MAX_ITEMS + 1;\n                do {\n                    newItem = (newItem + items.length + MENU_ITEM_SELECT_KEYS[e.keyCode]) % items.length;\n                } while (--tries >= 0 && !items[newItem].jtMenuOption);\n                if (tries >= 0) barMenuItemSetActive(items[newItem]);\n            }\n            return jt.Util.blockEvent(e);\n        });\n\n        buttonsBar.appendChild(barMenu);\n    }\n\n    function closeAllOverlays() {\n        hideBarMenu();\n        if (saveStateDialog) saveStateDialog.hide();\n        if (quickOtionsDialog) quickOtionsDialog.hide();\n        if (netPlayDialog) netPlayDialog.hide();\n        if (cartFormatDialog) cartFormatDialog.hide();\n        if (settingsDialog) settingsDialog.hide();\n        if (recentROMsDialog) recentROMsDialog.hide();\n    }\n    this.closeAllOverlays = closeAllOverlays;\n\n    function showLogoMessage(mes, button, higherButton, afterAction) {\n        consolePanel.setLogoMessageActive(true);\n        if (logoMessageActive) return;\n\n        closeAllOverlays();\n        if (afterAction) afterMessageAction = afterAction;\n        logoMessageText.innerHTML = mes;\n        logoMessageOK.classList.toggle(\"jt-higher\", !!higherButton);\n        logoMessageOKText.innerHTML = button || \"OK\";\n        fsElement.classList.add(\"jt-logo-message-active\");\n        logoMessageActive = true;\n\n        signalIsOn = false;\n        updateLogo();\n    }\n\n    this.closeLogoMessage = function(e, uigStart, uigEnd) {\n        if (!uigEnd) consoleControls.hapticFeedbackOnTouch(e);\n        if (uigStart) return;\n        consolePanel.setLogoMessageActive(false);\n        fsElement.classList.remove(\"jt-logo-message-active\");\n        logoMessageActive = false;\n        if (afterMessageAction) {\n            var action = afterMessageAction;\n            afterMessageAction = null;\n            action();\n        }\n    };\n\n    function updateLogoScale() {\n        var width = canvasOuter.clientWidth;\n        var scale = Math.min(width / jt.ScreenGUI.LOGO_SCREEN_WIDTH, 1);\n        if (scale < 1)\n            logoCenter.style.transform = \"translate(-50%, -50%) scale(\" + scale.toFixed(4) + \")\";\n        else\n            logoCenter.style.transform = \"translate(-50%, -50%)\";\n    }\n\n    function setScrollMessage(state) {\n\n        console.error(\"Scroll Message: \" + state);\n\n        fsElement.classList.toggle(\"jt-scroll-message\", state);\n        scrollMessageActive = state;\n        if (state) {\n            setTimeout(function() {\n                setScrollMessage(false);\n            }, 5000);\n        }\n    }\n\n    function readjustAll(force) {\n        if (isReadjustScreeSizeChanged(force)) {\n            if (isFullscreen) {\n                buttonsBarDesiredWidth = isLandscape ? 0 : -1;\n                var winH = readjustScreenSize.h;\n                if (!isLandscape) winH -= jt.ScreenGUI.BAR_HEIGHT + 2;\n                monitor.displayScale(aspectX, displayOptimalScaleY(readjustScreenSize.w, winH));\n            } else {\n                buttonsBarDesiredWidth = -1;\n                monitor.displayScale(Javatari.SCREEN_DEFAULT_ASPECT, self.displayDefaultScale());\n            }\n\n            self.focus();\n            consolePanelUpdateForOrientation();\n            consoleControlsSocket.releaseControllers();\n\n            //console.log(\"READJUST\");\n        }\n\n        if (readjustInterval && (jt.Util.performanceNow() - readjustRequestTime >= 1000)) {\n            clearInterval(readjustInterval);\n            readjustInterval = null;\n            //console.log(\"READJUST TERMINATED\");\n        }\n    }\n\n    function isReadjustScreeSizeChanged(force) {\n        var parW = mainElement.parentElement.clientWidth;\n        var winW = fsElementCenter.clientWidth;\n        var winH = fsElementCenter.clientHeight;\n\n        if (!force && readjustScreenSize.pw === parW && readjustScreenSize.w === winW && readjustScreenSize.h === winH)\n            return false;\n\n        readjustScreenSize.pw = parW;\n        readjustScreenSize.w = winW;\n        readjustScreenSize.h = winH;\n        isLandscape = winW > winH;\n        return true;\n    }\n\n    function displayOptimalScaleY(maxWidth, maxHeight) {\n        var effectiveScaleX = aspectX * 2;      // Fixed internal aspectX of 2\n        var scY = maxHeight / targetHeight;\n        if (targetWidth * effectiveScaleX * scY > maxWidth)\n            scY = maxWidth / (targetWidth * effectiveScaleX);\n        return scY;\n    }\n\n    function setViewport() {\n        if (!isMobileDevice) return;\n\n        if (viewPortOriginalContent === undefined) {    // store only once!\n            viewPortOriginalTag = document.querySelector(\"meta[name=viewport]\");\n            viewPortOriginalContent = (viewPortOriginalTag && viewPortOriginalTag.content) || null;\n        }\n\n        if (!viewportTag) {\n            viewportTag = document.createElement('meta');\n            viewportTag.name = \"viewport\";\n            // Android Firefox bug (as of 11/2016). Going back and forth from full-screen makes scale all wrong. Set user-scalable = yes to let user correct it in full-screen :-(\n            viewportTag.content = \"width = device-width, height = device-height, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = yes\";\n            document.head.appendChild(viewportTag);\n        }\n\n        if (viewPortOriginalTag) try { document.head.removeChild(viewPortOriginalTag); } catch (e) { /* ignore */ }\n        viewPortOriginalTag = null;\n    }\n\n    function restoreViewport() {\n        if (!isMobileDevice) return;\n\n        if (!viewPortOriginalTag && viewPortOriginalContent) {\n            viewPortOriginalTag = document.createElement('meta');\n            viewPortOriginalTag.name = \"viewport\";\n            viewPortOriginalTag.content = viewPortOriginalContent;\n            document.head.appendChild(viewPortOriginalTag);\n        }\n\n        if (viewportTag) try { document.head.removeChild(viewportTag); } catch (e) { /* ignore */ }\n        viewportTag = null;\n    }\n\n    function setPageVisibilityHandling() {\n        var wasUnpaused;\n        function visibilityChange() {\n            if (logoMessageActive) return;\n\n            if (document.hidden) {\n                wasUnpaused = !atariConsole.systemPause(true);\n            } else {\n                if (wasUnpaused) atariConsole.systemPause(false);\n            }\n        }\n        document.addEventListener(\"visibilitychange\", visibilityChange);\n    }\n\n\n    var afterMessageAction;\n\n    var atariConsole;\n    var consoleControlsSocket;\n\n    var monitor;\n    var peripheralControls;\n    var fileLoader;\n    var fileDownloader;\n    var consoleControls;\n    var cartridgeSocket;\n    var stateMedia;\n    var recentROMs;\n\n    var readjustInterval = 0, readjustRequestTime = 0;\n    var readjustScreenSize = { w: 0, wk: 0, h: 0, pw: 0, l: false };\n\n    var isFullscreen = false, isLandscape = false;\n\n    var isTouchDevice = jt.Util.isTouchDevice();\n    var isMobileDevice = jt.Util.isMobileDevice();\n    var isIOSDevice = jt.Util.isIOSDevice();\n    var isBrowserStandalone = jt.Util.isBrowserStandaloneMode();\n    var browserName = jt.Util.browserInfo().name;\n\n    var fullscreenAPIEnterMethod, fullScreenAPIExitMethod, fullScreenAPIQueryProp, fullScreenAPIExitUserRequested = false, fullScreenScrollHack = false;\n    var viewportTag, viewPortOriginalTag, viewPortOriginalContent;\n\n    var consolePanel;\n    var consolePanelElement;\n    var settingsDialog;\n    var saveStateDialog;\n    var recentROMsDialog;\n    var quickOtionsDialog;\n    var netPlayDialog;\n    var cartFormatDialog;\n\n    var fsElement, fsElementCenter;\n\n    var canvas, canvasOuter, canvasLoadingIcon;\n    var canvasContext;\n    var canvasImageRenderingValue;\n\n    var touchControlsActive = false, touchControlsDirBig = false;\n    var consolePanelActive = false;\n    var consolePanelActiveLandscape = false;\n    var consolePanelActivePortrait = jt.ConsolePanel.shouldStartActive();\n\n    var buttonsBar, buttonsBarInner, buttonsBarDesiredWidth = -1;       // 0 = same as canvas. -1 means full width mode (100%)\n    var barButtonLongTouchTarget, barButtonLongTouchSelectTimeout;\n\n    var barMenu;\n    var barMenus = [], barMenuActive, barMenuItemActive, barMenuSystem;\n    var barConsoleControlPressed;\n\n    var osd;\n    var osdTimeout;\n    var osdShowing = false;\n\n    var cursorType = \"auto\";\n    var cursorShowing = true;\n    var cursorHideFrameCountdown = -1;\n    var signalIsOn = false;\n    var crtFilter = -2, crtFilterEffective = null;\n    var crtMode = -1, crtModeEffective = 0;\n    var debugMode = false;\n    var isLoading = false;\n\n    var aspectX = Javatari.SCREEN_DEFAULT_ASPECT;\n    var scaleY = 1.0;\n\n    var mousePointerLocked = false;\n\n    var targetWidth = 160;\n    var targetHeight = 213;\n\n    var logo, logoCenter, logoImage, logoMessage, logoMessageText, logoMessageOK, logoMessageOKText, logoMessageActive = false;\n    var logoLoadingIcon;\n    var scrollMessage, scrollMessageActive = false;\n    var unmuteMessage;\n\n    var powerButton;\n    var netplayButton;\n    var logoButton;\n    var scaleDownButton;\n    var scaleUpButton;\n    var fullscreenButton;\n    var settingsButton;\n    var gameSelectButton;\n    var gameResetButton;\n\n    var mediaButtonBackYOffsets = [-51, -26, -1];\n\n    var CANVAS_SIZE_FACTOR = Javatari.SCREEN_CANVAS_SIZE;\n\n    var OSD_TIME = 3000;\n    var CURSOR_HIDE_FRAMES = 180;\n\n    var FULLSCREEN_MODE = Javatari.SCREEN_FULLSCREEN_MODE;\n\n    var BAR_AUTO_HIDE = Javatari.SCREEN_CONTROL_BAR === 0;\n    var BAR_MENU_MAX_ITEMS = 13;\n\n    var NARROW_WIDTH = 336;\n\n    var k = jt.DOMKeys;\n    var KEY_CTRL_MASK  =  k.CONTROL;\n    var KEY_ALT_MASK   =  k.ALT;\n    var KEY_SHIFT_MASK =  k.SHIFT;\n\n    var MENU_CLOSE_KEYS = {}; MENU_CLOSE_KEYS[k.VK_ESCAPE.c] = 1; MENU_CLOSE_KEYS[k.VK_CONTEXT.c] = 1;\n    var MENU_EXEC_KEYS = {}; MENU_EXEC_KEYS[k.VK_ENTER.c] = 1; MENU_EXEC_KEYS[k.VK_SPACE.c] = 1;\n    var MENU_SELECT_KEYS = {}; MENU_SELECT_KEYS[k.VK_LEFT.c] = -1; MENU_SELECT_KEYS[k.VK_RIGHT.c] = 1;\n    var MENU_ITEM_SELECT_KEYS = {}; MENU_ITEM_SELECT_KEYS[k.VK_UP.c] = -1; MENU_ITEM_SELECT_KEYS[k.VK_DOWN.c] = 1;\n\n\n    init();\n\n    this.eval = function(str) {\n        return eval(str);\n    };\n\n};\n"
  },
  {
    "path": "src/main/room/screen/ConsolePanel.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.ConsolePanel = function(screen, panelElement) {\n\"use strict\";\n\n    this.connectPeripherals = function(pFileLoader, pConsoleControls, pPeripheralControls) {\n        consoleControls = pConsoleControls;\n        peripheralControls = pPeripheralControls;\n        pFileLoader.registerForDnD(panelElement);\n    };\n\n    this.connect = function(pControlsSocket) {\n        controlsSocket = pControlsSocket;\n    };\n\n    this.setActive = function(pActive) {\n        active = pActive;\n        if (active) {\n            if (!powerButton) create();\n            refreshCartridge();\n            updateVisibleControlsState();\n        }\n        document.documentElement.classList.toggle(\"jt-console-panel-active\", active);\n    };\n\n    this.setLogoMessageActive = function(active) {\n        logoMessageActive = active;\n    };\n\n    this.updateScale = function(screenWidth, isFullscreen, isLandscape) {\n        var height = 0, width = 0;\n        if (active) {\n            screenWidth = isFullscreen\n                ? isLandscape ? screenWidth * 0.85 : screenWidth - 36\n                : screenWidth * 0.85;\n            var scale = Math.min(1, screenWidth / jt.ConsolePanel.DEFAULT_WIDTH);\n            panelElement.style.transform = scale < 1\n                ? \"translateX(-50%) scale(\" + scale.toFixed(8) + \")\"\n                : \"translateX(-50%)\";\n            height = Math.ceil(scale * jt.ConsolePanel.DEFAULT_HEIGHT);\n            width  = Math.ceil(scale * jt.ConsolePanel.DEFAULT_WIDTH);\n        }\n\n        if (consoleControls) consoleControls.getTouchControls().updateConsolePanelSize(screenWidth, width, height, isFullscreen, isLandscape);\n\n        //console.error(\"PANEL SCALE: \" + scale);\n\n        return height;\n    };\n\n    function create() {\n        setupMain();\n        setupButtons();\n        setupCartridgeLabel();\n    }\n\n    var refreshControls = function() {\n        // Controls State\n        setVisibility(powerButton, !controlsStateReport[controls.POWER]);\n        setVisibility(colorButton, controlsStateReport[controls.BLACK_WHITE]);\n        setVisibility(selectButton, controlsStateReport[controls.SELECT]);\n        setVisibility(resetButton, controlsStateReport[controls.RESET]);\n        setVisibility(p0DiffButton, controlsStateReport[controls.DIFFICULTY0]);\n        setVisibility(p1DiffButton, controlsStateReport[controls.DIFFICULTY1]);\n        refreshCartridge();\n    };\n\n    var refreshCartridge = function () {\n        // Cartridge Image\n        setVisibility(cartInsertedImage, cartridgeInserted);\n        setVisibility(cartLabel, cartridgeInserted);\n\n        // Cartridge Label\n        cartLabel.innerHTML = (cartridgeInserted && cartridgeInserted.rom.info.l) || DEFAULT_CARTRIDGE_LABEL;\n        if (cartridgeInserted && cartridgeInserted.rom.info.lc) {\n            var colors = cartridgeInserted.rom.info.lc.trim().split(/\\s+/);\n            cartLabel.style.color = colors[0] || DEFAULT_CARTRIDGE_LABEL_COLOR;\n            cartLabel.style.background = colors[1] || DEFAULT_CARTRIDGE_BACK_COLOR;\n            cartLabel.style.borderColor = colors[2] || DEFAULT_CARTRIDGE_BORDER_COLOR;\n        } else {\n            cartLabel.style.color = DEFAULT_CARTRIDGE_LABEL_COLOR;\n            cartLabel.style.background = DEFAULT_CARTRIDGE_BACK_COLOR;\n            cartLabel.style.borderColor = DEFAULT_CARTRIDGE_BORDER_COLOR;\n        }\n    };\n\n    var updateVisibleControlsState = function() {\n        controlsSocket.controlsStateReport(controlsStateReport);\n        refreshControls();\n    };\n\n    var setupMain = function () {\n        panelElement.innerHTML = jt.ScreenGUI.htmlConsolePanel;\n        delete jt.ScreenGUI.htmlConsolePanel;\n\n        if (jt.Util.isMobileDevice()) panelElement.classList.add(\"jt-hide-labels\");\n    };\n\n    var setupButtons = function() {\n        powerButton  = document.getElementById(\"jt-console-panel-power\");\n        consoleControlButton(powerButton, controls.POWER, true);\n        colorButton  = document.getElementById(\"jt-console-panel-color\");\n        consoleControlButton(colorButton, controls.BLACK_WHITE, true);\n        selectButton = document.getElementById(\"jt-console-panel-select\");\n        consoleControlButton(selectButton, controls.SELECT, true);\n        resetButton  = document.getElementById(\"jt-console-panel-reset\");\n        consoleControlButton(resetButton, controls.RESET, true);\n        p0DiffButton = document.getElementById(\"jt-console-panel-p0-diff\");\n        consoleControlButton(p0DiffButton, controls.DIFFICULTY0, true);\n        p1DiffButton = document.getElementById(\"jt-console-panel-p1-diff\");\n        consoleControlButton(p1DiffButton, controls.DIFFICULTY1, true);\n\n        cartInsertedImage = document.getElementById(\"jt-console-panel-cart-image\");\n        cartChangeButton  = document.getElementById(\"jt-console-panel-cart-load\");\n        addCartridgeControlButton(cartChangeButton, jt.PeripheralControls.CARTRIDGE_LOAD_RECENT);\n\n        cartChangeFileButton = document.getElementById(\"jt-console-panel-cart-file\");\n        cartChangeURLButton = document.getElementById(\"jt-console-panel-cart-url\");\n\n        if (!Javatari.CARTRIDGE_CHANGE_DISABLED) {\n            addCartridgeControlButton(cartChangeFileButton, jt.PeripheralControls.CARTRIDGE_LOAD_RECENT);\n            addCartridgeControlButton(cartChangeURLButton, jt.PeripheralControls.AUTO_LOAD_URL);\n        } else {\n            setUnavailable(cartChangeFileButton);\n            setUnavailable(cartChangeURLButton);\n        }\n    };\n\n    var consoleControlButton = function (but, control, isHold) {\n        but.jtControl = control;\n        if (isHold) {\n            but.jtPressed = false;\n            jt.Util.addEventsListener(but, \"mousedown touchstart\", switchPressed);\n            jt.Util.addEventsListener(but, \"mouseup touchend touchcancel\", switchReleased);\n            jt.Util.addEventsListener(but, \"mouseleave\", switchLeft);\n        } else\n            jt.Util.onTapOrMouseDown(but, switchPressed);\n    };\n\n    function switchPressed(e) {\n        jt.Util.blockEvent(e);\n        if (logoMessageActive) return;\n        consoleControls.hapticFeedbackOnTouch(e);\n        screen.closeAllOverlays();\n        e.target.jtPressed = true;\n        consoleControls.processControlState(e.target.jtControl, true);\n    }\n\n    function switchReleased(e) {\n        jt.Util.blockEvent(e);\n        e.target.jtPressed = false;\n        if (logoMessageActive) return;\n        consoleControls.hapticFeedbackOnTouch(e);\n        consoleControls.processControlState(e.target.jtControl, false);\n    }\n\n    function switchLeft(e) {\n        if (!e.target.jtPressed) return;\n        switchReleased(e);\n    }\n\n    var addCartridgeControlButton = function (but, control) {\n        but.jtControl = control;\n        but.jtNeedsUIG = true;\n        jt.Util.onTapOrMouseDownWithBlockUIG(but, cartridgeButtonPressed);\n    };\n\n    function cartridgeButtonPressed(e, uigStart, uigEnd) {\n        if (!uigEnd) consoleControls.hapticFeedbackOnTouch(e);\n        if (uigStart) return;\n        screen.closeAllOverlays();\n        peripheralControls.controlActivated(e.target.jtControl);\n    }\n\n    var setVisibility = function(element, boo) {\n        element.style.opacity = boo ? 1 : 0;\n    };\n\n    var setUnavailable = function(element, boo) {\n        element.style.display = \"none\";\n    };\n\n    var setupCartridgeLabel = function() {\n        // Adjust default colors for the label as per parameters\n        var colors = (Javatari.CARTRIDGE_LABEL_COLORS || \"\").trim().split(/\\s+/);\n        if (colors[0]) DEFAULT_CARTRIDGE_LABEL_COLOR = colors[0];\n        if (colors[1]) DEFAULT_CARTRIDGE_BACK_COLOR = colors[1];\n        if (colors[2]) DEFAULT_CARTRIDGE_BORDER_COLOR = colors[2];\n\n        cartLabel = document.getElementById(\"jt-console-panel-cart-label\");\n        addCartridgeControlButton(cartLabel, jt.PeripheralControls.CARTRIDGE_LOAD_RECENT);\n    };\n\n\n\n    // Controls interface  -----------------------------------\n\n    var controls = jt.ConsoleControls;\n\n    this.controlStateChanged = function(control, state) {\n        if (active && visibleControls[control]) updateVisibleControlsState();\n    };\n\n    this.controlsStatesRedefined = function () {\n        if (active) updateVisibleControlsState();\n    };\n\n\n    // Cartridge interface  ------------------------------------\n\n    this.cartridgeInserted = function(cartridge) {\n        cartridgeInserted = cartridge;\n        if (active) refreshCartridge();\n    };\n\n\n    var active = false;\n\n    var consoleControls;\n    var peripheralControls;\n    var controlsSocket, controlsStateReport = {};\n    var cartridgeInserted;\n    var logoMessageActive = false;\n\n    var powerButton;\n    var colorButton;\n    var selectButton;\n    var resetButton;\n    var p0DiffButton;\n    var p1DiffButton;\n    var cartInsertedImage;\n    var cartChangeButton;\n    var cartChangeFileButton;\n    var cartChangeURLButton;\n\n    var cartLabel;\n\n    var visibleControls = {};\n    visibleControls[controls.POWER] = 1;\n    visibleControls[controls.BLACK_WHITE] = 1;\n    visibleControls[controls.SELECT] = 1;\n    visibleControls[controls.RESET] = 1;\n    visibleControls[controls.DIFFICULTY0] = 1;\n    visibleControls[controls.DIFFICULTY1] = 1;\n\n\n    var DEFAULT_CARTRIDGE_LABEL =        \"JAVATARI\";\n    var DEFAULT_CARTRIDGE_LABEL_COLOR =  \"#fa2525\";\n    var\tDEFAULT_CARTRIDGE_BACK_COLOR =   \"#101010\";\n    var\tDEFAULT_CARTRIDGE_BORDER_COLOR = \"transparent\";\n\n};\n\njt.ConsolePanel.DEFAULT_WIDTH = 460;\njt.ConsolePanel.DEFAULT_HEIGHT = 134;\n\njt.ConsolePanel.shouldStartActive = function() {\n    // Try some backward compatible means to find if Panel should not be active by default\n    return !Javatari.SCREEN_CONSOLE_PANEL_DISABLED && (Javatari.CONSOLE_PANEL_ELEMENT_ID === -1 || document.getElementById(Javatari.CONSOLE_PANEL_ELEMENT_ID));\n};\n\njt.ConsolePanel.sameBoxShadowAsScreen = function() {\n    var screenElement = document.getElementById(Javatari.SCREEN_ELEMENT_ID);\n    return screenElement ? window.getComputedStyle(screenElement, null).getPropertyValue(\"box-shadow\") : \"none\";\n};"
  },
  {
    "path": "src/main/room/screen/FullScreenSetup.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\nJavatariFullScreenSetup = {\n    apply: function fullScreenSetup() {\n        // Setup Basic full-screen CSS\n        if (!this.cssApplied) {\n            var style = document.createElement('style');\n            style.type = 'text/css';\n            style.innerHTML = this.css;\n            document.head.appendChild(style);\n            this.cssApplied = true;\n        }\n        // Apply Standalone mode full-screen basic styles to html and body immediately if needed\n        document.documentElement.classList.toggle(\"jt-full-screen\", this.shouldStartInFullScreen());\n    },\n    shouldStartInFullScreen: function () {\n        return window.Javatari\n            ? Javatari.SCREEN_FULLSCREEN_MODE === 1 || (Javatari.SCREEN_FULLSCREEN_MODE === -1 && this.isBrowserStandaloneMode())\n            : this.isBrowserStandaloneMode();\n    },\n    isBrowserStandaloneMode: function () {\n        return navigator.standalone || window.matchMedia(\"(display-mode: standalone)\").matches;\n    },\n    css: '' +\n        'html.jt-full-screen, html.jt-full-screen body {' +\n        '   background: black;' +\n        '}' +\n        'html.jt-full-screen .jt-full-screen-hidden {' +\n        '   display: none;' +\n        '}' +\n        'html:not(.jt-full-screen) .jt-full-screen-only {' +\n        '   display: none;' +\n        '}'\n};\nJavatariFullScreenSetup.apply();\n"
  },
  {
    "path": "src/main/room/screen/Monitor.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Monitor = function(display) {\n\"use strict\";\n\n    var self = this;\n\n    function init() {\n        prepareResources();\n        setDisplayDefaultSize();\n        self.setVideoStandard(videoStandard);\n    }\n\n    this.connect = function(pVideoSignal) {\n        videoSignal = pVideoSignal;\n        videoSignal.connectMonitor(this);\n    };\n\n    this.nextLine = function(pixels, vSynchSignal) {\n        // Process new line received\n        var vSynched = false;\n        if (line < signalHeight) {\n            // Copy to the back buffer only contents that will be displayed\n            if (line >= viewportOriginY && line < viewportOriginY + viewportHeight)\n                backBuffer.set(pixels, (line - viewportOriginY) * signalWidth);\n        } else\n            vSynched = maxLineExceeded();\n        line++;\n        if (!videoStandardDetected) videoStandardDetectionFrameLineCount++;\n        if (vSynchSignal) {\n            if (!videoStandardDetected) videoStandardDetectionNewFrame();\n            vSynched |= newFrame();\n        }\n        return vSynched;\n    };\n\n    //this.nextLineNew = function(pixels, vSynchSignal) {\n    //    // Process new line received\n    //    var frameEnd = false;\n    //    if (line < signalHeight) {\n    //        // Copy to the back buffer only contents that will be displayed\n    //        if (line >= viewportOriginY && line < viewportOriginY + viewportHeight)\n    //            backBuffer.set(pixels, (line - viewportOriginY) * signalWidth);\n    //    } else\n    //        frameEnd = maxLineExceeded();\n    //    line++;\n    //    if (!videoStandardDetected) ++videoStandardDetectionFrameLineCount;\n    //    if (vSynchActive ^ vSynchSignal) {\n    //        vSynchActive = vSynchSignal;\n    //        if (!vSynchSignal) {\n    //            if (!videoStandardDetected) videoStandardDetectionNewFrame();\n    //            return newFrame();\n    //        }\n    //    }\n    //    return frameEnd;\n    //};\n\n    var newFrame = function() {\n        if (line < minLinesToSync) return false;\n\n        if (showInfo) display.showOSD(videoStandard.name + \"  \" + line + \" lines\" /* ,  CRT mode: \" + crtModeNames[crtMode] */, true);\n\n        // Start a new frame\n        line = 0;\n        frame++;\n        return true;\n    };\n\n    var maxLineExceeded = function() {\n        if (line > maxLinesToSync) {\n            //if (debug > 0) Util.log(\"Display maximum scanlines exceeded: \" + line);\n            return newFrame();\n        } else\n            return false;\n    };\n\n    this.setVideoStandard = function(standard) {\n        videoStandard = standard;\n        signalWidth = standard.totalWidth;\n        signalHeight = standard.totalHeight;\n        minLinesToSync = signalHeight - VSYNC_TOLERANCE;\n        maxLinesToSync = signalHeight + VSYNC_TOLERANCE + EXTRA_UPPER_VSYNC_TOLERANCE;\n        if (isDefaultViewport) {\n            viewportHeightPct = videoStandard.defaultHeightPct;\n            viewportOriginYPct = videoStandard.defaultOriginYPct;\n        }\n        setViewportSize(viewportWidth, viewportHeightPct);\n        setViewportOrigin(viewportOriginX, viewportOriginYPct);\n    };\n\n    var videoStandardDetectionNewFrame = function() {\n        var linesCount = videoStandardDetectionFrameLineCount;\n        videoStandardDetectionFrameLineCount = 0;\n        // Only consider frames with linesCount in range with tolerances (NTSC 262, PAL 312)\n        if ((linesCount >= 250 && linesCount <= 281)\n            || (linesCount >= 300 && linesCount <= 325))\n            if (++videoStandardDetectionFrameCount >= 5)\n                videoStandardDetectionFinish(linesCount);\n    };\n\n    var videoStandardDetectionFinish = function(linesCount) {\n        videoStandardDetected = linesCount < 290 ? jt.VideoStandard.NTSC : jt.VideoStandard.PAL;\n\n        // Compute an additional number of lines to make the display bigger, if needed\n        // Only used when the detected number of lines per frame is bigger than standard by a reasonable amount\n        var prevAdd = videoStandardDetectionAdtLinesPerFrame;\n        var newAdd = linesCount - videoStandardDetected.totalHeight;\n        if (newAdd > 2) newAdd = (newAdd > 6 ? 6 : newAdd) - 2;\n        else newAdd = 0;\n\n        // Only sets size now if additional lines changed\n        if (newAdd != prevAdd) {\n            videoStandardDetectionAdtLinesPerFrame = newAdd;\n            self.setVideoStandard(videoStandardDetected);\n        }\n    };\n\n    this.videoSignalOff = function() {\n        line = 0;\n        display.videoSignalOff();\n    };\n\n    var setViewportOrigin = function(x, yPct) {\n        viewportOriginX = x;\n        if (viewportOriginX < 0) viewportOriginX = 0;\n        else if (viewportOriginX > signalWidth - viewportWidth) viewportOriginX = signalWidth - viewportWidth;\n\n        viewportOriginYPct = yPct;\n        if (viewportOriginYPct < 0) viewportOriginYPct = 0;\n        else if ((viewportOriginYPct / 100 * signalHeight) > signalHeight - viewportHeight)\n            viewportOriginYPct = (signalHeight - viewportHeight) / signalHeight * 100;\n\n        // Compute final display originY, adding a little for additional lines as discovered in last video standard detection\n        var adtOriginY = videoStandardDetectionAdtLinesPerFrame / 2;\n        viewportOriginY = ((viewportOriginYPct / 100 * signalHeight) + adtOriginY) | 0;\n        if ((viewportOriginY + viewportHeight) > signalHeight) viewportOriginY = signalHeight - viewportHeight;\n    };\n\n    var setViewportSize = function(width, heightPct) {\n        viewportWidth = width;\n        if (viewportWidth < 10) viewportWidth = 10;\n        else if (viewportWidth > signalWidth) viewportWidth = signalWidth;\n\n        viewportHeightPct = heightPct;\n        if (viewportHeightPct < 10) viewportHeightPct = 10;\n        else if (viewportHeightPct > 100) viewportHeightPct = 100;\n\n        // Compute final display height, considering additional lines as discovered in last video standard detection\n        viewportHeight = (viewportHeightPct / 100 * (signalHeight + videoStandardDetectionAdtLinesPerFrame)) | 0;\n        if (viewportHeight > signalHeight) viewportHeight = signalHeight;\n\n        offCanvas.width = viewportWidth;\n        offCanvas.height = viewportHeight;\n\n        setViewportOrigin(viewportOriginX, viewportOriginYPct);\n        displayUpdateSize();\n    };\n\n    var displayUpdateSize = function() {\n        if (!display) return;\n        display.displayMetrics(viewportWidth, viewportHeight);\n    };\n\n    var setDisplayDefaultSize = function() {\n        isDefaultViewport = true;\n        viewportOriginX = DEFAULT_ORIGIN_X;\n        viewportOriginYPct = videoStandard.defaultOriginYPct;\n        setViewportSize(DEFAULT_WIDTH, videoStandard.defaultHeightPct);\n    };\n\n    var prepareResources = function() {\n        offCanvas = document.createElement('canvas');\n        offCanvas.width = DEFAULT_WIDTH;\n        offCanvas.height = DEFAULT_HEIGHT;\n        offContext = offCanvas.getContext(\"2d\", { alpha: false, antialias: false });\n        offContext.globalCompositeOperation = \"copy\";\n        offContext.globalAlpha = 1;\n        offImageData = offContext.createImageData(jt.VideoStandard.PAL.totalWidth, jt.VideoStandard.PAL.totalHeight);\n        backBuffer = new Uint32Array(offImageData.data.buffer);\n    };\n\n    this.currentLine = function() {\n        return line;\n    };\n\n    this.refresh = function() {\n        // First paint the offscreen canvas with new frame data\n        offContext.putImageData(offImageData, -viewportOriginX, 0, viewportOriginX, 0, viewportWidth, viewportHeight);\n\n        // Then refresh display with the new image (canvas) and correct dimensions\n        display.refresh(offCanvas, viewportWidth, viewportHeight);\n\n        //if (debug > 0) cleanBackBuffer();\n    };\n\n    this.videoStandardDetectionStart = function() {\n        videoStandardDetected = null;\n        videoStandardDetectionFrameCount = 0;\n        videoStandardDetectionFrameLineCount = 0;\n    };\n\n    this.getVideoStandardDetected = function() {\n        return videoStandardDetected;\n    };\n\n    this.toggleShowInfo = function() {\n        showInfo = !showInfo;\n        if (!showInfo) display.showOSD(null, true);\n    };\n\n    this.signalOff = function() {\n        display.videoSignalOff();\n    };\n\n    this.showOSD = function(message, overlap, error) {\n        display.showOSD(message, overlap, error);\n    };\n\n    this.setDefaults = function() {\n        setDisplayDefaultSize();\n        display.crtModeSetDefault();\n        display.crtFilterSetDefault();\n        display.requestReadjust(true);\n    };\n\n    this.setDebugMode = function(boo) {\n        display.setDebugMode(boo);\n    };\n\n    this.crtModeToggle = function() {\n        display.crtModeToggle();\n    };\n\n    this.crtFilterToggle = function() {\n        display.crtFilterToggle();\n    };\n\n    this.fullscreenToggle = function() {\n        display.displayToggleFullscreen();\n    };\n\n    this.displayAspectDecrease = function() {\n        this.displayScale(normalizeAspectX(displayAspectX - SCALE_STEP), displayScaleY);\n        this.showOSD(\"Display Aspect: \" + displayAspectX.toFixed(2) + \"x\", true);\n    };\n\n    this.displayAspectIncrease = function() {\n        this.displayScale(normalizeAspectX(displayAspectX + SCALE_STEP), displayScaleY);\n        this.showOSD(\"Display Aspect: \" + displayAspectX.toFixed(2) + \"x\", true);\n    };\n\n    this.displayScaleDecrease = function() {\n        this.displayScale(displayAspectX, normalizeScaleY(displayScaleY - SCALE_STEP));\n        this.showOSD(\"Display Size: \" + displayScaleY.toFixed(2) + \"x\", true);\n    };\n\n    this.displayScaleIncrease = function() {\n        this.displayScale(displayAspectX, normalizeScaleY(displayScaleY + SCALE_STEP));\n        this.showOSD(\"Display Size: \" + displayScaleY.toFixed(2) + \"x\", true);\n    };\n\n    this.viewportOriginDecrease = function() {\n        isDefaultViewport = false;\n        setViewportOrigin(viewportOriginX, viewportOriginYPct + ORIGIN_Y_STEP);\n        this.showOSD(\"Viewport Origin: \" + viewportOriginY, true);\n    };\n\n    this.viewportOriginIncrease = function() {\n        isDefaultViewport = false;\n        setViewportOrigin(viewportOriginX, viewportOriginYPct - ORIGIN_Y_STEP);\n        this.showOSD(\"Viewport Origin: \" + viewportOriginY, true);\n    };\n\n    this.viewportSizeDecrease = function() {\n        setDisplayDefaultSize();\n        this.showOSD(\"Viewport Size: Standard\", true);\n    };\n\n    this.viewportSizeIncrease = function() {\n        isDefaultViewport = false;\n        setViewportSize(signalWidth, 100);\n        this.showOSD(\"Viewport Size: Full Signal\", true);\n    };\n\n    this.displayScale = function(aspectX, scaleY) {\n        displayAspectX = aspectX;\n        displayScaleY = scaleY;\n        display.displayScale(displayAspectX, displayScaleY);\n    };\n\n    function normalizeAspectX(aspectX) {\n        var ret = aspectX < 0.5 ? 0.5 : aspectX > 2.5 ? 2.5 : aspectX;\n        return Math.round(ret * 10) / 10;\n    }\n\n    function normalizeScaleY(scaleY) {\n        var ret = scaleY < 0.5 ? 0.5 : scaleY;\n        return Math.round(ret * 10) / 10;\n    }\n\n    this.controlStateChanged = function(control, state) {\n        display.controlStateChanged(control, state);\n    };\n\n    this.controlsStatesRedefined = function() {\n        display.controlsStatesRedefined();\n    };\n\n    this.consolePowerAndUserPauseStateUpdate = function(power, paused) {\n        display.consolePowerAndUserPauseStateUpdate(power, paused);\n    };\n\n    this.cartridgeInserted = function(cart) {\n        display.cartridgeInserted(cart);\n    };\n\n\n    var offCanvas;\n    var offContext;\n    var offImageData;\n    var backBuffer;\n\n    var videoSignal;\n    var signalWidth;\n    var signalHeight;\n    var videoStandard = jt.VideoStandard.NTSC;\n\n    var minLinesToSync;\n    var maxLinesToSync;\n\n    var line = 0;\n    var frame = 0;\n\n    var viewportWidth;\n    var viewportHeight;\n    var viewportHeightPct;\n    var viewportOriginX;\n    var viewportOriginY;\n    var viewportOriginYPct;\n    var isDefaultViewport = true;\n\n    var displayAspectX;\n    var displayScaleY;\n\n    var videoStandardDetected;\n    var videoStandardDetectionFrameCount;\n    var videoStandardDetectionFrameLineCount = 0;\n    var videoStandardDetectionAdtLinesPerFrame = 0;\n\n    var showInfo = false;\n\n    var DEFAULT_WIDTH = 160;\n    var DEFAULT_HEIGHT = 213;\n    var DEFAULT_ORIGIN_X = 68;\n    var VSYNC_TOLERANCE = 16;\n    var EXTRA_UPPER_VSYNC_TOLERANCE = 5;\n\n    var SCALE_STEP = 0.1;\n    var ORIGIN_Y_STEP = 0.4;\n\n\n    init();\n\n};\n\n\n"
  },
  {
    "path": "src/main/room/screen/ScreenGUI.es5.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.ScreenGUI = jt.Util.isMobileDevice()\n    ? {\n        BAR_HEIGHT: 29,\n        BAR_MENU_WIDTH: 150,\n        BAR_MENU_ITEM_HEIGHT: 33,\n        BAR_MENU_ITEM_FONT_SIZE: 14,\n        LOGO_SCREEN_WIDTH: 618,\n        LOGO_SCREEN_HEIGHT: 455,\n        TOUCH_CONTROLS_LEFT_WIDTH: 119,\n        TOUCH_CONTROLS_LEFT_WIDTH_BIG: 143,\n        TOUCH_CONTROLS_RIGHT_WIDTH: 80\n    }\n    : {\n        BAR_HEIGHT: 29,\n        BAR_MENU_WIDTH: 140,\n        BAR_MENU_ITEM_HEIGHT: 29,\n        BAR_MENU_ITEM_FONT_SIZE: 13,\n        LOGO_SCREEN_WIDTH: 618,\n        LOGO_SCREEN_HEIGHT: 455,\n        TOUCH_CONTROLS_LEFT_WIDTH: 119,\n        TOUCH_CONTROLS_LEFT_WIDTH_BIG: 143,\n        TOUCH_CONTROLS_RIGHT_WIDTH: 80\n    };\n\njt.ScreenGUI.html = function() {\n    return '<div id=\"jt-screen-fs\" tabindex=\"0\"> <div id=\"jt-screen-fs-center\" tabindex=\"-1\"> <div id=\"jt-screen-canvas-outer\"> <canvas id=\"jt-screen-canvas\" tabindex=\"-1\"></canvas> <img id=\"jt-canvas-loading-icon\" draggable=\"false\" src=\"' + jt.Images.urls.loading + '\"> <div id=\"jt-unmute-message\"></div> <div id=\"jt-logo\"> <div id=\"jt-logo-center\"> <img id=\"jt-logo-loading-icon\" draggable=\"false\" src=\"' + jt.Images.urls.loading + '\"> <img id=\"jt-logo-image\" draggable=\"false\" src=\"' + jt.Images.urls.logo + '\"> <div id=\"jt-logo-message\"> <div id=\"jt-logo-message-text\"></div> <div id=\"jt-logo-message-ok\"> <div id=\"jt-logo-message-ok-text\"></div> </div> </div> </div> </div> <div id=\"jt-osd\"></div> </div> <div id=\"jt-bar\"> <div id=\"jt-bar-inner\"></div> </div> <div id=\"jt-console-panel\" class=\"jt-console-panel\" tabindex=\"-1\"> </div> </div> <div id=\"jt-screen-scroll-message\"> Swipe up/down on the Screen <br>to hide the browser bars! </div> </div>';\n};\n\njt.ScreenGUI.htmlConsolePanel =\n    '<div id=\"jt-console-panel-p0-diff-label\" class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-p1-diff-label\" class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power-labels\" class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-reset-labels\" class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> <div id=\"jt-console-panel-power\" class=\"jt-console-panel-power jt-console-panel-lever\"></div> <div id=\"jt-console-panel-color\" class=\"jt-console-panel-color jt-console-panel-lever\"></div> <div id=\"jt-console-panel-select\" class=\"jt-console-panel-select jt-console-panel-lever\"></div> <div id=\"jt-console-panel-reset\" class=\"jt-console-panel-reset jt-console-panel-lever\"></div> <div id=\"jt-console-panel-p0-diff\" class=\"jt-console-panel-p0-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-p1-diff\" class=\"jt-console-panel-p1-diff jt-console-panel-switch\"></div> <div id=\"jt-console-panel-cart-image\" class=\"jt-console-panel-cart-image\"></div> <div id=\"jt-console-panel-cart-load\" class=\"jt-console-panel-cart-load\"></div> <div id=\"jt-console-panel-cart-file\" class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-url\" class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div id=\"jt-console-panel-cart-label\" class=\"jt-console-panel-cart-label\"></div>'\n;\n\njt.ScreenGUI.css = function() {\n    return 'html.jt-full-screen-scroll-hack body { position: absolute; width: 100%; height: ' + Math.max(1280, (Math.max(screen.width, screen.height) * 1.4) | 0) + 'px; top: 0; left: 0; margin: 0; padding: 0; border: none; overflow-x: hidden; overflow-y: auto; } #jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas { outline: none; } #' + Javatari.SCREEN_ELEMENT_ID + ' { display: inline-block; visibility: hidden; font-family: sans-serif; font-weight: normal; margin: 0; padding: 0; border: 1px solid black; background: black; overflow: visible; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; touch-callout: none; -webkit-tap-highlight-color: transparent; tap-highlight-color: transparent; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; text-size-adjust: none; } html.jt-full-screen #' + Javatari.SCREEN_ELEMENT_ID + ' { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; box-shadow: none; z-index: 2147483646;    /* one behind fsElement */ } html.jt-started #' + Javatari.SCREEN_ELEMENT_ID + ' { visibility: visible; } #jt-screen-scroll-message { position: absolute; bottom: 150%; left: 50%; height: 0; width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 28px; white-space: nowrap; color: hsl(0, 0%, 4%); background: hsl(0, 0%, 92%); border-radius: 15px; transform: translate(-50%, 0); box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7); transition: all 1.7s step-end, opacity 1.6s linear; overflow: hidden; opacity: 0; z-index: -1; } html.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message { opacity: 1; bottom: 23%; width: 215px; height: 56px; padding: 13px 20px; z-index: 60; transition: none; } #jt-screen-fs { position: relative; background: black; text-align: center; -webkit-tap-highlight-color: rgba(0,0,0,0); tap-highlight-color: rgba(0,0,0,0) } html.jt-full-screen #jt-screen-fs { position: absolute; width: 100%; height: 100%; left: 0; bottom: 0; right: 0; z-index: 2147483647; } html.jt-full-screen-scroll-hack #jt-screen-fs { position: fixed; bottom: 0; height: 100vh; } html.jt-full-screen #jt-screen-fs-center {      /* Used to center and move things horizontally in Landscape Full Screen */ position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #jt-screen-canvas-outer { display: inline-block; position: relative; overflow: hidden; vertical-align: top; line-height: 1px; z-index: 3; } #jt-screen-canvas { display: block; } #jt-bar { position: relative; left: 0; right: 0; height: ' + this.BAR_HEIGHT + 'px; margin: 0 auto; border-top: 1px solid black; background: hsl(0, 0%, 16%); overflow: visible;                    /* for the Menu to show through */ box-sizing: content-box; z-index: 40; } #jt-bar-inner { position: absolute; overflow: hidden; top: 0; bottom: 0; left: 0; right: 0; text-align: left; } html.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar { position: absolute; bottom: 0; transition: height 0.08s ease-in-out; } html.jt-bar-auto-hide #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } @media only screen and (orientation: landscape) { html.jt-full-screen #jt-bar.jt-hidden { transition: height 0.5s ease-in-out; height: 0; bottom: -1px; } } #jt-bar.jt-narrow .jt-narrow-hidden { display: none; } .jt-bar-button { display: inline-block; width: 24px; height: 28px; margin: 0 1px; background-image: url(\"' + jt.Images.urls.iconSprites + '\"); background-repeat: no-repeat; background-size: 264px 82px; cursor: pointer; } /* Firefox-specific rules */ @-moz-document url-prefix() { .jt-bar-button { image-rendering: optimizequality; } } /* .jt-bar-button { border: 1px solid yellow; background-origin: border-box; box-sizing: border-box; } */ #jt-bar-power { margin: 0 3px 0 6px; } #jt-bar-netplay.jt-hidden { display: none; } #jt-bar-select { margin: 0 2px 0 9px; width: 50px; } #jt-bar-reset { margin: 0 2px; width: 50px; } html.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset { display: none; } #jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus { float: right; margin: 0; } #jt-bar-settings { margin-right: 5px; } #jt-bar-full-screen.jt-mobile { margin: 0 6px; } #jt-bar-scale-plus { width: 21px; } #jt-bar-scale-minus { width: 18px; } #jt-bar-text { float: right; width: 32px; } #jt-bar-text.jt-mobile { margin: 0 0 0 6px; } #jt-bar-console-panel { position: absolute; left: 2px; right: 0; width: 39px; margin: 0 auto; } #jt-bar.jt-narrow #jt-bar-console-panel { position: static; float: right; margin-right: 3px; } #jt-bar-logo { position: absolute; left: 0; right: 0; width: 34px; margin: 0 auto; } html:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo { display: none; } #jt-bar-menu { position: absolute; display: none; bottom: ' + this.BAR_HEIGHT + 'px; font-size: ' + this.BAR_MENU_ITEM_FONT_SIZE + 'px; line-height: 1px; overflow: hidden; transform-origin: bottom center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-bar-menu-inner { display: inline-block; padding-bottom: 2px; border: 1px solid black; background: hsl(0, 0%, 16%); } .jt-bar-menu-item, #jt-bar-menu-title { position: relative; display: none; width: ' + this.BAR_MENU_WIDTH + 'px; height: ' + this.BAR_MENU_ITEM_HEIGHT + 'px; color: rgb(205, 205, 205); border: none; padding: 0; line-height: ' + this.BAR_MENU_ITEM_HEIGHT + 'px; text-shadow: 1px 1px 1px black; background: transparent; outline: none; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; cursor: pointer; box-sizing: border-box; } #jt-bar-menu-title { display: block; color: white; font-weight: bold; border-bottom: 1px solid black; margin-bottom: 1px; text-align: center; background: rgb(70, 70, 70); cursor: auto; } .jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) { color: white; background: hsl(358, 67%, 46%); } .jt-bar-menu-item-disabled { color: rgb(110, 110, 110); } .jt-bar-menu-item-divider { height: 1px; margin: 1px 0; background: black; } .jt-bar-menu-item-toggle { text-align: left; padding-left: 30px; } .jt-bar-menu-item-toggle::after { content: \"\"; position: absolute; width: 6px; height: 19px; top: ' + (((this.BAR_MENU_ITEM_HEIGHT - 21) / 2) | 0) + 'px; left: 10px; background: rgb(70, 70, 70); box-shadow: black 1px 1px 1px; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked { color: white; } .jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after { background: rgb(248, 33, 28); } #jt-console-panel { display: none; position: absolute; bottom: -' + (jt.ConsolePanel.DEFAULT_HEIGHT + 2) + 'px; left: 50%; transform: translate(-50%, 0); transform-origin: center top; margin: 0 auto; border: 1px solid black; z-index: 30; } html.jt-console-panel-active #jt-console-panel { display: block; } html.jt-full-screen #jt-console-panel { bottom: ' + (jt.ScreenGUI.BAR_HEIGHT + 2) + 'px; border: none; transform-origin: center bottom; } .jt-select-dialog { position: absolute; overflow: hidden; display: none; top: 0; bottom: 0; left: 0; right: 0; width: 540px; max-width: 92%; height: 297px; margin: auto; color: white; font-size: 18px; line-height: 21px; background: hsl(0, 0%, 16%); padding: 11px 0 0; text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } .jt-select-dialog.jt-show { display: block; } .jt-select-dialog > .jt-footer { position: absolute; width: 100%; bottom: 7px; font-size: 13px; text-align: center; color: rgb(170, 170, 170); } .jt-select-dialog > ul { position: relative; width: 88%; top: 5px; margin: auto; padding: 0; list-style: none; font-size: 14px; color: hsl(0, 0%, 88%); } .jt-select-dialog > ul li { display: none; position: relative; overflow: hidden; height: 26px; background: rgb(70, 70, 70); margin: 7px 0; padding: 11px 10px 0 18px;       /* Space on the left for the toggle mark for all lines */ line-height: 0; text-align: left; text-overflow: ellipsis; border: 2px dashed transparent; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); white-space: nowrap; box-sizing: border-box; cursor: pointer; } .jt-select-dialog > ul li.jt-visible { display: block; } .jt-select-dialog > ul li.jt-selected { color: white; background: hsl(358, 67%, 46%); } .jt-select-dialog > ul li.jt-droptarget { color: white; border-color: lightgray; } .jt-select-dialog > ul li.jt-toggle::after { content: \"\"; position: absolute; width: 6px; height: 17px; top: 2px; left: 6px; background: rgb(60, 60, 60); box-shadow: black 1px 1px 1px; } .jt-select-dialog > ul li.jt-toggle-checked::after { background: rgb(248, 33, 28); } #jt-cartridge-format.jt-select-dialog > ul { width: 100%; height: 226px; margin: 7px auto 0; padding: 0 0 0 30px; overflow-y: auto; box-sizing: border-box; } #jt-cartridge-format.jt-select-dialog > ul li { width: 280px; margin: 7px 0 2px 0; } #jt-cartridge-format.jt-select-dialog > ul li:first-child { margin-top: 0; } #jt-cartridge-format ::-webkit-scrollbar { width: 12px; } #jt-cartridge-format ::-webkit-scrollbar-track { background: transparent; } #jt-cartridge-format ::-webkit-scrollbar-thumb { border: solid transparent; border-width: 1px 1px 1px 2px; background: rgb(80, 80, 80); background-clip: content-box; } #jt-cartridge-format ul.jt-quick-options-list { width: 230px; margin: 18px 0 0 52px; } #jt-cartridge-format ul.jt-quick-options-list li div { height: 24px; line-height: 24px; } #jt-cartridge-format .jt-control { width: 60px; line-height: 24px; } /* Firefox-specific rules */ @-moz-document url-prefix() { /* Try to hide scrollbar, since we cant style it :-( */ #jt-cartridge-format.jt-select-dialog > ul { width: 304px; } } #jt-logo { position: absolute; display: none; top: 0; bottom: 0; left: 0; right: 0; background: black; } #jt-logo.jt-show { display: block; } #jt-logo-center { position: absolute; top: 50%; left: 50%; width: 598px; height: 456px; transform: translate(-50%, -50%); } #jt-logo-image { position: absolute; top: 50%; left: 50%; width: 335px; max-width: 57%; transform: translate(-50%, -50%); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-image { top: 128px; width: 37%; max-width: initial; } #jt-logo-loading-icon, #jt-canvas-loading-icon { display: none; position: absolute; top: 79%; left: 0; right: 0; width: 14%; height: 3%; margin: 0 auto; background-color: rgba(0, 0, 0, .8); border: solid transparent; border-width: 8px 30px; border-radius: 3px; box-sizing: content-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon { top: 204px; } #jt-unmute-message { display: none; position: absolute; left: 50%; bottom: 5px; height: 30px; padding: 0 10px; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 15px; line-height: 30px; color: rgb(210, 210, 210); background: rgba(0, 0, 0, 0.7); transform-origin: bottom center; transform: translate(-50%, 0); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-unmute-message::before { content: \"\"; display: inline-block; width: 24px; height: 20px; margin: 5px 9px 0 0; background-image: url(\"' + jt.Images.urls.muteIcon + '\"); background-repeat: no-repeat; background-size: 24px 20px; vertical-align: top; } #jt-unmute-message::after { content: \"Audio is muted. Click to unmute\"; } #jt-unmute-message.jt-show { display: inline-block; } #jt-logo-message { display: none; position: absolute; top: 226px; width: 100%; color: hsl(0, 0%, 97%); font-size: 29px; line-height: 34px; } #jt-screen-fs.jt-logo-message-active #jt-logo-message { display: block; } #jt-logo-message-ok { display: block; position: absolute; top: 91px; left: 193px; width: 214px; height: 130px; } #jt-logo-message-ok.jt-higher { top: 74px; } #jt-logo-message-ok-text { position: absolute; top: 49%; left: 50%; width: 120px; height: 47px; font-size: 23px; line-height: 47px; background: hsl(358, 67%, 46%); border-radius: 6px; color: white; transform: translate(-50%, -50%); } #jt-osd { position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: -29px; right: 16px; height: 29px; padding: 0 12px; margin: 0; font-weight: bold; font-size: 15px; line-height: 29px; color: rgb(0, 255, 0); background: rgba(0, 0, 0, 0.7); transform-origin: top right; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; opacity: 0; } .jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right { border: 0px solid transparent; box-sizing: border-box; } .jt-arrow-up    { border-bottom-color: inherit; } .jt-arrow-down  { border-top-color: inherit; } .jt-arrow-left  { border-right-color: inherit; } .jt-arrow-right { border-left-color: inherit; } .jt-quick-options-list { margin-top: 12px; padding: 0; list-style: none; color: hsl(0, 0%, 88%); } .jt-quick-options-list li { margin-top: 8px; line-height: 1px; text-align: left; } .jt-quick-options-list li div { display: inline-block; overflow: hidden; height: 26px; font-size: 14px; line-height: 26px; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box; } .jt-quick-options-list .jt-control { float: right; width: 86px; font-size: 15px; line-height: 25px; color: hsl(0, 0%, 70%); background: black; text-align: center; cursor: pointer; } .jt-quick-options-list .jt-control.jt-selected { color: white; background: hsl(358, 67%, 46%); box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); } .jt-quick-options-list .jt-control.jt-selected.jt-inactive { line-height: 21px; border: 2px dashed hsl(358, 67%, 46%); background: black; } #jt-quick-options { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 233px; height: 345px; margin: auto; padding: 11px 14px 0; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-quick-options.jt-show { display: block; } #jt-quick-options::before { content: \"Quick Options\"; display: block; } #jt-netplay { display: none; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 390px; height: 220px; margin: auto; padding-top: 11px; color: white; font-size: 18px; line-height: 22px; background: hsl(0, 0%, 16%); text-align: center; border: 1px solid black; box-sizing: initial; text-shadow: 1px 1px 1px black; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform-origin: left center; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; cursor: auto; z-index: 50; } #jt-netplay.jt-show { display: block; } #jt-netplay::before { content: \"Net Play!\"; display: block; } #jt-netplay-status-box { position: relative; margin-top: 17px; } #jt-netplay-status { display: inline-block; position: relative; width: 340px; font-size: 15px; line-height: 27px; background: black; vertical-align: top; text-shadow: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; box-sizing: border-box; cursor: auto; } #jt-netplay-status-box.jt-active #jt-netplay-status { padding: 0 16px 0 12px; } #jt-netplay-status-box.jt-active #jt-netplay-status::after { content: \"\"; position: absolute; width: 6px; height: 18px; top: 4px; left: 7px; background: rgb(248, 33, 28); } #jt-netplay-link { display: none; position: absolute; right: 25px; top: 0; width: 26px; height: 27px; color: white; font-size: 15px; font-weight: 600; line-height: 27px; text-decoration: none; background: black; text-align: center; } #jt-netplay-link:hover { background: hsl(358, 67%, 46%); cursor: pointer; } #jt-netplay-status-box.jt-active #jt-netplay-link { display: block; } .jt-netplay-button { display: inline-block; width: 86px; padding: 0; margin: 0; font-size: 15px; line-height: 26px; color: white; background: hsl(358, 67%, 46%); text-shadow: 1px 1px 1px black; border: none; box-shadow: 1px 1px 1px rgba(0, 0, 0, .5); cursor: pointer; } #jt-netplay-session-box { margin-top: 18px; } #jt-netplay-session-label, #jt-netplay-nick-label { font-size: 15px; margin-bottom: 4px; } #jt-netplay-session-label::before { content: \"Session Name\"; } #jt-netplay-session-box input { width: 150px; height: 26px; padding: 0 10px; margin: 0 8px; font-size: 15px; line-height: 26px; background: rgb(240, 240, 240); border: none; border-radius: 0; box-sizing: border-box; outline: none; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; cursor: auto; } #jt-netplay-nick-label { margin-top: 10px; } #jt-netplay-nick-label::before { content: \"User Nickname\"; } .jt-netplay-button:disabled { color: rgb(130, 130, 130); background: rgb(70, 70, 70); cursor: default; } #jt-netplay input:disabled { color: black; background: rgb(180, 180, 180); cursor: default; } #jt-netplay-session-box.jt-disabled div { color: rgb(130, 130, 130); } input#jt-netplay-link-text { position: absolute; top: 8px; left: 50px; width: 1px; height: 1px; padding: 0; margin: 0; border: none; color: transparent; background: transparent; opacity: 0; z-index: -10; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } #jt-touch-left, #jt-touch-right, #jt-touch-speed { display: none; position: absolute; z-index: 1; } html.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed { display: block; } .jt-touch-dir { width: 130px; height: 130px; color: hsl(0, 0%, 75%); border-radius: 100%; } .jt-touch-dir::before { content: \"\"; position: absolute; top: 14px; left: 14px; right: 14px; bottom: 14px; border: 1px solid hsl(0, 0%, 26%); border-radius: 100%; } .jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left { position: absolute; background: hsl(0, 0%, 31%); border-radius: 2px 2px 0 0; box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%); } .jt-touch-dir-joy .jt-touch-dir-up { width: 26px; height: 78px; top: 24px; left: 52px; } .jt-touch-dir-joy .jt-touch-dir-left { width: 78px; height: 25px; top: 51px; left: 26px; } .jt-touch-dir-joy .jt-touch-dir-left::before { content: \"\"; position: absolute; top: 2px; left: 23px; width: 33px; height: 22px; background: inherit; z-index: 1; } .jt-touch-dir-joy .jt-touch-dir-left::after { content: \"\"; position: absolute; top: 4px; left: 30px; height: 17px; width: 17px; border-radius: 100%; box-shadow:  inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%); z-index: 2; } .jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right { position: absolute; border-width: 5px; z-index: 2; } .jt-touch-dir .jt-arrow-up { top: 26px; left: 60px; border-bottom-width: 11px; } .jt-touch-dir .jt-arrow-down { bottom: 29px; left: 60px; border-top-width: 11px; } .jt-touch-dir .jt-arrow-left { top: 58px; left: 26px; border-right-width: 11px; } .jt-touch-dir .jt-arrow-right { top: 58px; right: 26px; border-left-width: 11px; } .jt-touch-button { position: relative; display: block; width: 72px; height: 72px; font-size: 20px; line-height: 67px; color: hsl(0, 0%, 79%); border-radius: 100%; cursor: default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; z-index: 0; } .jt-touch-button::before { content: \"\"; position: absolute; box-sizing: border-box; z-index: -1; } .jt-touch-button-joy::before, .jt-touch-button-none::before { width: 50px; height: 48px; top: 9px; left: 11px; border-radius: 100%; } #jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before { border: 2px solid hsl(0, 0%, 30%); } .jt-touch-button-joy.jt-touch-button-joy-button::before { border: none; background: hsl(1, 70%, 37%); box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%); } .jt-touch-button-joy.jt-touch-button-joy-buttonT::before { border: none; background: hsl(220, 72%, 39%); box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%); } #jt-touch-button  { z-index: 7 } #jt-touch-buttonT { z-index: 6 } #jt-touch-speed.jt-center { width: 84px; left: 0; right: 0; margin: 0 auto; } #jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause { margin-left: 21px } #jt-touch-pause, #jt-touch-fast { float: left; width: 42px; height: 42px; border-color: hsl(0, 0%, 70%); } #jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after { content: \"\"; display: inline-block; border: 0 solid transparent; box-sizing: border-box; } #jt-touch-pause::after { margin-top: 14px; width: 13px; height: 14px; border-width: 0; border-left-width: 4px; border-left-color: inherit; border-right-width: 4px; border-right-color: inherit; } #jt-touch-fast::before, #jt-touch-fast::after { margin-top: 14px; width: 11px; height: 14px; border-width: 7px; border-left-width: 11px; border-left-color: inherit; border-right-width: 0; } #jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after { margin: 12px 0 0 3px; width: 15px; height: 18x; border-width: 9px; border-left-width: 15px; border-right-width: 0; } #jt-touch-speed.jt-paused  #jt-touch-fast::after { width: 7px; border-width: 0; border-left-width: 3px; } #jt-touch-speed.jt-poweroff #jt-touch-fast { display: none; } .jt-console-panel { width:' + jt.ConsolePanel.DEFAULT_WIDTH + 'px; height:' + jt.ConsolePanel.DEFAULT_HEIGHT + 'px; background: black url(\"' + jt.Images.urls.panel + '\") no-repeat; background-size: 460px 134px; box-shadow: ' + jt.ConsolePanel.sameBoxShadowAsScreen() + '; outline: none; } html.jt-full-screen .jt-console-panel { box-shadow: none; } .jt-console-panel-icon { position: absolute; background: url(\"' + jt.Images.urls.iconSprites + '\") center no-repeat; background-size: 264px 82px; } .jt-console-panel-switch { position: absolute; bottom: 107px; width: 50px; height: 26px; opacity: 0; cursor: pointer; } .jt-console-panel-switch:after { content: \"\"; position: absolute; left: 11px; bottom: 5px; width: 27px; height: 16px; background: url(\"' + jt.Images.urls.panelSprites + '\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-lever { position: absolute; bottom: 30px; width: 44px; height: 72px; cursor: pointer; } .jt-console-panel-lever:after { content: \"\"; position: absolute; left: 12px; bottom: 8px; width: 20px; height: 46px; background: url(\"' + jt.Images.urls.panelSprites + '\") center no-repeat; background-size: 256px 93px; } .jt-console-panel-power { left: 19px; } .jt-console-panel-power:after { background-position: 0px 0px; } .jt-console-panel-color { left: 84px; } .jt-console-panel-color:after { background-position: -21px 0px; } .jt-console-panel-select { left: 340px; } .jt-console-panel-select:after { background-position: 0px -47px; } .jt-console-panel-reset { left: 403px; } .jt-console-panel-reset:after { background-position: -21px -47px; } .jt-console-panel-p0-diff { left: 152px; } .jt-console-panel-p0-diff:after { background-position: -229px -17px; } .jt-console-panel-p1-diff { left: 265px; } .jt-console-panel-p1-diff:after { background-position: -229px 0px; } .jt-console-panel-cart-image { position: absolute; left: 140px; bottom: 9px; width: 186px; height: 82px; background: url(\"' + jt.Images.urls.panelSprites + '\") center no-repeat; background-size: 256px 93px; background-position: -42px 0px; } .jt-console-panel-cart-load { position: absolute; left: 141px; bottom: 36px; width: 184px; height: 55px; cursor: pointer; } .jt-console-panel-cart-file { left: 170px; bottom: 3px; width: 31px; height: 30px; background-position: -132px -6px; cursor: pointer; } .jt-console-panel-cart-url { left: 266px; bottom: 3px; width: 31px; height: 30px; background-position: -161px -6px; cursor: pointer; } .jt-console-panel-cart-label { position: absolute; top: 51px; left: 156px; width: 148px; height: 25px; padding: 0px 2px; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: normal; font-variant: normal; font-weight: bold; font-stretch: normal; font-size: 14px; line-height: 25px; font-family: sans-serif; text-align: center; color: black; background: black; border: 1px solid transparent; opacity: 1; cursor: pointer; } .jt-console-panel-power-labels { left: 31px; bottom: 9px; width: 88px; height: 15px; background-position: -135px -37px; } .jt-console-panel-reset-labels { right: 16px; bottom: 9px; width: 96px; height: 15px; background-position: -135px -55px; } .jt-console-panel-p0-diff-label { left: 128px; top: 8px; width: 29px; height: 15px; background-position: -233px -37px; } .jt-console-panel-p1-diff-label { left: 313px; top: 8px; width: 28px; height: 15px; background-position: -233px -55px; } .jt-hide-labels .jt-console-panel-p0-diff-label, .jt-hide-labels .jt-console-panel-p1-diff-label, .jt-hide-labels .jt-console-panel-power-labels, .jt-hide-labels .jt-console-panel-reset-labels, .jt-hide-labels .jt-console-panel-cart-file, .jt-hide-labels .jt-console-panel-cart-url { visibility: hidden; } @media only screen and (orientation: landscape) {    /* Landscape */ #jt-touch-left { left: calc(-6px - ' + this.TOUCH_CONTROLS_LEFT_WIDTH + 'px); bottom: 50%; transform: translateY(50%); } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { left: calc(-6px - ' + this.TOUCH_CONTROLS_LEFT_WIDTH_BIG + 'px); transform: translateY(50%) scale(1.2); transform-origin: left center; } #jt-touch-right { right: calc(5px - ' + this.TOUCH_CONTROLS_RIGHT_WIDTH + 'px); bottom: 50%; transform: translateY(50%); } #jt-touch-speed { position: absolute; left: -103px; top: 10px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-speed { left: -118px; } /* Adjust centered elements leaving space to the touch controls on both sides */ html.jt-full-screen.jt-touch-active #jt-screen-fs-center { left: ' + this.TOUCH_CONTROLS_LEFT_WIDTH + 'px; right: ' + this.TOUCH_CONTROLS_RIGHT_WIDTH + 'px; } html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center { left: ' + this.TOUCH_CONTROLS_LEFT_WIDTH_BIG + 'px; } } @media only screen and (orientation: portrait) {    /* Portrait */ #jt-touch-left { left: 2px; bottom: 200px; } html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left { transform: scale(1.2); transform-origin: left center; } #jt-touch-right { right: 5px; bottom: 144px; width: 112px; height: 112px; } #jt-touch-speed { position: absolute; left: 19px; bottom: ' + (this.BAR_HEIGHT + 12) + 'px; } .jt-touch-button { position: absolute; } #jt-touch-button { bottom: 50%; right: 50%; } #jt-touch-buttonT { bottom: 100%; right: 0%; } } @media only screen and (orientation: portrait) and (max-device-height: 638px) {    /* Medium Portrait. Like iPhone 5 */ #jt-touch-left { bottom: 156px; } #jt-touch-right { bottom: 100px; } } @media only screen and (orientation: portrait) and (max-device-height: 518px) {    /* Short Portrait. Like iPhone 4 */ #jt-touch-left { bottom: 98px; } #jt-touch-right { bottom: 42px; } html.jt-console-panel-active #jt-touch-left { bottom: 106px; } html.jt-console-panel-active #jt-touch-right { bottom: 52px; } html.jt-full-screen.jt-console-panel-active #jt-touch-speed { display: none; } } ';\n};\n"
  },
  {
    "path": "src/main/room/screen/dialogs/CartridgeFormatDialog.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.CartridgeFormatDialog = function(screen, mainElement, atariConsole, cartridgeSocket) {\n\"use strict\";\n\n    var self = this;\n\n    this.show = function (pAltPower) {\n        if (!dialog) {\n            create();\n            return setTimeout(function() {\n                self.show(pAltPower);\n            }, 0);\n        }\n\n        altPower = pAltPower;\n        cartridge = cartridgeSocket.inserted();\n        if (!cartridge) return;\n\n        format = cartridge.format.name;\n        saveFormat = !!userROMFormats.getForROM(cartridge.rom);\n        saveFormatEnabled = !!cartridge.rom.info.h;             // No save when hash unavailable\n\n        visible = true;\n        dialog.classList.add(\"jt-show\");\n        refreshList();\n        dialog.focus();\n\n        jt.Util.scaleToFitParentHeight(dialog, mainElement, jt.ScreenGUI.BAR_HEIGHT);\n    };\n\n    this.hide = function (confirm) {\n        if (!visible) return;\n        dialog.classList.remove(\"jt-show\");\n        visible = false;\n        Javatari.room.screen.focus();\n        if (confirm) {\n            var formatName = userFormatOptions[optionSelected];\n            var isAuto = formatName === userFormatOptions[0];\n            var newCart = jt.CartridgeCreator.changeCartridgeFormat(cartridge, jt.CartridgeFormats[formatName]);\n            if (saveFormat) userROMFormats.setForROM(cartridge.rom, formatName, isAuto);\n            cartridgeSocket.insert(newCart, !altPower && atariConsole.powerIsOn, true);\n            screen.showOSD(\"ROM Format: \" + formatName + (isAuto ? \" (Auto)\" : \"\"), true);\n        }\n        cartridge = undefined;\n    };\n\n    function refreshList() {\n        optionSelected = 0;\n        cartridge.reinsertROMContent();\n        userFormatOptions = jt.CartridgeCreator.getUserFormatOptionNames(cartridge.rom);\n        var autoOption = jt.CartridgeCreator.getBestFormatOption(cartridge.rom);\n        if (!autoOption) autoOption = jt.CartridgeFormats[\"4K\"];  // default\n        userFormatOptions.unshift(autoOption.name);\n        for (var i = 0; i < listItems.length; ++i) {\n            if (i < userFormatOptions.length) {\n                if (userFormatOptions[i] === format) optionSelected = i;\n                listItems[i].innerHTML = i === 0\n                    ? \"AUTO: \" + autoOption.name + \": \" + autoOption.desc\n                    : userFormatOptions[i] + \": \" + jt.CartridgeFormats[userFormatOptions[i]].desc;\n                listItems[i].classList.add(\"jt-visible\");\n            } else\n                listItems[i].classList.remove(\"jt-visible\");\n        }\n        if (cartridge.format === autoOption) optionSelected = 0;\n        refreshListSelection();\n        refreshSaveFormat();\n    }\n\n    function refreshListSelection() {\n        var selItem;\n        for (var i = 0; i < userFormatOptions.length; ++i) {\n            if (i === optionSelected) {\n                selItem = listItems[i];\n                selItem.classList.add(\"jt-selected\");\n            } else\n                listItems[i].classList.remove(\"jt-selected\");\n        }\n\n        // Scroll to selected item if needed\n        if (list.scrollTop > selItem.offsetTop) {\n            list.scrollTop = selItem.offsetTop;\n        } else if (list.scrollTop + list.offsetHeight < selItem.offsetTop + 26 + 2) {\n            list.scrollTop = selItem.offsetTop - (list.offsetHeight - 26 - 2);        // item height ~ 26px\n        }\n    }\n\n    function refreshSaveFormat() {\n        saveButton.textContent = saveFormatEnabled ? saveFormat ? \"YES\" : \"NO\" : \"- -\";\n        saveButton.classList.toggle(\"jt-selected\", saveFormat);\n    }\n\n    function create() {\n        dialog = document.createElement(\"div\");\n        dialog.id = \"jt-cartridge-format\";\n        dialog.classList.add(\"jt-select-dialog\");\n        dialog.style.width = \"340px\";\n        dialog.style.height = \"310px\";\n        dialog.tabIndex = -1;\n\n        var header = document.createTextNode(\"Select ROM Format\");\n        dialog.appendChild(header);\n\n        // Define list\n        list = document.createElement('ul');\n        for (var i = 0, len = jt.CartridgeFormatsUserOptions.length + 1; i < len; ++i) {   // + 1 for Auto\n            var li = document.createElement(\"li\");\n            li.jtIndex = i;\n            li.classList.add(\"jt-visible\");\n            li.style.textAlign = \"center\";\n            listItems.push(li);\n            list.appendChild(li);\n        }\n        dialog.appendChild(list);\n\n        // Define Remember selection option\n        var wDiv = document.createElement('div');\n        var ul = document.createElement('ul');\n        ul.classList.add(\"jt-quick-options-list\");\n        li = document.createElement('li');\n        var div = document.createElement('div');\n        div.innerHTML = \"&#128190;&nbsp; Remember Choice\";\n        li.appendChild(div);\n        saveButton = document.createElement('div');\n        saveButton.innerHTML = \"NO\";\n        saveButton.classList.add(\"jt-control\");\n        li.appendChild(saveButton);\n        ul.appendChild(li);\n        wDiv.appendChild(ul);\n        dialog.appendChild(wDiv);\n\n        setupEvents();\n\n        mainElement.appendChild(dialog);\n    }\n\n    function setupEvents() {\n        function hideAbort()   { self.hide(false); }\n        function hideConfirm() { self.hide(true); }\n\n        // Do not close with taps or clicks inside\n        jt.Util.onTapOrMouseDownWithBlock(dialog, function() {\n            list.focus();\n        });\n\n        // Allow touch scrolls and touch clicks to happen\n        jt.Util.addEventsListener(list, \"touchstart touchmove touchend\", function(e) {\n            e.stopPropagation();\n        });\n\n        // Only select with mousedown\n        jt.Util.addEventsListener(list, \"mousedown\", function(e) {\n            e.stopPropagation();\n            jt.DOMConsoleControls.hapticFeedbackOnTouch(e);\n            if (e.target.jtIndex >= 0) selectLineElement(e.target.jtIndex);\n        });\n\n        // Confirm on click\n        jt.Util.addEventsListener(list, \"click\", function(e) {\n            jt.Util.blockEvent(e);\n            if (e.target.jtIndex >= 0) {\n                var sameWasSelected = e.target.jtIndex === optionSelected;\n                selectLineElement(e.target.jtIndex);\n                setTimeout(hideConfirm, sameWasSelected ? 0 : 120);\n            }\n        });\n\n        function selectLineElement(line) {\n            optionSelected = line;\n            refreshListSelection();\n        }\n\n        // Toggle Save Format option with tap or mousedown\n        jt.Util.onTapOrMouseDownWithBlock(saveButton, function(e) {\n            if (!saveFormatEnabled) return;\n            jt.DOMConsoleControls.hapticFeedbackOnTouch(e);\n            saveFormat = !saveFormat;\n            refreshSaveFormat();\n        });\n\n        // Trap keys, respond to some\n        dialog.addEventListener(\"keydown\", function(e) {\n            var keyCode = domKeys.codeForKeyboardEvent(e);\n            // Abort\n            if (keyCode === ESC_KEY) hideAbort();\n            // Confirm\n            else if (CONFIRM_KEYS.indexOf(keyCode) >= 0) hideConfirm();\n            // Select\n            else if (SELECT_KEYS[keyCode]) {\n                optionSelected += SELECT_KEYS[keyCode];\n                if (optionSelected < 0) optionSelected = 0; else if (optionSelected >= userFormatOptions.length) optionSelected = userFormatOptions.length - 1;\n                refreshListSelection();\n            }\n            return jt.Util.blockEvent(e);\n        });\n    }\n\n\n    var altPower = false;\n    var cartridge;\n    var format = \"\";\n    var optionSelected = 0;\n    var userFormatOptions = [];\n\n    var dialog, list, saveButton;\n    var listItems = [];\n    var visible = false;\n    var saveFormat = false, saveFormatEnabled = false;\n\n    var userROMFormats = Javatari.userROMFormats;\n\n    var domKeys = jt.DOMKeys;\n\n    var ESC_KEY = domKeys.VK_ESCAPE.c;\n    var CONFIRM_KEYS = [ domKeys.VK_ENTER.c, domKeys.VK_SPACE.c ];\n    var SELECT_KEYS = {};\n    SELECT_KEYS[domKeys.VK_UP.c] = -1;\n    SELECT_KEYS[domKeys.VK_DOWN.c] = 1;\n\n};"
  },
  {
    "path": "src/main/room/screen/dialogs/NetPlayDialog.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.NetPlayDialog = function(room, mainElement) {\n    \"use strict\";\n\n    var self = this;\n\n    this.show = function () {\n        if (!dialog) {\n            create();\n            return setTimeout(self.show, 0);\n        }\n\n        refresh();\n        refreshPreferencesData();\n        visible = true;\n        dialog.classList.add(\"jt-show\");\n        dialog.focus();\n\n        jt.Util.scaleToFitParentWidth(dialog, mainElement, 12);\n    };\n\n    this.hide = function() {\n        if (!visible) return;\n        dialog.classList.remove(\"jt-show\");\n        visible = false;\n        room.screen.focus();\n    };\n\n    this.roomNetPlayStatusChangeUpdate = function(oldMode) {\n        if (visible) refresh();\n\n        // Close automatically when entering Client mode\n        if (room.netPlayMode === 2 && oldMode < 0 && visible) return setTimeout(function() {\n            self.hide();\n        }, 2000);\n\n        // Open automatically when leaving Server/Client mode\n        if (room.netPlayMode === 0 && oldMode > 0 && !visible) self.show();\n    };\n\n    this.isVisible = function() {\n        return visible;\n    };\n\n    function refresh() {\n        switch (room.netPlayMode) {\n            case 0:\n                status.textContent = \"STANDALONE\";\n                start.textContent = \"HOST\";\n                join.textContent = \"JOIN\";\n                start.disabled = false;\n                join.disabled = false;\n                sessionName.disabled = false;\n                nick.disabled = false;\n                statusBox.classList.remove(\"jt-active\");\n                sessionBox.classList.remove(\"jt-disabled\");\n                sessionName.setAttribute(\"placeholder\", \"Enter a name\");\n                break;\n            case 1:\n                var netServer = room.getNetServer();\n                status.textContent = \"HOSTING Session: \" + netServer.getSessionID();\n                start.textContent = \"STOP\";\n                join.textContent = \"JOIN\";\n                start.disabled = false;\n                join.disabled = true;\n                sessionName.disabled = true;\n                nick.disabled = true;\n                statusBox.classList.add(\"jt-active\");\n                sessionBox.classList.add(\"jt-disabled\");\n                sessionName.setAttribute(\"placeholder\", \"Automatic\");\n                link.href = getSessionLink();\n                break;\n            case 2:\n                var netClient = room.getNetClient();\n                status.textContent = \"JOINED Session: \" + netClient.getSessionID();\n                start.textContent = \"HOST\";\n                join.textContent = \"LEAVE\";\n                start.disabled = true;\n                join.disabled = false;\n                sessionName.disabled = true;\n                nick.disabled = true;\n                statusBox.classList.add(\"jt-active\");\n                sessionBox.classList.remove(\"jt-disabled\");\n                sessionBox.classList.add(\"jt-disabled\");\n                sessionName.setAttribute(\"placeholder\", \"Enter a name\");\n                link.href = getSessionLink();\n                break;\n            case -1:\n            case -2:\n                status.textContent = \"Establishing connection...\";\n                sessionName.disabled = true;\n                nick.disabled = true;\n                statusBox.classList.remove(\"jt-active\");\n                sessionBox.classList.add(\"jt-disabled\");\n                if (room.netPlayMode === -1) {\n                    start.textContent = \"CANCEL\";\n                    join.textContent = \"JOIN\";\n                    start.disabled = false;\n                    join.disabled = true;\n                    sessionName.setAttribute(\"placeholder\", \"Automatic\");\n                } else {\n                    start.textContent = \"HOST\";\n                    join.textContent = \"CANCEL\";\n                    start.disabled = true;\n                    join.disabled = false;\n                    sessionName.setAttribute(\"placeholder\", \"Enter a name\");\n                }\n                break;\n        }\n    }\n\n    function refreshPreferencesData() {\n        sessionName.value = prefs.netPlaySessionName;\n        nick.value = prefs.netPlayNick;\n    }\n\n    function getSessionLink() {\n        return jt.Util.browserCurrentURL() + \"?JOIN=\" + room.netController.getSessionID();\n    }\n\n    function performCommand(e) {\n        var button = e.target;\n        if (button.disabled) return;\n\n        jt.DOMConsoleControls.hapticFeedbackOnTouch(e);\n\n        var save = false;\n        var prevMode = room.netPlayMode;\n        if (button === start && (prevMode === 0 || prevMode === 1 || prevMode === -1)) {\n            if (prevMode === 0) {\n                room.getNetServer().startSession(sessionName.value);\n                save = true;\n            } else\n                room.getNetServer().stopSession(false, prevMode === -1 ? \"NetPlay connection aborted\" : undefined);\n        } else if (button === join && (prevMode === 0 || prevMode === 2 || prevMode === -2)) {\n            if (prevMode === 0) {\n                room.getNetClient().joinSession(sessionName.value, nick.value);\n                save = true;\n            } else\n                room.getNetClient().leaveSession(false, prevMode === -2 ? \"NetPlay connection aborted\" : undefined);\n        }\n\n        // Save Session Name and Nick if starting/joining\n        if (save) {\n            var s = sessionName.value.trim();\n            var n = nick.value.trim();\n            if (prefs.netPlaySessionName !== s || prefs.netPlayNick !== n) {\n                prefs.netPlaySessionName = s;\n                prefs.netPlayNick = n;\n                Javatari.userPreferences.setDirty();\n                Javatari.userPreferences.save();\n            }\n        }\n    }\n\n    function create() {\n        dialog = document.createElement(\"div\");\n        dialog.id = \"jt-netplay\";\n        dialog.tabIndex = -1;\n\n        statusBox = document.createElement(\"div\");\n        statusBox.id = \"jt-netplay-status-box\";\n        dialog.appendChild(statusBox);\n\n        linkText = document.createElement(\"input\");\n        linkText.id = \"jt-netplay-link-text\";\n        statusBox.appendChild(linkText);\n\n        status = document.createElement(\"div\");\n        status.id = \"jt-netplay-status\";\n        status.textContent = \"STANDALONE\";\n        statusBox.appendChild(status);\n\n        link = document.createElement(\"a\");\n        link.id = \"jt-netplay-link\";\n        link.textContent = \"\\uD83D\\uDD17\";\n        link.setAttribute(\"title\", \"Copy Join Session link to clipboard\");\n        statusBox.appendChild(link);\n\n        sessionBox = document.createElement(\"div\");\n        sessionBox.id = \"jt-netplay-session-box\";\n        dialog.appendChild(sessionBox);\n\n        var sessionLabel = document.createElement(\"div\");\n        sessionLabel.id = \"jt-netplay-session-label\";\n        sessionBox.appendChild(sessionLabel);\n\n        start = document.createElement(\"button\");\n        start.id = \"jt-netplay-start\";\n        start.jtCommand = true;\n        start.classList.add(\"jt-netplay-button\");\n        start.textContent = \"HOST\";\n        sessionBox.appendChild(start);\n\n        sessionName = document.createElement(\"input\");\n        sessionName.id = \"jt-netplay-session-name\";\n        sessionName.setAttribute(\"placeholder\", \"Enter a name\");\n        sessionName.setAttribute(\"maxlength\", 12);\n        sessionName.spellcheck = false;\n        sessionName.autocorrect = false;\n        sessionName.autocapitalize = false;\n        sessionBox.appendChild(sessionName);\n\n        join = document.createElement(\"button\");\n        join.id = \"jt-netplay-join\";\n        join.jtCommand = true;\n        join.classList.add(\"jt-netplay-button\");\n        join.textContent = \"JOIN\";\n        sessionBox.appendChild(join);\n\n        var nickLabel = document.createElement(\"div\");\n        nickLabel.id = \"jt-netplay-nick-label\";\n        sessionBox.appendChild(nickLabel);\n\n        nick = document.createElement(\"input\");\n        nick.id = \"jt-netplay-nick\";\n        nick.setAttribute(\"placeholder\", \"Automatic\");\n        nick.setAttribute(\"maxlength\", 12);\n        nick.spellcheck = false;\n        nick.autocorrect = false;\n        nick.autocapitalize = false;\n        sessionBox.appendChild(nick);\n\n        setupEvents();\n\n        mainElement.appendChild(dialog);\n    }\n\n    function setupEvents() {\n        // Do not close with taps or clicks inside, select with tap or mousedown\n        jt.Util.onTapOrMouseDownWithBlock(dialog, function(e) {\n            if (e.target.jtCommand) {\n                performCommand(e);\n            } else\n                dialog.focus();\n        });\n\n        // Trap keys, respond to some\n        dialog.addEventListener(\"keydown\", function(e) {\n            // Exit\n            if (EXIT_KEYS.indexOf(e.keyCode) >= 0) self.hide();\n            return jt.Util.blockEvent(e);\n        });\n\n        // Block invalid characters in sessionName and nick\n        function filterChars(e) {\n            var item = e.target;\n            var value = item.value;\n            if (!value || value.match(/^[A-Za-z0-9]+[A-Za-z0-9_\\-]*@?$/))       // OK, store value\n                return item.jtLastValidValue = value;\n            else\n                return item.value = item.jtLastValidValue || \"\";                // Not OK, use last OK value\n        }\n        sessionName.addEventListener(\"input\", filterChars);\n        nick.addEventListener(\"input\", filterChars);\n\n        // Allow selection and edit in status, sessionName and nick\n        jt.Util.addEventsListener(status, \"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\", function(e) {\n            e.stopPropagation();\n        });\n        jt.Util.addEventsListener(sessionName, \"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\", function(e) {\n            e.stopPropagation();\n        });\n        jt.Util.addEventsListener(nick, \"touchstart touchmove touchend mousedown mousemove mouseup keydown keyup\", function(e) {\n            e.stopPropagation();\n        });\n\n        // Block drag\n        dialog.ondragstart = jt.Util.blockEvent;\n\n        // Allow context in status\n        statusBox.addEventListener(\"contextmenu\", function(e) {\n            e.stopPropagation();\n        });\n\n        // Click on link\n        jt.Util.addEventsListener(link, \"click\", function(e) {\n            jt.Util.blockEvent(e);\n\n            if (!document.queryCommandSupported || !document.queryCommandSupported('copy'))\n                return room.showOSD(\"Copy to Clipboard not supported by the browser!\", true, true);\n\n            linkText.value = getSessionLink();\n            linkText.focus();\n            linkText.select();\n            document.execCommand(\"copy\");\n            dialog.focus();\n        });\n    }\n\n\n    var visible = false;\n    var dialog, statusBox, sessionBox;\n    var start, join, stop, status, link, linkText, sessionName, nick;\n\n    var prefs = Javatari.userPreferences.current;\n\n    var k = jt.DOMKeys;\n    var EXIT_KEYS = [ k.VK_ESCAPE.c ];\n\n};\n"
  },
  {
    "path": "src/main/room/screen/dialogs/QuickOptionsDialog.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.QuickOptionsDialog = function(mainElement, consoleControls, consoleControlsSocket, peripheralControls) {\n    \"use strict\";\n\n    var self = this;\n\n    this.show = function () {\n        if (!dialog) {\n            create();\n            return setTimeout(self.show, 0);\n        }\n\n        refresh();\n        visible = true;\n        dialog.classList.add(\"jt-show\");\n        dialog.focus();\n\n        jt.Util.scaleToFitParentHeight(dialog, mainElement, jt.ScreenGUI.BAR_HEIGHT);\n    };\n\n    this.hide = function() {\n        if (!visible) return;\n        Javatari.userPreferences.save();\n        dialog.classList.remove(\"jt-show\");\n        visible = false;\n        Javatari.room.screen.focus();\n    };\n\n    this.controlsModeStateUpdate = function () {\n        if (visible) refresh();\n    };\n\n    this.controlStateChanged = function(control, state) {\n        if (visible && (control === cc.NO_COLLISIONS || control === cc.VSYNCH)) refresh();\n    };\n\n    function refresh() {\n        for (var i = 0; i < items.length; ++i) {\n            var item = items[i];\n            var report = item.peripheral ? peripheralControls.getControlReport(item.control) : consoleControlsSocket.getControlReport(item.control);\n            item.value = report.label;\n            item.selected = report.active;\n            controlsItems[i].innerHTML = item.value;\n            controlsItems[i].classList.toggle(\"jt-selected\", !!item.selected);\n        }\n    }\n\n    function create() {\n        dialog = document.createElement(\"div\");\n        dialog.id = \"jt-quick-options\";\n        dialog.tabIndex = -1;\n\n        var pc = jt.PeripheralControls;\n\n        items = [\n            { label: \"Paddles\",                          control: pc.PADDLES_TOGGLE_MODE,         peripheral: true },\n            { label: \"Swap Controllers\",                 control: pc.P1_CONTROLS_TOGGLE,          peripheral: true },\n            { label: \"No Collisions\",                    control: cc.NO_COLLISIONS },\n            { label: \"&#128190;&nbsp; V-Synch\",          control: cc.VSYNCH },\n            { label: \"&#128190;&nbsp; CRT Filter\",       control: pc.SCREEN_CRT_FILTER,           peripheral: true },\n            { label: \"&#128190;&nbsp; Audio Buffer\",     control: pc.SPEAKER_BUFFER_TOGGLE,       peripheral: true },\n            { label: \"&#128190;&nbsp; Big Directionals\", control: pc.TOUCH_TOGGLE_DIR_BIG,        peripheral: true },\n            { label: \"&#128190;&nbsp; TurboFire Speed\",  control: pc.TURBO_FIRE_TOGGLE,           peripheral: true },\n            { label: \"&#128190;&nbsp; Haptic Feedback\",  control: pc.HAPTIC_FEEDBACK_TOGGLE_MODE, peripheral: true }\n        ];\n\n        // Define list\n        var list = document.createElement('ul');\n        list.classList.add(\"jt-quick-options-list\");\n\n        for (var i = 0; i < items.length; ++i) {\n            var li = document.createElement(\"li\");\n            var label = document.createElement(\"div\");\n            label.innerHTML = items[i].label;\n            li.appendChild(label);\n            var control = document.createElement(\"div\");\n            control.classList.add(\"jt-control\");\n            control.jtControlItem = items[i];\n            li.appendChild(control);\n            list.appendChild(li);\n            controlsItems.push(control);\n        }\n\n        dialog.appendChild(list);\n\n        setupEvents();\n\n        mainElement.appendChild(dialog);\n    }\n\n    function setupEvents() {\n        // Do not close with taps or clicks inside, select with tap or mousedown\n        jt.Util.onTapOrMouseDownWithBlock(dialog, function(e) {\n            if (e.target.jtControlItem) {\n                jt.DOMConsoleControls.hapticFeedbackOnTouch(e);\n                var item = e.target.jtControlItem;\n                if (item.peripheral) {\n                    peripheralControls.controlActivated(item.control, false, false);\n                    refresh();\n                } else\n                    consoleControls.processControlState(item.control, true);    // will get update and refresh\n            } else\n                dialog.focus();\n        });\n\n        // Trap keys, respond to some\n        dialog.addEventListener(\"keydown\", function(e) {\n            // Exit\n            if (EXIT_KEYS.indexOf(e.keyCode) >= 0) self.hide();\n            return jt.Util.blockEvent(e);\n        });\n    }\n\n\n    var visible = false;\n    var dialog, list;\n    var items, controlsItems = [];\n\n    var cc = jt.ConsoleControls;\n\n    var k = jt.DOMKeys;\n    var EXIT_KEYS = [ k.VK_ESCAPE.c, k.VK_ENTER.c, k.VK_SPACE.c ];\n\n};\n"
  },
  {
    "path": "src/main/room/screen/dialogs/RecentROMsDialog.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.RecentROMsDialog = function(mainElement, screen, recentROMs, fileLoader) {\n\"use strict\";\n\n    var self = this;\n\n    this.show = function (pSave) {\n        if (!dialog) {\n            create();\n            return setTimeout(function() {\n                self.show(pSave);\n            }, 0);\n        }\n\n        items = recentROMs.getCatalog().slice(0);        // clone\n        items.sort(function (a, b) { return a.n > b.n; });\n        var last = recentROMs.lastROMLoadedIndex;\n        last = items.indexOf(items.find(function(r) { return r.i === last; }));\n        itemSelected = last < 0 || last >= items.length ? items.length : last;\n\n        visible = true;\n        refreshList();\n        dialog.classList.add(\"jt-show\");\n        dialog.focus();\n\n        jt.Util.scaleToFitParentHeight(dialog, mainElement, jt.ScreenGUI.BAR_HEIGHT);\n    };\n\n    this.hide = function (confirm) {\n        if (!visible) return;\n        dialog.classList.remove(\"jt-show\");\n        visible = false;\n        Javatari.room.screen.focus();\n        if (confirm) {\n            if (itemSelected === items.length)\n                screen.openLoadFileDialog();\n            else {\n                var rom = recentROMs.getROM(items[itemSelected].i);\n                fileLoader.loadROM(rom);\n            }\n        }\n    };\n\n    function refreshList() {\n        dialog.style.height = \"\" + (42 + (items.length + 1) * 33) + \"px\";\n\n        for (var i = 0; i < 11; ++i) {                               // 10 + 1 for Open File option\n            var li = listItems[i];\n            var item = items[i];\n            li.classList.toggle(\"jt-visible\", i <= items.length);\n            li.classList.toggle(\"jt-toggle\", i < items.length);\n            li.classList.toggle(\"jt-toggle-checked\", i < items.length);\n            li.jtNeedsUIG = i === items.length;                      // Open file\n            li.innerHTML = item ? item.n : \"&nbsp;&nbsp;Open ROM File...\";\n        }\n        refreshListSelection();\n    }\n\n    function refreshListSelection() {\n        for (var i = 0; i < listItems.length; ++i)\n            listItems[i].classList.toggle(\"jt-selected\", i === itemSelected);\n    }\n\n    function create() {\n        dialog = document.createElement(\"div\");\n        dialog.id = \"jt-recent-roms\";\n        dialog.classList.add(\"jt-select-dialog\");\n        dialog.style.width = \"350px\";\n        dialog.tabIndex = -1;\n\n        dialog.appendChild(document.createTextNode(\"Select Cartridge\"));\n\n        // Define list\n        list = document.createElement('ul');\n        list.style.width = \"85%\";\n\n        for (var i = 0; i < 11; ++i) {\n            var li = document.createElement(\"li\");\n            li.style.textAlign = \"center\";\n            li.innerHTML = \"\";\n            li.jtItem = i;\n            listItems.push(li);\n            list.appendChild(li);\n        }\n        dialog.appendChild(list);\n\n        setupEvents();\n\n        mainElement.appendChild(dialog);\n    }\n\n    function setupEvents() {\n        function hideAbort()   { self.hide(false); }\n        function hideConfirm() { self.hide(true); }\n\n        // Do not close with taps or clicks inside\n        jt.Util.onTapOrMouseDownWithBlock(dialog, function() {\n            dialog.focus();\n        });\n\n        // Select with tap or mousedown (UIG)\n        jt.Util.onTapOrMouseDownWithBlockUIG(dialog, function(e, uigStart) {\n            if (e.target.jtItem >= 0) {\n                if (uigStart) jt.DOMConsoleControls.hapticFeedbackOnTouch(e);\n                itemSelected = e.target.jtItem;\n                refreshListSelection();\n                if (!uigStart) setTimeout(hideConfirm, 120);\n            }\n        });\n\n        // Trap keys, respond to some\n        dialog.addEventListener(\"keydown\", function(e) {\n            // Abort\n            if (e.keyCode === ESC_KEY) hideAbort();\n            // Confirm\n            else if (CONFIRM_KEYS.indexOf(e.keyCode) >= 0) hideConfirm();\n            // Select\n            else if (SELECT_KEYS[e.keyCode]) {\n                itemSelected += SELECT_KEYS[e.keyCode];\n                if (itemSelected < 0) itemSelected = 0; else if (itemSelected > items.length) itemSelected =  items.length;     // + 1 for Open File\n                refreshListSelection();\n            }\n            return jt.Util.blockEvent(e);\n        });\n    }\n\n\n    var items = [];\n    var itemSelected = 0;\n\n    var dialog, list;\n    var listItems = [];\n    var visible = false;\n\n    var k = jt.DOMKeys;\n    var ESC_KEY = k.VK_ESCAPE.c;\n    var CONFIRM_KEYS = [ k.VK_ENTER.c, k.VK_SPACE.c ];\n    var SELECT_KEYS = {};\n    SELECT_KEYS[k.VK_UP.c] = -1;\n    SELECT_KEYS[k.VK_DOWN.c] = 1;\n\n};"
  },
  {
    "path": "src/main/room/screen/dialogs/SaveStateDialog.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.SaveStateDialog = function(mainElement, consoleControls, peripheralControls, stateMedia) {\n\"use strict\";\n\n    var self = this;\n\n    this.show = function (pSave) {\n        if (!dialog) {\n            create();\n            return setTimeout(function() {\n                self.show(pSave);\n            }, 0);\n        }\n\n        save = pSave;\n        visible = true;\n        refreshList();\n        dialog.classList.add(\"jt-show\");\n        dialog.focus();\n\n        jt.Util.scaleToFitParentHeight(dialog, mainElement, jt.ScreenGUI.BAR_HEIGHT);\n    };\n\n    this.hide = function (confirm) {\n        if (!visible) return;\n        dialog.classList.remove(\"jt-show\");\n        visible = false;\n        Javatari.room.screen.focus();\n        if (confirm) {\n            var option = slotOptions[slotSelected];\n            var control = save ? option.save : option.load;\n            if (option.peripheral) peripheralControls.controlActivated(control);\n            else consoleControls.processControlState(control, true);\n        }\n    };\n\n    function refreshList() {\n        header.textContent = \"Select Slot to \" + (save ? \"Save\" : \"Load\");\n        var prefix = save ? \"Save to \" : \"Load from \";\n        for (var i = 0; i < listItems.length; ++i) {\n            var li = listItems[i];\n            li.innerHTML = prefix + slotOptions[i].d;\n            li.classList.toggle(\"jt-toggle-checked\", stateMedia.isSlotUsed(i + 1));\n        }\n        refreshListSelection();\n    }\n\n    function refreshListSelection() {\n        for (var i = 0; i < listItems.length; ++i)\n            listItems[i].classList.toggle(\"jt-selected\", i === slotSelected);\n    }\n\n    function create() {\n        dialog = document.createElement(\"div\");\n        dialog.id = \"jt-savestate\";\n        dialog.classList.add(\"jt-select-dialog\");\n        dialog.style.width = \"280px\";\n        dialog.style.height = \"\" + (41 + 11 * 33) + \"px\";\n        dialog.tabIndex = -1;\n\n        header = document.createTextNode(\"Select Slot\");\n        dialog.appendChild(header);\n\n        // Define list\n        list = document.createElement('ul');\n        list.style.width = \"80%\";\n\n        for (var i = 0; i < slotOptions.length; ++i) {\n            var li = document.createElement(\"li\");\n            li.classList.add(\"jt-visible\");\n            if (i < slotOptions.length - 1) li.classList.add(\"jt-toggle\");\n            li.style.textAlign = \"center\";\n            li.innerHTML = slotOptions[i].d;\n            li.jtSlot = i;\n            li.jtNeedsUIG = true;         // Will open dialog or download file!\n            listItems.push(li);\n            list.appendChild(li);\n        }\n        dialog.appendChild(list);\n\n        setupEvents();\n\n        mainElement.appendChild(dialog);\n    }\n\n    function setupEvents() {\n        function hideAbort()   { self.hide(false); }\n        function hideConfirm() { self.hide(true); }\n\n        // Do not close with taps or clicks inside\n        jt.Util.onTapOrMouseDownWithBlock(dialog, function() {\n            dialog.focus();\n        });\n\n        // Select with tap or mousedown (UIG)\n        jt.Util.onTapOrMouseDownWithBlockUIG(dialog, function(e, uigStart) {\n            if (e.target.jtSlot >= 0) {\n                if (uigStart) jt.DOMConsoleControls.hapticFeedbackOnTouch(e);\n                slotSelected = e.target.jtSlot;\n                refreshListSelection();\n                if (!uigStart) setTimeout(hideConfirm, 120);  // UIG\n            }\n        });\n\n        // Trap keys, respond to some\n        dialog.addEventListener(\"keydown\", function(e) {\n            // Abort\n            if (e.keyCode === ESC_KEY) hideAbort();\n            // Confirm\n            else if (CONFIRM_KEYS.indexOf(e.keyCode) >= 0) hideConfirm();\n            // Select\n            else if (SELECT_KEYS[e.keyCode]) {\n                slotSelected += SELECT_KEYS[e.keyCode];\n                if (slotSelected < 0) slotSelected = 0; else if (slotSelected > 10) slotSelected = 10;\n                refreshListSelection();\n            }\n            return jt.Util.blockEvent(e);\n        });\n    }\n\n\n    var save = false;\n    var slotSelected = 0;\n\n    var dialog, list;\n    var listItems = [];\n    var visible = false;\n    var header;\n\n    var c = jt.ConsoleControls;\n    var p = jt.PeripheralControls;\n    var slotOptions = [\n        { d: \"Slot 1\", load: c.LOAD_STATE_1,             save: c.SAVE_STATE_1 },\n        { d: \"Slot 2\", load: c.LOAD_STATE_2,             save: c.SAVE_STATE_2 },\n        { d: \"Slot 3\", load: c.LOAD_STATE_3,             save: c.SAVE_STATE_3 },\n        { d: \"Slot 4\", load: c.LOAD_STATE_4,             save: c.SAVE_STATE_4 },\n        { d: \"Slot 5\", load: c.LOAD_STATE_5,             save: c.SAVE_STATE_5 },\n        { d: \"Slot 6\", load: c.LOAD_STATE_6,             save: c.SAVE_STATE_6 },\n        { d: \"Slot 7\", load: c.LOAD_STATE_7,             save: c.SAVE_STATE_7 },\n        { d: \"Slot 8\", load: c.LOAD_STATE_8,             save: c.SAVE_STATE_8 },\n        { d: \"Slot 9\", load: c.LOAD_STATE_9,             save: c.SAVE_STATE_9 },\n        { d: \"Slot 10\", load: c.LOAD_STATE_10,           save: c.SAVE_STATE_10 },\n        { d: \"File...\", load: p.CONSOLE_LOAD_STATE_FILE, save: p.CONSOLE_SAVE_STATE_FILE, peripheral: true }\n    ];\n\n    var k = jt.DOMKeys;\n    var ESC_KEY = k.VK_ESCAPE.c;\n    var CONFIRM_KEYS = [ k.VK_ENTER.c, k.VK_SPACE.c ];\n    var SELECT_KEYS = {};\n    SELECT_KEYS[k.VK_UP.c] = -1;\n    SELECT_KEYS[k.VK_DOWN.c] = 1;\n\n};"
  },
  {
    "path": "src/main/room/screen/es6/ScreenGUI.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.ScreenGUI = jt.Util.isMobileDevice()\n    ? {\n        BAR_HEIGHT: 29,\n        BAR_MENU_WIDTH: 150,\n        BAR_MENU_ITEM_HEIGHT: 33,\n        BAR_MENU_ITEM_FONT_SIZE: 14,\n        LOGO_SCREEN_WIDTH: 618,\n        LOGO_SCREEN_HEIGHT: 455,\n        TOUCH_CONTROLS_LEFT_WIDTH: 119,\n        TOUCH_CONTROLS_LEFT_WIDTH_BIG: 143,\n        TOUCH_CONTROLS_RIGHT_WIDTH: 80\n    }\n    : {\n        BAR_HEIGHT: 29,\n        BAR_MENU_WIDTH: 140,\n        BAR_MENU_ITEM_HEIGHT: 29,\n        BAR_MENU_ITEM_FONT_SIZE: 13,\n        LOGO_SCREEN_WIDTH: 618,\n        LOGO_SCREEN_HEIGHT: 455,\n        TOUCH_CONTROLS_LEFT_WIDTH: 119,\n        TOUCH_CONTROLS_LEFT_WIDTH_BIG: 143,\n        TOUCH_CONTROLS_RIGHT_WIDTH: 80\n    };\n\njt.ScreenGUI.html = function() {\n    return `<div id=\"jt-screen-fs\" tabindex=\"0\">\n            <div id=\"jt-screen-fs-center\" tabindex=\"-1\">\n                <div id=\"jt-screen-canvas-outer\">\n                    <canvas id=\"jt-screen-canvas\" tabindex=\"-1\"></canvas>\n                    <img id=\"jt-canvas-loading-icon\" draggable=\"false\" src=\"` + jt.Images.urls.loading + `\">\n                    <div id=\"jt-unmute-message\"></div>\n                    <div id=\"jt-logo\">\n                        <div id=\"jt-logo-center\">\n                            <img id=\"jt-logo-loading-icon\" draggable=\"false\" src=\"` + jt.Images.urls.loading + `\">\n                            <img id=\"jt-logo-image\" draggable=\"false\" src=\"` + jt.Images.urls.logo + `\">\n                            <div id=\"jt-logo-message\">\n                                <div id=\"jt-logo-message-text\"></div>\n                                <div id=\"jt-logo-message-ok\">\n                                    <div id=\"jt-logo-message-ok-text\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div id=\"jt-osd\"></div>\n                </div>\n                <div id=\"jt-bar\">\n                    <div id=\"jt-bar-inner\"></div>\n                </div>\n                <div id=\"jt-console-panel\" class=\"jt-console-panel\" tabindex=\"-1\">\n                </div>\n            </div>\n            <div id=\"jt-screen-scroll-message\">\n                Swipe up/down on the Screen <br>to hide the browser bars!\n            </div>\n        </div>`;\n};\n\njt.ScreenGUI.htmlConsolePanel =\n    `<div id=\"jt-console-panel-p0-diff-label\" class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div>\n    <div id=\"jt-console-panel-p1-diff-label\" class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div>\n    <div id=\"jt-console-panel-power-labels\" class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div>\n    <div id=\"jt-console-panel-reset-labels\" class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div>\n    <div id=\"jt-console-panel-power\" class=\"jt-console-panel-power jt-console-panel-lever\"></div>\n    <div id=\"jt-console-panel-color\" class=\"jt-console-panel-color jt-console-panel-lever\"></div>\n    <div id=\"jt-console-panel-select\" class=\"jt-console-panel-select jt-console-panel-lever\"></div>\n    <div id=\"jt-console-panel-reset\" class=\"jt-console-panel-reset jt-console-panel-lever\"></div>\n    <div id=\"jt-console-panel-p0-diff\" class=\"jt-console-panel-p0-diff jt-console-panel-switch\"></div>\n    <div id=\"jt-console-panel-p1-diff\" class=\"jt-console-panel-p1-diff jt-console-panel-switch\"></div>\n    <div id=\"jt-console-panel-cart-image\" class=\"jt-console-panel-cart-image\"></div>\n    <div id=\"jt-console-panel-cart-load\" class=\"jt-console-panel-cart-load\"></div>\n    <div id=\"jt-console-panel-cart-file\" class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div>\n    <div id=\"jt-console-panel-cart-url\" class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div>\n    <div id=\"jt-console-panel-cart-label\" class=\"jt-console-panel-cart-label\"></div>`\n;\n\njt.ScreenGUI.css = function() {\n    return `html.jt-full-screen-scroll-hack body {\n    position: absolute;\n    width: 100%;\n    height: ` + Math.max(1280, (Math.max(screen.width, screen.height) * 1.4) | 0) + `px;\n    top: 0;\n    left: 0;\n    margin: 0;\n    padding: 0;\n    border: none;\n    overflow-x: hidden;\n    overflow-y: auto;\n}\n\n#jt-screen-fs, #jt-screen-fs div, #jt-screen-fs canvas {\n    outline: none;\n}\n\n#` + Javatari.SCREEN_ELEMENT_ID + ` {\n    display: inline-block;\n    visibility: hidden;\n    font-family: sans-serif;\n    font-weight: normal;\n    margin: 0;\n    padding: 0;\n    border: 1px solid black;\n    background: black;\n    overflow: visible;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    -webkit-touch-callout: none;\n    touch-callout: none;\n    -webkit-tap-highlight-color: transparent;\n    tap-highlight-color: transparent;\n    -webkit-text-size-adjust: none;\n    -moz-text-size-adjust: none;\n    text-size-adjust: none;\n}\nhtml.jt-full-screen #` + Javatari.SCREEN_ELEMENT_ID + ` {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: none;\n    box-shadow: none;\n    z-index: 2147483646;    /* one behind fsElement */\n}\nhtml.jt-started #` + Javatari.SCREEN_ELEMENT_ID + ` {\n    visibility: visible;\n}\n\n#jt-screen-scroll-message {\n    position: absolute;\n    bottom: 150%;\n    left: 50%;\n    height: 0;\n    width: 0;\n    margin: 0;\n    padding: 0;\n    font-size: 16px;\n    line-height: 28px;\n    white-space: nowrap;\n    color: hsl(0, 0%, 4%);\n    background: hsl(0, 0%, 92%);\n    border-radius: 15px;\n    transform: translate(-50%, 0);\n    box-shadow: 2px 2px 9px rgba(0, 0, 0, 0.7);\n    transition: all 1.7s step-end, opacity 1.6s linear;\n    overflow: hidden;\n    opacity: 0;\n    z-index: -1;\n}\nhtml.jt-full-screen-scroll-hack #jt-screen-fs.jt-scroll-message #jt-screen-scroll-message {\n    opacity: 1;\n    bottom: 23%;\n    width: 215px;\n    height: 56px;\n    padding: 13px 20px;\n    z-index: 60;\n    transition: none;\n}\n\n#jt-screen-fs {\n    position: relative;\n    background: black;\n    text-align: center;\n    -webkit-tap-highlight-color: rgba(0,0,0,0);\n    tap-highlight-color: rgba(0,0,0,0)\n}\nhtml.jt-full-screen #jt-screen-fs {\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    z-index: 2147483647;\n}\nhtml.jt-full-screen-scroll-hack #jt-screen-fs {\n    position: fixed;\n    bottom: 0;\n    height: 100vh;\n}\n\nhtml.jt-full-screen #jt-screen-fs-center {      /* Used to center and move things horizontally in Landscape Full Screen */\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n}\n\n#jt-screen-canvas-outer {\n    display: inline-block;\n    position: relative;\n    overflow: hidden;\n    vertical-align: top;\n    line-height: 1px;\n    z-index: 3;\n}\n\n#jt-screen-canvas {\n    display: block;\n}\n\n#jt-bar {\n    position: relative;\n    left: 0;\n    right: 0;\n    height: ` + this.BAR_HEIGHT + `px;\n    margin: 0 auto;\n    border-top: 1px solid black;\n    background: hsl(0, 0%, 16%);\n    overflow: visible;                    /* for the Menu to show through */\n    box-sizing: content-box;\n    z-index: 40;\n\n}\n#jt-bar-inner {\n    position: absolute;\n    overflow: hidden;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    text-align: left;\n}\n\nhtml.jt-bar-auto-hide #jt-bar, html.jt-full-screen #jt-bar {\n    position: absolute;\n    bottom: 0;\n    transition: height 0.08s ease-in-out;\n}\nhtml.jt-bar-auto-hide #jt-bar.jt-hidden {\n    transition: height 0.5s ease-in-out;\n    height: 0;\n    bottom: -1px;\n}\n@media only screen and (orientation: landscape) {\n    html.jt-full-screen #jt-bar.jt-hidden {\n        transition: height 0.5s ease-in-out;\n        height: 0;\n        bottom: -1px;\n    }\n}\n\n#jt-bar.jt-narrow .jt-narrow-hidden {\n    display: none;\n}\n\n.jt-bar-button {\n    display: inline-block;\n    width: 24px;\n    height: 28px;\n    margin: 0 1px;\n    background-image: url(\"` + jt.Images.urls.iconSprites + `\");\n    background-repeat: no-repeat;\n    background-size: 264px 82px;\n    cursor: pointer;\n}\n/* Firefox-specific rules */\n@-moz-document url-prefix() {\n    .jt-bar-button {\n        image-rendering: optimizequality;\n    }\n}\n/*\n.jt-bar-button {\n    border: 1px solid yellow;\n    background-origin: border-box;\n    box-sizing: border-box;\n}\n*/\n\n#jt-bar-power {\n    margin: 0 3px 0 6px;\n}\n#jt-bar-netplay.jt-hidden {\n    display: none; \n}\n#jt-bar-select {\n    margin: 0 2px 0 9px;\n    width: 50px;\n}\n#jt-bar-reset {\n    margin: 0 2px;\n    width: 50px;\n}\nhtml.jt-console-panel-active #jt-bar-select, html.jt-console-panel-active #jt-bar-reset {\n    display: none;\n}\n#jt-bar-settings, #jt-bar-full-screen, #jt-bar-scale-plus, #jt-bar-scale-minus {\n    float: right;\n    margin: 0;\n}\n#jt-bar-settings {\n    margin-right: 5px;\n}\n#jt-bar-full-screen.jt-mobile {\n    margin: 0 6px;\n}\n#jt-bar-scale-plus {\n    width: 21px;\n}\n#jt-bar-scale-minus {\n    width: 18px;\n}\n#jt-bar-text {\n    float: right;\n    width: 32px;\n}\n#jt-bar-text.jt-mobile {\n    margin: 0 0 0 6px;\n}\n#jt-bar-console-panel {\n    position: absolute;\n    left: 2px; right: 0;\n    width: 39px;\n    margin: 0 auto;\n}\n#jt-bar.jt-narrow #jt-bar-console-panel {\n    position: static;\n    float: right;\n    margin-right: 3px;\n}\n#jt-bar-logo {\n    position: absolute;\n    left: 0; right: 0;\n    width: 34px;\n    margin: 0 auto;\n}\nhtml:not(.jt-console-panel-active) #jt-bar.jt-narrow #jt-bar-logo {\n    display: none;\n}\n\n#jt-bar-menu {\n    position: absolute;\n    display: none;\n    bottom: ` + this.BAR_HEIGHT + `px;\n    font-size: ` + this.BAR_MENU_ITEM_FONT_SIZE + `px;\n    line-height: 1px;\n    overflow: hidden;\n    transform-origin: bottom center;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n#jt-bar-menu-inner {\n    display: inline-block;\n    padding-bottom: 2px;\n    border: 1px solid black;\n    background: hsl(0, 0%, 16%);\n}\n.jt-bar-menu-item, #jt-bar-menu-title {\n    position: relative;\n    display: none;\n    width: ` + this.BAR_MENU_WIDTH + `px;\n    height: ` + this.BAR_MENU_ITEM_HEIGHT + `px;\n    color: rgb(205, 205, 205);\n    border: none;\n    padding: 0;\n    line-height: ` + this.BAR_MENU_ITEM_HEIGHT + `px;\n    text-shadow: 1px 1px 1px black;\n    background: transparent;\n    outline: none;\n    overflow: hidden;\n    backface-visibility: hidden;\n    -webkit-backface-visibility: hidden;\n    cursor: pointer;\n    box-sizing: border-box;\n}\n#jt-bar-menu-title {\n    display: block;\n    color: white;\n    font-weight: bold;\n    border-bottom: 1px solid black;\n    margin-bottom: 1px;\n    text-align: center;\n    background: rgb(70, 70, 70);\n    cursor: auto;\n}\n.jt-bar-menu-item.jt-hover:not(.jt-bar-menu-item-disabled):not(.jt-bar-menu-item-divider) {\n    color: white;\n    background: hsl(358, 67%, 46%);\n}\n.jt-bar-menu-item-disabled {\n    color: rgb(110, 110, 110);\n}\n.jt-bar-menu-item-divider {\n    height: 1px;\n    margin: 1px 0;\n    background: black;\n}\n.jt-bar-menu-item-toggle {\n    text-align: left;\n    padding-left: 30px;\n}\n.jt-bar-menu-item-toggle::after {\n    content: \"\";\n    position: absolute;\n    width: 6px;\n    height: 19px;\n    top: ` + (((this.BAR_MENU_ITEM_HEIGHT - 21) / 2) | 0) + `px;\n    left: 10px;\n    background: rgb(70, 70, 70);\n    box-shadow: black 1px 1px 1px;\n}\n\n.jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked {\n    color: white;\n}\n.jt-bar-menu-item-toggle.jt-bar-menu-item-toggle-checked::after {\n    background: rgb(248, 33, 28);\n}\n\n\n#jt-console-panel {\n    display: none;\n    position: absolute;\n    bottom: -` + (jt.ConsolePanel.DEFAULT_HEIGHT + 2) + `px;\n    left: 50%;\n    transform: translate(-50%, 0);\n    transform-origin: center top;\n    margin: 0 auto;\n    border: 1px solid black;\n    z-index: 30;\n}\n\nhtml.jt-console-panel-active #jt-console-panel {\n    display: block;\n}\nhtml.jt-full-screen #jt-console-panel {\n    bottom: ` + (jt.ScreenGUI.BAR_HEIGHT + 2) + `px;\n    border: none;\n    transform-origin: center bottom;\n}\n\n\n.jt-select-dialog {\n    position: absolute;\n    overflow: hidden;\n    display: none;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    width: 540px;\n    max-width: 92%;\n    height: 297px;\n    margin: auto;\n    color: white;\n    font-size: 18px;\n    line-height: 21px;\n    background: hsl(0, 0%, 16%);\n    padding: 11px 0 0;\n    text-align: center;\n    border: 1px solid black;\n    box-sizing: initial;\n    text-shadow: 1px 1px 1px black;\n    box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    cursor: auto;\n    z-index: 50;\n}\n.jt-select-dialog.jt-show {\n    display: block;\n}\n.jt-select-dialog > .jt-footer {\n    position: absolute;\n    width: 100%;\n    bottom: 7px;\n    font-size: 13px;\n    text-align: center;\n    color: rgb(170, 170, 170);\n}\n.jt-select-dialog > ul {\n    position: relative;\n    width: 88%;\n    top: 5px;\n    margin: auto;\n    padding: 0;\n    list-style: none;\n    font-size: 14px;\n    color: hsl(0, 0%, 88%);\n}\n.jt-select-dialog > ul li {\n    display: none;\n    position: relative;\n    overflow: hidden;\n    height: 26px;\n    background: rgb(70, 70, 70);\n    margin: 7px 0;\n    padding: 11px 10px 0 18px;       /* Space on the left for the toggle mark for all lines */\n    line-height: 0;\n    text-align: left;\n    text-overflow: ellipsis;\n    border: 2px dashed transparent;\n    box-shadow: 1px 1px 1px rgba(0, 0, 0, .5);\n    white-space: nowrap;\n    box-sizing: border-box;\n    cursor: pointer;\n}\n.jt-select-dialog > ul li.jt-visible {\n    display: block;\n}\n.jt-select-dialog > ul li.jt-selected {\n    color: white;\n    background: hsl(358, 67%, 46%);\n}\n.jt-select-dialog > ul li.jt-droptarget {\n    color: white;\n    border-color: lightgray;\n}\n.jt-select-dialog > ul li.jt-toggle::after {\n    content: \"\";\n    position: absolute;\n    width: 6px;\n    height: 17px;\n    top: 2px;\n    left: 6px;\n    background: rgb(60, 60, 60);\n    box-shadow: black 1px 1px 1px;\n}\n.jt-select-dialog > ul li.jt-toggle-checked::after {\n    background: rgb(248, 33, 28);\n}\n\n#jt-cartridge-format.jt-select-dialog > ul {\n    width: 100%;\n    height: 226px;\n    margin: 7px auto 0;\n    padding: 0 0 0 30px;\n    overflow-y: auto;\n    box-sizing: border-box;\n}\n#jt-cartridge-format.jt-select-dialog > ul li {\n    width: 280px;\n    margin: 7px 0 2px 0;\n}\n#jt-cartridge-format.jt-select-dialog > ul li:first-child {\n    margin-top: 0;\n}\n#jt-cartridge-format ::-webkit-scrollbar {\n    width: 12px;\n}\n#jt-cartridge-format ::-webkit-scrollbar-track {\n    background: transparent;\n}\n#jt-cartridge-format ::-webkit-scrollbar-thumb {\n    border: solid transparent;\n    border-width: 1px 1px 1px 2px;\n    background: rgb(80, 80, 80);\n    background-clip: content-box;\n}\n#jt-cartridge-format ul.jt-quick-options-list {\n    width: 230px;\n    margin: 18px 0 0 52px;\n}\n#jt-cartridge-format ul.jt-quick-options-list li div {\n    height: 24px;\n    line-height: 24px;\n}\n#jt-cartridge-format .jt-control {\n    width: 60px;\n    line-height: 24px;\n}\n/* Firefox-specific rules */\n@-moz-document url-prefix() {\n    /* Try to hide scrollbar, since we cant style it :-( */\n    #jt-cartridge-format.jt-select-dialog > ul {\n        width: 304px;\n    }\n}\n\n#jt-logo {\n    position: absolute;\n    display: none;\n    top: 0; bottom: 0;\n    left: 0; right: 0;\n    background: black;\n}\n#jt-logo.jt-show {\n    display: block;\n}\n\n#jt-logo-center {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 598px;\n    height: 456px;\n    transform: translate(-50%, -50%);\n}\n\n#jt-logo-image {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 335px;\n    max-width: 57%;\n    transform: translate(-50%, -50%);\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n}\n#jt-screen-fs.jt-logo-message-active #jt-logo-image {\n    top: 128px;\n    width: 37%;\n    max-width: initial;\n}\n\n#jt-logo-loading-icon, #jt-canvas-loading-icon {\n    display: none;\n    position: absolute;\n    top: 79%;\n    left: 0; right: 0;\n    width: 14%;\n    height: 3%;\n    margin: 0 auto;\n    background-color: rgba(0, 0, 0, .8);\n    border: solid transparent;\n    border-width: 8px 30px;\n    border-radius: 3px;\n    box-sizing: content-box;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n}\n#jt-screen-fs.jt-logo-message-active #jt-logo-loading-icon {\n    top: 204px;\n}\n\n#jt-unmute-message {\n    display: none;\n    position: absolute;\n    left: 50%;\n    bottom: 5px;\n    height: 30px;\n    padding: 0 10px;\n    margin: 0 auto;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-weight: 500;\n    font-size: 15px;\n    line-height: 30px;\n    color: rgb(210, 210, 210);\n    background: rgba(0, 0, 0, 0.7);\n    transform-origin: bottom center;\n    transform: translate(-50%, 0);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n#jt-unmute-message::before {\n    content: \"\";\n    display: inline-block;\n    width: 24px;\n    height: 20px;\n    margin: 5px 9px 0 0;\n    background-image: url(\"` + jt.Images.urls.muteIcon + `\");\n    background-repeat: no-repeat;\n    background-size: 24px 20px;\n    vertical-align: top;\n}\n#jt-unmute-message::after {\n    content: \"Audio is muted. Click to unmute\";\n}\n#jt-unmute-message.jt-show {\n    display: inline-block;\n}\n\n#jt-logo-message {\n    display: none;\n    position: absolute;\n    top: 226px;\n    width: 100%;\n    color: hsl(0, 0%, 97%);\n    font-size: 29px;\n    line-height: 34px;\n}\n#jt-screen-fs.jt-logo-message-active #jt-logo-message {\n    display: block;\n}\n\n#jt-logo-message-ok {\n    display: block;\n    position: absolute;\n    top: 91px;\n    left: 193px;\n    width: 214px;\n    height: 130px;\n}\n#jt-logo-message-ok.jt-higher {\n    top: 74px;\n}\n#jt-logo-message-ok-text {\n    position: absolute;\n    top: 49%;\n    left: 50%;\n    width: 120px;\n    height: 47px;\n    font-size: 23px;\n    line-height: 47px;\n    background: hsl(358, 67%, 46%);\n    border-radius: 6px;\n    color: white;\n    transform: translate(-50%, -50%);\n}\n\n#jt-osd {\n    position: absolute;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    top: -29px;\n    right: 16px;\n    height: 29px;\n    padding: 0 12px;\n    margin: 0;\n    font-weight: bold;\n    font-size: 15px;\n    line-height: 29px;\n    color: rgb(0, 255, 0);\n    background: rgba(0, 0, 0, 0.7);\n    transform-origin: top right;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    opacity: 0;\n}\n\n\n.jt-arrow-up, .jt-arrow-down, .jt-arrow-left, .jt-arrow-right {\n    border: 0px solid transparent;\n    box-sizing: border-box;\n}\n.jt-arrow-up    { border-bottom-color: inherit; }\n.jt-arrow-down  { border-top-color: inherit; }\n.jt-arrow-left  { border-right-color: inherit; }\n.jt-arrow-right { border-left-color: inherit; }\n\n\n.jt-quick-options-list {\n    margin-top: 12px;\n    padding: 0;\n    list-style: none;\n    color: hsl(0, 0%, 88%);\n}\n.jt-quick-options-list li {\n    margin-top: 8px;\n    line-height: 1px;\n    text-align: left;\n}\n.jt-quick-options-list li div {\n    display: inline-block;\n    overflow: hidden;\n    height: 26px;\n    font-size: 14px;\n    line-height: 26px;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    box-sizing: border-box;\n}\n.jt-quick-options-list .jt-control {\n    float: right;\n    width: 86px;\n    font-size: 15px;\n    line-height: 25px;\n    color: hsl(0, 0%, 70%);\n    background: black;\n    text-align: center;\n    cursor: pointer;\n}\n.jt-quick-options-list .jt-control.jt-selected {\n    color: white;\n    background: hsl(358, 67%, 46%);\n    box-shadow: 1px 1px 1px rgba(0, 0, 0, .5);\n}\n.jt-quick-options-list .jt-control.jt-selected.jt-inactive {\n    line-height: 21px;\n    border: 2px dashed hsl(358, 67%, 46%);\n    background: black;\n}\n\n\n#jt-quick-options {\n    display: none;\n    position: absolute;\n    top: 0; bottom: 0;\n    left: 0; right: 0;\n    width: 233px;\n    height: 345px;\n    margin: auto;\n    padding: 11px 14px 0;\n    color: white;\n    font-size: 18px;\n    line-height: 22px;\n    background: hsl(0, 0%, 16%);\n    text-align: center;\n    border: 1px solid black;\n    box-sizing: initial;\n    text-shadow: 1px 1px 1px black;\n    box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    cursor: auto;\n    z-index: 50;\n}\n#jt-quick-options.jt-show {\n    display: block;\n}\n#jt-quick-options::before {\n    content: \"Quick Options\";\n    display: block;\n}\n\n#jt-netplay {\n    display: none;\n    position: absolute;\n    top: 0; bottom: 0;\n    left: 0; right: 0;\n    width: 390px;\n    height: 220px;\n    margin: auto;\n    padding-top: 11px;\n    color: white;\n    font-size: 18px;\n    line-height: 22px;\n    background: hsl(0, 0%, 16%);\n    text-align: center;\n    border: 1px solid black;\n    box-sizing: initial;\n    text-shadow: 1px 1px 1px black;\n    box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4);\n    transform-origin: left center;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    cursor: auto;\n    z-index: 50;\n}\n#jt-netplay.jt-show {\n    display: block;\n}\n#jt-netplay::before {\n    content: \"Net Play!\";\n    display: block;\n}\n#jt-netplay-status-box {\n    position: relative;\n    margin-top: 17px;\n}\n#jt-netplay-status {\n    display: inline-block;\n    position: relative;\n    width: 340px;\n    font-size: 15px;\n    line-height: 27px;\n    background: black;\n    vertical-align: top;\n    text-shadow: none;\n    -webkit-user-select: text;\n    -moz-user-select: text;\n    -ms-user-select: text;\n    user-select: text;\n    box-sizing: border-box;\n    cursor: auto;\n}\n#jt-netplay-status-box.jt-active #jt-netplay-status {\n    padding: 0 16px 0 12px;\n}\n#jt-netplay-status-box.jt-active #jt-netplay-status::after {\n    content: \"\";\n    position: absolute;\n    width: 6px;\n    height: 18px;\n    top: 4px;\n    left: 7px;\n    background: rgb(248, 33, 28);\n}\n#jt-netplay-link {\n    display: none;\n    position: absolute;\n    right: 25px;\n    top: 0;\n    width: 26px;\n    height: 27px;\n    color: white;\n    font-size: 15px;\n    font-weight: 600;\n    line-height: 27px;\n    text-decoration: none;\n    background: black;\n    text-align: center;\n}\n#jt-netplay-link:hover {\n    background: hsl(358, 67%, 46%);\n    cursor: pointer;\n}\n#jt-netplay-status-box.jt-active #jt-netplay-link {\n    display: block;\n}\n.jt-netplay-button {\n    display: inline-block;\n    width: 86px;\n    padding: 0;\n    margin: 0;\n    font-size: 15px;\n    line-height: 26px;\n    color: white;\n    background: hsl(358, 67%, 46%);\n    text-shadow: 1px 1px 1px black;\n    border: none;\n    box-shadow: 1px 1px 1px rgba(0, 0, 0, .5);\n    cursor: pointer;    \n}\n#jt-netplay-session-box {\n    margin-top: 18px;\n}\n#jt-netplay-session-label,\n#jt-netplay-nick-label {\n    font-size: 15px;\n    margin-bottom: 4px;\n}\n#jt-netplay-session-label::before {\n    content: \"Session Name\";\n}\n#jt-netplay-session-box input {\n    width: 150px;\n    height: 26px;\n    padding: 0 10px;\n    margin: 0 8px;\n    font-size: 15px;\n    line-height: 26px;\n    background: rgb(240, 240, 240);\n    border: none;\n    border-radius: 0;\n    box-sizing: border-box;\n    outline: none;\n    -webkit-user-select: text;\n    -moz-user-select: text;\n    -ms-user-select: text;\n    user-select: text;\n    cursor: auto;\n}\n#jt-netplay-nick-label {\n    margin-top: 10px;\n}\n#jt-netplay-nick-label::before {\n    content: \"User Nickname\";\n}\n.jt-netplay-button:disabled {\n    color: rgb(130, 130, 130);\n    background: rgb(70, 70, 70);\n    cursor: default;\n}\n#jt-netplay input:disabled {\n    color: black;\n    background: rgb(180, 180, 180);\n    cursor: default;\n}\n#jt-netplay-session-box.jt-disabled div {\n    color: rgb(130, 130, 130);\n}\ninput#jt-netplay-link-text {\n    position: absolute;\n    top: 8px;\n    left: 50px;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: 0;\n    border: none;\n    color: transparent;\n    background: transparent;\n    opacity: 0;\n    z-index: -10;\n    -webkit-user-select: text;\n    -moz-user-select: text;\n    -ms-user-select: text;\n    user-select: text;\n}\n\n#jt-touch-left, #jt-touch-right, #jt-touch-speed {\n    display: none;\n    position: absolute;\n    z-index: 1;\n}\n\nhtml.jt-full-screen.jt-touch-active #jt-touch-left, html.jt-full-screen.jt-touch-active #jt-touch-right, html.jt-full-screen.jt-touch-active #jt-touch-speed {\n    display: block;\n}\n\n.jt-touch-dir {\n    width: 130px;\n    height: 130px;\n    color: hsl(0, 0%, 75%);\n    border-radius: 100%;\n}\n.jt-touch-dir::before {\n    content: \"\";\n    position: absolute;\n    top: 14px; left: 14px;\n    right: 14px; bottom: 14px;\n    border: 1px solid hsl(0, 0%, 26%);\n    border-radius: 100%;\n}\n\n.jt-touch-dir-joy .jt-touch-dir-up, .jt-touch-dir-joy .jt-touch-dir-left {\n    position: absolute;\n    background: hsl(0, 0%, 31%);\n    border-radius: 2px 2px 0 0;\n    box-shadow: inset 1px 2px 0px hsl(0, 0%, 43%), inset -1px -1px hsl(0, 0%, 19%), 0 3px 0 1px hsl(0, 0%, 21%);\n}\n.jt-touch-dir-joy .jt-touch-dir-up {\n    width: 26px;\n    height: 78px;\n    top: 24px;\n    left: 52px;\n}\n.jt-touch-dir-joy .jt-touch-dir-left {\n    width: 78px;\n    height: 25px;\n    top: 51px;\n    left: 26px;\n}\n.jt-touch-dir-joy .jt-touch-dir-left::before {\n    content: \"\";\n    position: absolute;\n    top: 2px;\n    left: 23px;\n    width: 33px;\n    height: 22px;\n    background: inherit;\n    z-index: 1;\n}\n.jt-touch-dir-joy .jt-touch-dir-left::after {\n    content: \"\";\n    position: absolute;\n    top: 4px;\n    left: 30px;\n    height: 17px;\n    width: 17px;\n    border-radius: 100%;\n    box-shadow:  inset 0 0 2px hsl(0, 0%, 22%), inset 1px 2px 3px 1px hsl(0, 0%, 26%), inset -1px -2px 1px hsl(0, 0%, 64%);\n    z-index: 2;\n}\n\n.jt-touch-dir .jt-arrow-up, .jt-touch-dir .jt-arrow-down, .jt-touch-dir .jt-arrow-left, .jt-touch-dir .jt-arrow-right {\n    position: absolute;\n    border-width: 5px;\n    z-index: 2;\n}\n.jt-touch-dir .jt-arrow-up {\n    top: 26px;\n    left: 60px;\n    border-bottom-width: 11px;\n}\n.jt-touch-dir .jt-arrow-down {\n    bottom: 29px;\n    left: 60px;\n    border-top-width: 11px;\n}\n.jt-touch-dir .jt-arrow-left {\n    top: 58px;\n    left: 26px;\n    border-right-width: 11px;\n}\n.jt-touch-dir .jt-arrow-right {\n    top: 58px;\n    right: 26px;\n    border-left-width: 11px;\n}\n\n.jt-touch-button {\n    position: relative;\n    display: block;\n    width: 72px;\n    height: 72px;\n    font-size: 20px;\n    line-height: 67px;\n    color: hsl(0, 0%, 79%);\n    border-radius: 100%;\n    cursor: default;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    z-index: 0;\n}\n\n.jt-touch-button::before {\n    content: \"\";\n    position: absolute;\n    box-sizing: border-box;\n    z-index: -1;\n}\n\n.jt-touch-button-joy::before, .jt-touch-button-none::before {\n    width: 50px;\n    height: 48px;\n    top: 9px;\n    left: 11px;\n    border-radius: 100%;\n}\n#jt-screen-fs.jt-touch-config-active .jt-touch-button-none::before {\n    border: 2px solid hsl(0, 0%, 30%);\n}\n\n.jt-touch-button-joy.jt-touch-button-joy-button::before {\n    border: none;\n    background: hsl(1, 70%, 37%);\n    box-shadow: inset -2px -7px 3px 1px hsl(1, 68%, 43%), inset 0px 0px 1px 9px hsl(1, 72%, 33%), 0px -1px 0px 1px hsl(1, 70%, 47%), 0px 1px 0px 2px hsl(1, 70%, 29%);\n}\n.jt-touch-button-joy.jt-touch-button-joy-buttonT::before {\n    border: none;\n    background: hsl(220, 72%, 39%);\n    box-shadow: inset -2px -7px 3px 1px hsl(220, 70%, 43%), inset 0px 0px 1px 9px hsl(220, 75%, 34%), 0px -1px 0px 1px hsl(220, 72%, 50%), 0px 1px 0px 2px hsl(220, 72%, 28%);\n}\n\n#jt-touch-button  { z-index: 7 }\n#jt-touch-buttonT { z-index: 6 }\n\n\n#jt-touch-speed.jt-center {\n     width: 84px;\n     left: 0; right: 0;\n     margin: 0 auto;\n}\n#jt-touch-speed.jt-center.jt-poweroff #jt-touch-pause {\n     margin-left: 21px\n}\n#jt-touch-pause, #jt-touch-fast {\n    float: left;\n    width: 42px;\n    height: 42px;\n    border-color: hsl(0, 0%, 70%);\n}\n#jt-touch-pause::after, #jt-touch-fast::before, #jt-touch-fast::after {\n    content: \"\";\n    display: inline-block;\n    border: 0 solid transparent;\n    box-sizing: border-box;\n}\n#jt-touch-pause::after {\n    margin-top: 14px;\n    width: 13px;\n    height: 14px;\n    border-width: 0;\n    border-left-width: 4px;\n    border-left-color: inherit;\n    border-right-width: 4px;\n    border-right-color: inherit;\n}\n#jt-touch-fast::before, #jt-touch-fast::after {\n    margin-top: 14px;\n    width: 11px;\n    height: 14px;\n    border-width: 7px;\n    border-left-width: 11px;\n    border-left-color: inherit;\n    border-right-width: 0;\n}\n#jt-touch-speed.jt-paused #jt-touch-pause::after, #jt-touch-speed.jt-poweroff #jt-touch-pause::after {\n    margin: 12px 0 0 3px;\n    width: 15px;\n    height: 18x;\n    border-width: 9px;\n    border-left-width: 15px;\n    border-right-width: 0;\n}\n#jt-touch-speed.jt-paused  #jt-touch-fast::after {\n    width: 7px;\n    border-width: 0;\n    border-left-width: 3px;\n}\n#jt-touch-speed.jt-poweroff #jt-touch-fast {\n    display: none;\n}\n\n\n.jt-console-panel {\n    width:` + jt.ConsolePanel.DEFAULT_WIDTH + `px;\n    height:` + jt.ConsolePanel.DEFAULT_HEIGHT + `px;\n    background: black url(\"` + jt.Images.urls.panel + `\") no-repeat;\n    background-size: 460px 134px;\n    box-shadow: ` + jt.ConsolePanel.sameBoxShadowAsScreen() + `;\n    outline: none;\n}\n\nhtml.jt-full-screen .jt-console-panel {\n    box-shadow: none;\n}\n\n.jt-console-panel-icon {\n    position: absolute;\n    background: url(\"` + jt.Images.urls.iconSprites + `\") center no-repeat;\n    background-size: 264px 82px;\n}\n\n.jt-console-panel-switch {\n    position: absolute;\n    bottom: 107px;\n    width: 50px;\n    height: 26px;\n    opacity: 0;\n    cursor: pointer;\n}\n.jt-console-panel-switch:after {\n    content: \"\";\n    position: absolute;\n    left: 11px;\n    bottom: 5px;\n    width: 27px;\n    height: 16px;\n    background: url(\"` + jt.Images.urls.panelSprites + `\") center no-repeat;\n    background-size: 256px 93px;\n}\n\n.jt-console-panel-lever {\n    position: absolute;\n    bottom: 30px;\n    width: 44px;\n    height: 72px;\n    cursor: pointer;\n}\n.jt-console-panel-lever:after {\n    content: \"\";\n    position: absolute;\n    left: 12px;\n    bottom: 8px;\n    width: 20px;\n    height: 46px;\n    background: url(\"` + jt.Images.urls.panelSprites + `\") center no-repeat;\n    background-size: 256px 93px;\n}\n\n.jt-console-panel-power {\n    left: 19px;\n}\n.jt-console-panel-power:after {\n    background-position: 0px 0px;\n}\n\n.jt-console-panel-color {\n    left: 84px;\n}\n.jt-console-panel-color:after {\n    background-position: -21px 0px;\n}\n\n.jt-console-panel-select {\n    left: 340px;\n}\n.jt-console-panel-select:after {\n    background-position: 0px -47px;\n}\n\n.jt-console-panel-reset {\n    left: 403px;\n}\n.jt-console-panel-reset:after {\n    background-position: -21px -47px;\n}\n\n.jt-console-panel-p0-diff {\n    left: 152px;\n}\n.jt-console-panel-p0-diff:after {\n    background-position: -229px -17px;\n}\n\n.jt-console-panel-p1-diff {\n    left: 265px;\n}\n.jt-console-panel-p1-diff:after {\n    background-position: -229px 0px;\n}\n\n.jt-console-panel-cart-image {\n    position: absolute;\n    left: 140px;\n    bottom: 9px;\n    width: 186px;\n    height: 82px;\n    background: url(\"` + jt.Images.urls.panelSprites + `\") center no-repeat;\n    background-size: 256px 93px;\n    background-position: -42px 0px;\n}\n\n.jt-console-panel-cart-load {\n    position: absolute;\n    left: 141px;\n    bottom: 36px;\n    width: 184px;\n    height: 55px;\n    cursor: pointer;\n}\n\n.jt-console-panel-cart-file {\n    left: 170px;\n    bottom: 3px;\n    width: 31px;\n    height: 30px;\n    background-position: -132px -6px;\n    cursor: pointer;\n}\n\n.jt-console-panel-cart-url {\n    left: 266px;\n    bottom: 3px;\n    width: 31px;\n    height: 30px;\n    background-position: -161px -6px;\n    cursor: pointer;\n}\n\n.jt-console-panel-cart-label {\n    position: absolute;\n    top: 51px;\n    left: 156px;\n    width: 148px;\n    height: 25px;\n    padding: 0px 2px;\n    margin: 0px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: bold;\n    font-stretch: normal;\n    font-size: 14px;\n    line-height: 25px;\n    font-family: sans-serif;\n    text-align: center;\n    color: black;\n    background: black;\n    border: 1px solid transparent;\n    opacity: 1;\n    cursor: pointer;\n}\n\n.jt-console-panel-power-labels {\n    left: 31px;\n    bottom: 9px;\n    width: 88px;\n    height: 15px;\n    background-position: -135px -37px;\n}\n\n.jt-console-panel-reset-labels {\n    right: 16px;\n    bottom: 9px;\n    width: 96px;\n    height: 15px;\n    background-position: -135px -55px;\n}\n\n.jt-console-panel-p0-diff-label {\n    left: 128px;\n    top: 8px;\n    width: 29px;\n    height: 15px;\n    background-position: -233px -37px;\n}\n\n.jt-console-panel-p1-diff-label {\n    left: 313px;\n    top: 8px;\n    width: 28px;\n    height: 15px;\n    background-position: -233px -55px;\n}\n\n.jt-hide-labels .jt-console-panel-p0-diff-label,\n.jt-hide-labels .jt-console-panel-p1-diff-label,\n.jt-hide-labels .jt-console-panel-power-labels,\n.jt-hide-labels .jt-console-panel-reset-labels,\n.jt-hide-labels .jt-console-panel-cart-file,\n.jt-hide-labels .jt-console-panel-cart-url {\n    visibility: hidden;\n}\n\n\n@media only screen and (orientation: landscape) {    /* Landscape */\n    #jt-touch-left {\n        left: calc(-6px - ` + this.TOUCH_CONTROLS_LEFT_WIDTH + `px);\n        bottom: 50%;\n        transform: translateY(50%);\n    }\n    html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left {\n        left: calc(-6px - ` + this.TOUCH_CONTROLS_LEFT_WIDTH_BIG + `px);\n        transform: translateY(50%) scale(1.2);\n        transform-origin: left center;\n    }\n\n    #jt-touch-right {\n        right: calc(5px - ` + this.TOUCH_CONTROLS_RIGHT_WIDTH + `px);\n        bottom: 50%;\n        transform: translateY(50%);\n    }\n\n    #jt-touch-speed {\n        position: absolute;\n        left: -103px;\n        top: 10px;\n    }\n    html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-speed {\n        left: -118px;\n    }\n\n    /* Adjust centered elements leaving space to the touch controls on both sides */\n    html.jt-full-screen.jt-touch-active #jt-screen-fs-center {\n        left: ` + this.TOUCH_CONTROLS_LEFT_WIDTH + `px;\n        right: ` + this.TOUCH_CONTROLS_RIGHT_WIDTH + `px;\n    }\n    html.jt-full-screen.jt-touch-active.jt-dir-big #jt-screen-fs-center {\n        left: ` + this.TOUCH_CONTROLS_LEFT_WIDTH_BIG + `px;\n    }\n}\n\n\n@media only screen and (orientation: portrait) {    /* Portrait */\n\n    #jt-touch-left {\n        left: 2px;\n        bottom: 200px;\n    }\n    html.jt-full-screen.jt-touch-active.jt-dir-big  #jt-touch-left {\n        transform: scale(1.2);\n        transform-origin: left center;\n    }\n\n    #jt-touch-right {\n        right: 5px;\n        bottom: 144px;\n        width: 112px;\n        height: 112px;\n    }\n\n    #jt-touch-speed {\n        position: absolute;\n        left: 19px;\n        bottom: ` + (this.BAR_HEIGHT + 12) + `px;\n    }\n\n    .jt-touch-button {\n        position: absolute;\n    }\n    #jt-touch-button {\n        bottom: 50%;\n        right: 50%;\n    }\n    #jt-touch-buttonT {\n        bottom: 100%;\n        right: 0%;\n    }\n\n}\n\n@media only screen and (orientation: portrait) and (max-device-height: 638px) {    /* Medium Portrait. Like iPhone 5 */\n\n    #jt-touch-left {\n        bottom: 156px;\n    }\n    #jt-touch-right {\n        bottom: 100px;\n    }\n\n}\n\n@media only screen and (orientation: portrait) and (max-device-height: 518px) {    /* Short Portrait. Like iPhone 4 */\n\n    #jt-touch-left {\n        bottom: 98px;\n    }\n    #jt-touch-right {\n        bottom: 42px;\n    }\n\n    html.jt-console-panel-active #jt-touch-left {\n        bottom: 106px;\n    }\n    html.jt-console-panel-active #jt-touch-right {\n        bottom: 52px;\n    }\n\n    html.jt-full-screen.jt-console-panel-active #jt-touch-speed {\n        display: none;\n    }\n\n}\n\n`;\n};\n"
  },
  {
    "path": "src/main/room/screen/es6/SettingsGUI.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// HTML and CSS data for Settings\n\njt.SettingsGUI = { WIDTH: 600, HEIGHT: 450};\n\njt.SettingsGUI.html = function() {\n    return `<div id=\"jt-modal\" tabindex=\"-1\">\n        <div id=\"jt-menu\">\n            <div id=\"jt-back\" jt-var=\"true\">\n                <div class=\"jt-back-arrow\">\n                </div>\n            </div>\n            <div class=\"jt-caption\">\n                Help & Settings\n            </div>\n            <div class=\"jt-items\">\n                <div id=\"jt-menu-console\" class=\"jt-item\" jt-var=\"true\">\n                    CONSOLE\n                </div>\n                <div id=\"jt-menu-ports\" class=\"jt-item\" jt-var=\"true\">\n                    CONTROLLERS\n                </div>\n                <div id=\"jt-menu-general\" class=\"jt-item jt-selected\" jt-var=\"true\">\n                    EMULATION\n                </div>\n                <div id=\"jt-menu-about\" class=\"jt-item\" jt-var=\"true\">\n                    ABOUT\n                </div>\n                <div id=\"jt-menu-selection\" jt-var=\"true\">\n                </div>\n            </div>\n        </div>\n        <div id=\"jt-content\" jt-var=\"true\">\n            <div id=\"jt-console\">\n                <div class=\"jt-left\">\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F1\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            POWER\n                        </div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F2\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            TV TYPE\n                        </div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F4\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            P1 Difficulty\n                        </div>\n                    </div>\n                </div>\n                <div class=\"jt-middle\">\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F5\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            Load Cartridge File\n                        </div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F6\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            Load Cartridge URL\n                        </div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F7\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            Remove Cartridge\n                        </div>\n                    </div>\n                </div>\n                <div class=\"jt-right\">\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F12\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            RESET\n                        </div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F11\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            SELECT\n                        </div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F9\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">\n                            P2 Difficulty\n                        </div>\n                    </div>\n                </div>\n                <div class=\"jt-full-divider\"></div>\n                <div class=\"jt-console-panel\">\n                    <div class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div>\n                    <div class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div>\n                    <div class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div>\n                    <div class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div>\n                    <div class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div>\n                    <div class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div>\n                </div>\n                <div class=\"jt-footer\">\n                    Drag & Drop Files or URLs to load Cartridge ROMs and State Files\n                </div>\n            </div>\n            <div id=\"jt-ports\">\n                <div class=\"jt-left\">\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                L\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Toggle Paddles</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                K\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Toggle Swap Sides</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                J\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Toggle Gamepads</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                H\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Adjust Turbo Fire speed</div>\n                    </div>\n                </div>\n                <div class=\"jt-right\">\n                    <div id=\"jt-ports-paddles-mode\" class=\"jt-hotkey jt-link jt-joystick-device\" jt-var=\"true\">Controllers: JOYSTICKS</div>\n                    <div id=\"jt-ports-p1-mode\" class=\"jt-hotkey jt-link jt-mouse-device\" jt-var=\"true\">Swap Mode: NORMAL</div>\n                    <div id=\"jt-ports-gamepads-mode\" class=\"jt-hotkey jt-link jt-joykeys-device\" jt-var=\"true\">Gamepads: AUTO (swapped)</div>\n                </div>\n                <div class=\"jt-full-divider\"></div>\n                <div class=\"jt-player jt-p1\">\n                    <div id=\"jt-control-p1-label\" class=\"jt-title\" jt-var=\"true\">\n                        PLAYER 1\n                    </div>\n                    <div class=\"jt-command jt-fire1\">\n                        Fire<br>\n                        <div id=\"jt-control-p1-button\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-up\">\n                        <div id=\"jt-control-p1-up-label\" jt-var=\"true\">\n                            Up\n                        </div>\n                        <div id=\"jt-control-p1-up\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-fire2\">\n                        Turbo Fire<br>\n                        <div id=\"jt-control-p1-buttonT\" class=\"jt-key\" jt-var=\"true\" >\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-left\">\n                        Left<br>\n                        <div id=\"jt-control-p1-left\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-controller\">\n                        <div id=\"jt-control-p1-controller\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-right\">\n                        Right<br>\n                        <div id=\"jt-control-p1-right\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-down\">\n                        <div id=\"jt-control-p1-down-label\" jt-var=\"true\">\n                            Down\n                        </div>\n                        <div id=\"jt-control-p1-down\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                </div>\n                <div class=\"jt-player jt-p2\">\n                    <div id=\"jt-control-p2-label\" class=\"jt-title\" jt-var=\"true\">\n                        PLAYER 2\n                    </div>\n                    <div class=\"jt-command jt-fire1\">\n                        Fire<br>\n                        <div id=\"jt-control-p2-button\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-up\">\n                        <div id=\"jt-control-p2-up-label\" jt-var=\"true\">\n                            Up\n                        </div>\n                        <div id=\"jt-control-p2-up\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-fire2\">\n                        Turbo Fire<br>\n                        <div id=\"jt-control-p2-buttonT\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-left\">\n                        Left<br>\n                        <div id=\"jt-control-p2-left\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-controller\">\n                        <div id=\"jt-control-p2-controller\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-right\">\n                        Right<br>\n                        <div id=\"jt-control-p2-right\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                    <div class=\"jt-command jt-down\">\n                        <div id=\"jt-control-p2-down-label\" jt-var=\"true\">\n                            Down\n                        </div>\n                        <div id=\"jt-control-p2-down\" class=\"jt-key\" jt-var=\"true\">\n                        </div>\n                    </div>\n                </div>\n                <div id=\"jt-ports-revert\" class=\"jt-link\" jt-var=\"true\">\n                    REVERT\n                </div>\n                <div id=\"jt-ports-defaults\" class=\"jt-link\" jt-var=\"true\">\n                    DEFAULTS\n                </div>\n            </div>\n            <div id=\"jt-general\">\n                <div class=\"jt-left\">\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                C\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Collisions</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                Shift\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                F1\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Fry Console</div>\n                    </div>\n                    <div class=\"jt-full-divider\"></div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                Q\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">NTSC/PAL</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                W\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">V-Synch Modes</div>\n                    </div>\n                    <div class=\"jt-divider\"></div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                R\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">CRT Modes</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                T\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">CRT Filters</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                D\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Debug Modes</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                I\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Show Info</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                G\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Capture Screen</div>\n                    </div>\n                    <div class=\"jt-full-divider\"></div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-desc\">Right-Click Bar Icons: Default Action</div>\n                    </div>\n                </div>\n                <div class=\"jt-right\">\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                0 - 9\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Load State</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Ctrl\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                0 - 9\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Save State</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F8\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Save State File</div>\n                    </div>\n                    <div class=\"jt-full-divider\"></div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                F12\n                            </div>&nbsp;&nbsp;/&nbsp;&nbsp;<div class=\"jt-key\">\n                                Shift\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                F12\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Fast / Slow Speed</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                Shift\n                            </div>&nbsp;<div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                Arrows\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Adjust Speed</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                P\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Toggle Pause</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                O\n                            </div>&nbsp;/&nbsp;<div class=\"jt-key\">\n                                F\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Next Frame</div>\n                    </div>\n                    <div class=\"jt-full-divider\"></div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                Enter\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Full Screen</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key jt-key-fixed\">\n                                Ctrl\n                            </div>&nbsp;<div class=\"jt-key jt-key-fixed\">\n                                Alt\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                Arrows\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Screen Size / Width</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                Shift\n                            </div>&nbsp;<div class=\"jt-key jt-key-fixed\">\n                                Ctrl\n                            </div>&nbsp;+&nbsp;<div class=\"jt-key\">\n                                Arrows\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Viewport Size / Origin</div>\n                    </div>\n                    <div class=\"jt-hotkey\">\n                        <div class=\"jt-command\">\n                            <div class=\"jt-key\">\n                                Backspace\n                            </div>\n                        </div>\n                        <div class=\"jt-desc\">Defaults</div>\n                    </div>\n                </div>\n            </div>\n            <div id=\"jt-about\">\n                <div id=\"jt-logo-version\">version&nbsp` + Javatari.VERSION + `</div>\n                <div class=\"jt-info\">` +\n                    atob(\"Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==\") + `<br>` +\n                    atob(\"PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9qYXZhdGFyaS5vcmciPmh0dHA6Ly9qYXZhdGFyaS5vcmc8L2E+\") + `\n                </div>\n                <div id=\"jt-browserinfo\" jt-var=\"true\">\n                </div>\n            </div>\n        </div>\n    </div>`;\n};\n\njt.SettingsGUI.css = function() {\n    return `#jt-modal * {\n    outline: none;\n    box-sizing: border-box;\n}\n\n#jt-modal {\n    position: absolute;\n    overflow: hidden;\n    width: ` + jt.SettingsGUI.WIDTH + `px;\n    height: 0;\n    opacity: 0;\n    visibility: hidden;\n    top: 50%;\n    left: 50%;\n    color: hsl(0, 0%, 10%);\n    font: normal 13px sans-serif;\n    white-space: nowrap;\n    text-align: initial;\n    box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4);\n    transform: scale(0.85);\n    transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    z-index: 50;\n}\n#jt-modal.jt-show {\n    transform: scale(1);\n    transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out;\n    height: ` + jt.SettingsGUI.HEIGHT + `px;\n    visibility: visible;\n    opacity: 1;\n}\n\n#jt-modal .jt-heading {\n    font-weight: 700;\n    color: hsl(0, 0%, 30%);\n}\n\n#jt-modal .jt-link {\n    font-weight: 700;\n    line-height: 21px;\n    color: hsl(228, 90%, 40%);\n    cursor: pointer;\n}\n#jt-modal .jt-link:hover {\n    outline: 1px solid;\n}\n\n.jt-command {\n    position: relative;\n    display: inline-block;\n    font-weight: 600;\n    color: hsl(0, 0%, 48%);\n}\n\n.jt-hotkey {\n    height: 27px;\n    padding: 3px 5px;\n    box-sizing: border-box;\n}\n\n.jt-hotkey .jt-desc {\n    display: inline-block;\n    line-height: 21px;\n}\n\n.jt-key {\n    position: relative;\n    display: inline-block;\n    top: -1px;\n    min-width: 25px;\n    height: 21px;\n    padding: 4px 6px 3px;\n    box-sizing: border-box;\n    font-weight: 600;\n    font-size: 12px;\n    line-height: 12px;\n    color: hsl(0, 0%, 42%);\n    background: white;\n    border-radius: 3px;\n    border: 1px solid rgb(210, 210, 210);\n    box-shadow: 0 1px 0 1px hsl(0, 0%, 47%);\n    text-align: center;\n}\n\n.jt-key-fixed {\n    width: 31px;\n    padding-left: 0;\n    padding-right: 2px;\n}\n\n.jt-footer {\n    margin-top: 16px;\n    text-align: center;\n}\n\n#jt-menu {\n    position: relative;\n    background: white;\n    border-bottom: 1px solid hsl(0, 0%, 72%);\n}\n\n#jt-menu #jt-back {\n    position: absolute;\n    width: 40px;\n    height: 34px;\n    margin: 3px 1px;\n    padding: 16px 12px;\n    cursor: pointer;\n}\n#jt-menu #jt-back:hover {\n    background: rgba(0, 0, 0, .12);\n}\n\n.jt-back-arrow {\n    display: block;\n    width: 16px;\n    height: 2px;\n    border-radius: 1000px;\n    background: hsl(0, 0%, 98%);\n}\n.jt-back-arrow:before {\n    content: \"\";\n    display: block;\n    position: absolute;\n    width: 10px;\n    height: 2px;\n    border-radius: inherit;\n    background: inherit;\n    transform: rotate(-45deg);\n    transform-origin: 1px 1px;\n}\n.jt-back-arrow:after {\n    content: \"\";\n    display: block;\n    position: absolute;\n    width: 10px;\n    height: 2px;\n    border-radius: inherit;\n    background: inherit;\n    transform: rotate(45deg);\n    transform-origin: 1px 1px;\n}\n\n\n#jt-menu .jt-caption {\n    height: 29px;\n    margin: 0 -1px;\n    padding: 10px 0 0 48px;\n    font-size: 18px;\n    color: white;\n    background: hsl(358, 66%, 50%);\n    box-shadow: 0 1px 3px rgba(0, 0, 0, .9);\n    vertical-align: middle;\n    box-sizing: content-box;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n\n#jt-menu .jt-items {\n    position: relative;\n    width: 84%;\n    height: 39px;\n    margin: 0 auto;\n    font-weight: 600;\n}\n\n#jt-menu .jt-item {\n    float: left;\n    width: 25%;\n    height: 100%;\n    padding-top: 13px;\n    font-size: 14px;\n    color: rgba(0, 0, 0, .43);\n    text-align: center;\n    cursor: pointer;\n}\n\n#jt-menu .jt-selected {\n    color: hsl(358, 67%, 46%);\n}\n\n#jt-menu #jt-menu-selection {\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 25%;\n    height: 3px;\n    background: hsl(358, 67%, 46%);\n    transition: left 0.3s ease-in-out;\n}\n\n#jt-content {\n    position: relative;\n    left: 0;\n    width: 3000px;\n    height: 371px;\n    background: rgb(218, 218, 218);\n    transition: left 0.3s ease-in-out\n}\n\n#jt-console, #jt-ports, #jt-general, #jt-about {\n    position: absolute;\n    width: ` + jt.SettingsGUI.WIDTH + `px;\n    height: 100%;\n    box-sizing: border-box;\n}\n\n\n#jt-console {\n    padding-top: 35px;\n}\n\n#jt-console .jt-hotkey {\n    height: 29px;\n}\n\n#jt-console .jt-command {\n    width: 42px;\n}\n\n#jt-console .jt-left, #jt-console .jt-middle, #jt-console .jt-right {\n    float: left;\n}\n\n#jt-console .jt-left {\n    width: 160px;\n    margin-left: 58px;\n}\n\n#jt-console .jt-middle {\n    width: 204px;\n}\n\n#jt-console .jt-right .jt-command {\n    width: 46px;\n}\n\n#jt-console .jt-console-panel {\n    position: relative;\n    margin: 18px auto 0;\n    box-shadow: rgba(0, 0, 0, 0.6) 2px 2px 4px;\n}\n\n#jt-console .jt-console-panel * {\n    cursor: auto;\n}\n\n#jt-console .jt-footer {\n    margin: 20px auto;\n}\n\n#jt-ports {\n    left: ` + jt.SettingsGUI.WIDTH + `px;\n    padding: 18px 0 0 27px;\n}\n\n#jt-ports > .jt-left {\n    float: left;\n    width: 335px;\n    padding-left: 26px;\n}\n\n#jt-ports > .jt-right {\n    float: left;\n}\n\n#jt-ports .jt-command {\n    width: 91px;\n}\n\n#jt-ports .jt-bottom {\n    width: 546px;\n    text-align: center;\n}\n\n#jt-ports .jt-player {\n    position: absolute;\n    top: 146px;\n    width: 217px;\n    color: rgba(0, 0, 0, .8);\n}\n\n#jt-ports .jt-p1 {\n    left: 47px;\n}\n\n#jt-ports .jt-p2 {\n    right: 47px;\n}\n\n#jt-ports .jt-title {\n    margin-bottom: 09px;\n    font-size: 14px;\n    line-height: 14px;\n    font-weight: bold;\n    color: hsl(0, 0%, 35%);\n    text-align: center;\n}\n\n#jt-ports .jt-player .jt-command {\n    display: block;\n    position: relative;\n    float: left;\n    width: 33%;\n    height: 45px;\n    font-size: 13px;\n    text-align: center;\n}\n\n#jt-ports .jt-command.jt-fire1, #jt-ports .jt-command.jt-fire2 {\n    top: 14px;\n}\n\n#jt-ports .jt-command.jt-left, #jt-ports .jt-command.jt-right {\n    top: 27px;\n}\n\n#jt-ports .jt-command.jt-down {\n    float: none;\n    clear: both;\n    margin: 0 auto;\n}\n\n#jt-ports .jt-command.jt-controller {\n    height: 90px;\n}\n\n#jt-ports #jt-control-p1-controller, #jt-ports #jt-control-p2-controller {\n    width: 70px;\n    height: 89px;\n    margin-left: 1px;\n    background: url(\"` + jt.Images.urls.controllers + `\") no-repeat -1px 0;\n    background-size: 73px 179px;\n}\n\n#jt-ports .jt-player .jt-key {\n    min-width: 33px;\n    height: 23px;\n    padding: 5px 6px 4px;\n    margin-top: 2px;\n    cursor: pointer;\n}\n\n#jt-ports .jt-player .jt-key:hover {\n    box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170);\n}\n\n#jt-ports .jt-player .jt-key.jt-redefining {\n    color: white;\n    background-color: rgb(87, 128, 255);\n    border-color: rgb(71, 117, 255);\n}\n\n#jt-ports .jt-player .jt-key.jt-undefined {\n    background-color: rgb(255, 150, 130);\n    border-color: rgb(255, 130, 90);\n}\n\n#jt-ports-defaults, #jt-ports-revert {\n    position: absolute;\n    left: 260px;\n    width: 82px;\n    text-align: center;\n    padding: 3px 0 1px;\n    font-size: 12px;\n}\n\n#jt-ports-defaults {\n    bottom: 47px;\n}\n\n#jt-ports-revert {\n    bottom: 21px;\n}\n\n\n#jt-general {\n    left: ` + (jt.SettingsGUI.WIDTH * 2) + `px;\n    padding-top: 18px;\n    padding-left: 34px;\n}\n\n#jt-general .jt-left {\n    float: left;\n    width: 245px;\n}\n\n#jt-general .jt-left .jt-command {\n    width: 99px;\n}\n\n#jt-general .jt-right {\n    float: left;\n}\n\n#jt-general .jt-right .jt-command {\n    width: 160px;\n}\n\n\n#jt-about {\n    left: ` + (jt.SettingsGUI.WIDTH * 3) + `px;\n    font-size: 18px;\n}\n\n#jt-about #jt-logo-version {\n    width: 300px;\n    height: 238px;\n    margin: 26px auto 19px;\n    color: hsl(0, 0%, 98%);\n    padding-top: 200px;\n    box-sizing: border-box;\n    text-align: center;\n    background: black url(\"` + jt.Images.urls.logo + `\") center 18px no-repeat;\n    background-size: 233px 173px;\n    box-shadow: 3px 3px 14px rgb(75, 75, 75);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n\n#jt-about .jt-info {\n    line-height: 30px;\n    text-align: center;\n}\n\n#jt-about a {\n    color: rgb(0, 40, 200);\n    text-decoration: none;\n}\n#jt-about a:hover {\n    text-decoration: underline;\n}\n\n#jt-about #jt-browserinfo {\n    position: absolute;\n    left: 0;\n    right: 0;\n    bottom: 7px;\n    font-size: 10px;\n    text-align: center;\n    color: transparent;\n}\n\n\n.jt-clear {\n    clear: both;\n}\n\n.jt-divider {\n    clear: both;\n    height: 27px;\n}\n\n.jt-full-divider {\n    clear: both;\n    height: 21px;\n}\n\n#jt-general .jt-full-divider {\n    clear: both;\n    height: 18px;\n}`;\n};\n"
  },
  {
    "path": "src/main/room/screen/settings/Settings.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.SettingsDialog = function(parentElement, consoleControls) {\n\"use strict\";\n\n    var self = this;\n\n    this.show = function (atPage) {\n        if (!modal) {\n            create();\n            setTimeout(function() {\n                self.show(atPage);\n            }, 0);\n            return;\n        }\n\n        if (!this.position()) return;\n\n        controlRedefining = null;\n        this.setPage(atPage || page);\n        modal.classList.add(\"jt-show\");\n        modal.classList.add(\"jt-show\");\n        visible = true;\n        setTimeout(function() {\n            modal.focus();\n        }, 50);\n    };\n\n    this.hide = function () {\n        if (!visible) return;\n        self.hideLesser();\n        Javatari.room.screen.focus();\n    };\n\n    this.hideLesser = function () {\n        if (Javatari.userPreferences.isDirty) finishPreferences();\n        modal.classList.remove(\"jt-show\");\n        modal.classList.remove(\"jt-show\");\n        visible = false;\n    };\n\n    this.setPage = function (pPage) {\n        page = pPage;\n\n        var contentPosition = {\n            \"CONSOLE\": \"0\",\n            \"PORTS\":   \"-600px\",\n            \"GENERAL\": \"-1200px\",\n            \"ABOUT\":   \"-1800px\"\n        }[page];\n        var selectionPosition = {\n            \"CONSOLE\": \"0\",\n            \"PORTS\":   \"25%\",\n            \"GENERAL\": \"50%\",\n            \"ABOUT\":   \"75%\"\n        }[page];\n\n        if (contentPosition) self[\"jt-content\"].style.left = contentPosition;\n        if (selectionPosition) self[\"jt-menu-selection\"].style.left = selectionPosition;\n\n        self[\"jt-menu-console\"].classList.toggle(\"jt-selected\", page === \"CONSOLE\");\n        self[\"jt-menu-ports\"].classList.toggle(\"jt-selected\", page === \"PORTS\");\n        self[\"jt-menu-general\"].classList.toggle(\"jt-selected\", page === \"GENERAL\");\n        self[\"jt-menu-about\"].classList.toggle(\"jt-selected\", page === \"ABOUT\");\n\n        switch(page) {\n            case \"ABOUT\":\n                refreshAboutPage(); break;\n            case \"PORTS\":\n                refreshPortsPage();\n        }\n    };\n\n    this.isVisible = function() {\n        return visible;\n    };\n\n    this.position = function() {\n        var w = parentElement.clientWidth;\n        var h = parentElement.clientHeight;\n        if (w < 575 || h < 400) {\n            this.hide();\n            return false;\n        }\n\n        modal.style.top =  \"\" + (((h - jt.SettingsGUI.HEIGHT) / 2) | 0) + \"px\";\n        modal.style.left = \"\" + (((w - jt.SettingsGUI.WIDTH) / 2) | 0) + \"px\";\n\n        return true;\n    };\n\n    this.controlsModeStateUpdate = function () {\n        if (visible && page === \"PORTS\") refreshPortsPage();\n    };\n\n    function create() {\n        jt.Util.insertCSS(jt.SettingsGUI.css());\n        parentElement.insertAdjacentHTML(\"beforeend\", jt.SettingsGUI.html());\n\n        modal = document.getElementById(\"jt-modal\");\n\n        delete jt.SettingsGUI.html;\n        delete jt.SettingsGUI.css;\n\n        setFields();\n        setEvents();\n    }\n\n    // Automatically set fields for each child element that has the \"id\" attribute\n    function setFields() {\n        traverseDOM(modal, function (element) {\n            var jtVar = element.id && element.getAttribute && element.getAttribute(\"jt-var\");\n            if (jtVar) self[element.id] = element;\n        });\n\n        function traverseDOM(element, func) {\n            func(element);\n            var child = element.childNodes;\n            for (var i = 0; i < child.length; i++) traverseDOM(child[i], func);\n        }\n    }\n\n    function setEvents() {\n        // Do not close with taps or clicks inside\n        jt.Util.onTapOrMouseDownWithBlock(modal, function() { modal.focus(); });\n\n        // Close with the back button\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-back\"], self.hide);\n\n        // Several key events\n        modal.addEventListener(\"keydown\", function (e) {\n            processKeyEvent(e, true);\n        });\n        modal.addEventListener(\"keyup\", function (e) {\n            processKeyEvent(e, false);\n        });\n\n        // Tabs\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-menu-console\"], function () {\n            self.setPage(\"CONSOLE\");\n        });\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-menu-ports\"], function () {\n            self.setPage(\"PORTS\");\n        });\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-menu-general\"], function () {\n            self.setPage(\"GENERAL\");\n        });\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-menu-about\"], function () {\n            self.setPage(\"ABOUT\");\n        });\n\n        // Key redefinition\n        for (var elem in controlKeysElements) {\n            (function(localControl) {\n                jt.Util.onTapOrMouseDownWithBlock(self[localControl], function () {\n                    keyRedefinitionStart(localControl);\n                });\n            })(elem);\n        }\n\n        // Controls Actions\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-ports-paddles-mode\"], function() { consoleControls.togglePaddleMode(); });\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-ports-p1-mode\"], function() { consoleControls.toggleP1ControlsMode(); });\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-ports-gamepads-mode\"], function() { consoleControls.toggleGamepadMode(); });\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-ports-defaults\"], controlsDefaults);\n        jt.Util.onTapOrMouseDownWithBlock(self[\"jt-ports-revert\"], controlsRevert);\n    }\n\n    function refreshAboutPage() {\n        self[\"jt-browserinfo\"].innerHTML = navigator.userAgent;\n    }\n\n    function refreshPortsPage() {\n        var paddlesMode = consoleControls.isPaddleMode();\n        var p1Mode = consoleControls.isP1ControlsMode();\n\n        self[\"jt-ports-paddles-mode\"].innerHTML = \"Controllers: \" + (paddlesMode ? \"PADDLES\" : \"JOYSTICKS\");\n        self[\"jt-ports-p1-mode\"].innerHTML = \"Swap Mode: \" + (p1Mode ? \"SWAPPED\" : \"NORMAL\");\n        self[\"jt-ports-gamepads-mode\"].innerHTML = \"Gamepads: \" + (consoleControls.getGamepadModeDesc());\n\n        if (paddlesMode) {\n            self[\"jt-control-p1-controller\"].style.backgroundPositionY = \"-91px\";\n            self[\"jt-control-p2-controller\"].style.backgroundPositionY = \"-91px\";\n            self[\"jt-control-p1-up-label\"].innerHTML = self[\"jt-control-p2-up-label\"].innerHTML = \"+ Speed\";\n            self[\"jt-control-p1-down-label\"].innerHTML = self[\"jt-control-p2-down-label\"].innerHTML = \"- Speed\";\n        } else {\n            self[\"jt-control-p1-controller\"].style.backgroundPositionY = \"0\";\n            self[\"jt-control-p2-controller\"].style.backgroundPositionY = \"0\";\n            self[\"jt-control-p1-up-label\"].innerHTML = self[\"jt-control-p2-up-label\"].innerHTML = \"Up\";\n            self[\"jt-control-p1-down-label\"].innerHTML = self[\"jt-control-p2-down-label\"].innerHTML = \"Down\";\n\n        }\n        self[\"jt-control-p1-label\"].innerHTML = \"PLAYER \" + (p1Mode ? \"2\" : \"1\");\n        self[\"jt-control-p2-label\"].innerHTML = \"PLAYER \" + (p1Mode ? \"1\" : \"2\");\n\n        var keys = prefs.joystickKeys;\n        for (var controlElem in controlKeysElements) {\n            var elem = self[controlElem];\n            if (controlElem === controlRedefining) {\n                elem.classList.add(\"jt-redefining\");\n                elem.classList.remove(\"jt-undefined\");\n                elem.innerHTML = \"?\";\n            } else {\n                elem.classList.remove(\"jt-redefining\");\n                var controlInfo = controlKeysElements[controlElem];\n                var keyInfo = keys[controlInfo.player][controlInfo.control];\n                if (keyInfo.c === jt.DOMKeys.VK_VOID.c) {\n                    elem.classList.add(\"jt-undefined\");\n                    elem.innerHTML = \"\";\n                } else {\n                    elem.classList.remove(\"jt-undefined\");\n                    elem.innerHTML = keyInfo.n;\n                }\n            }\n        }\n    }\n\n    function processKeyEvent(e, press) {\n        var code = jt.DOMKeys.codeForKeyboardEvent(e);\n        if (press && code === KEY_ESC) {\n            hideOrKeyRedefinitionStop();\n            return jt.Util.blockEvent(e);\n        } else\n            if(controlRedefining) keyRedefinitionTry(e);\n    }\n\n    var keyRedefinitionStart = function(control) {\n        controlRedefining = control;\n        refreshPortsPage();\n    };\n\n    var keyRedefinitonStop = function() {\n        controlRedefining = null;\n        refreshPortsPage();\n    };\n\n    var keyRedefinitionTry = function (e) {\n        if (!controlRedefining) return;\n        var c = jt.DOMKeys.codeForKeyboardEvent(e);\n        var n = jt.DOMKeys.nameForKeyboardEventSingle(e);\n        if (c === jt.DOMKeys.VK_VOID.c || !n) return;\n        var newKey = { c: c, n: n };\n        var controlInfo = controlKeysElements[controlRedefining];\n        var keys = prefs.joystickKeys;\n        for (var con in controlKeysElements) {\n            var otherControlInfo = controlKeysElements[con];\n            if (con !== controlRedefining && keys[otherControlInfo.player][otherControlInfo.control].c === newKey.c)\n                keys[otherControlInfo.player][otherControlInfo.control] = jt.DOMKeys.VK_VOID;\n        }\n        keys[controlInfo.player][controlInfo.control] = newKey;\n        Javatari.userPreferences.setDirty();\n        keyRedefinitonStop();\n    };\n\n    var hideOrKeyRedefinitionStop = function() {\n        if (controlRedefining) keyRedefinitonStop();\n        else self.hide()\n    };\n\n    var controlsDefaults = function () {\n        Javatari.userPreferences.setDefaultJoystickKeys();\n        keyRedefinitonStop();   // will refresh\n    };\n\n    var controlsRevert = function () {\n        Javatari.userPreferences.load();\n        keyRedefinitonStop();   // will refresh\n    };\n\n    var finishPreferences = function () {\n        Javatari.userPreferences.save();\n        consoleControls.applyPreferences();\n    };\n\n    var controlKeysElements = {\n        \"jt-control-p1-button\":  { player: 0, control: \"button\" },\n        \"jt-control-p1-buttonT\": { player: 0, control: \"buttonT\" },\n        \"jt-control-p1-up\":      { player: 0, control: \"up\" },\n        \"jt-control-p1-left\":    { player: 0, control: \"left\" },\n        \"jt-control-p1-right\":   { player: 0, control: \"right\" },\n        \"jt-control-p1-down\":    { player: 0, control: \"down\" },\n        \"jt-control-p2-button\":  { player: 1, control: \"button\" },\n        \"jt-control-p2-buttonT\": { player: 1, control: \"buttonT\" },\n        \"jt-control-p2-up\":      { player: 1, control: \"up\" },\n        \"jt-control-p2-left\":    { player: 1, control: \"left\" },\n        \"jt-control-p2-right\":   { player: 1, control: \"right\" },\n        \"jt-control-p2-down\":    { player: 1, control: \"down\" }\n    };\n\n\n    var controlRedefining = null;\n\n    var modal;\n    var page = \"CONSOLE\";\n    var visible = false;\n\n    var prefs = Javatari.userPreferences.current;\n\n    var KEY_ESC = jt.DOMKeys.VK_ESCAPE.c;\n\n};\n\n"
  },
  {
    "path": "src/main/room/screen/settings/SettingsGUI.es5.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// HTML and CSS data for Settings\n\njt.SettingsGUI = { WIDTH: 600, HEIGHT: 450};\n\njt.SettingsGUI.html = function() {\n    return '<div id=\"jt-modal\" tabindex=\"-1\"> <div id=\"jt-menu\"> <div id=\"jt-back\" jt-var=\"true\"> <div class=\"jt-back-arrow\"> </div> </div> <div class=\"jt-caption\"> Help & Settings </div> <div class=\"jt-items\"> <div id=\"jt-menu-console\" class=\"jt-item\" jt-var=\"true\"> CONSOLE </div> <div id=\"jt-menu-ports\" class=\"jt-item\" jt-var=\"true\"> CONTROLLERS </div> <div id=\"jt-menu-general\" class=\"jt-item jt-selected\" jt-var=\"true\"> EMULATION </div> <div id=\"jt-menu-about\" class=\"jt-item\" jt-var=\"true\"> ABOUT </div> <div id=\"jt-menu-selection\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-content\" jt-var=\"true\"> <div id=\"jt-console\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\"> POWER </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F2 </div> </div> <div class=\"jt-desc\"> TV TYPE </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F4 </div> </div> <div class=\"jt-desc\"> P1 Difficulty </div> </div> </div> <div class=\"jt-middle\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F5 </div> </div> <div class=\"jt-desc\"> Load Cartridge File </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F6 </div> </div> <div class=\"jt-desc\"> Load Cartridge URL </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F7 </div> </div> <div class=\"jt-desc\"> Remove Cartridge </div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\"> RESET </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F11 </div> </div> <div class=\"jt-desc\"> SELECT </div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F9 </div> </div> <div class=\"jt-desc\"> P2 Difficulty </div> </div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-console-panel\"> <div class=\"jt-console-panel-cart-file jt-console-panel-icon\"></div> <div class=\"jt-console-panel-cart-url jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p0-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-p1-diff-label jt-console-panel-icon\"></div> <div class=\"jt-console-panel-power-labels jt-console-panel-icon\"></div> <div class=\"jt-console-panel-reset-labels jt-console-panel-icon\"></div> </div> <div class=\"jt-footer\"> Drag & Drop Files or URLs to load Cartridge ROMs and State Files </div> </div> <div id=\"jt-ports\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> L </div> </div> <div class=\"jt-desc\">Toggle Paddles</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> K </div> </div> <div class=\"jt-desc\">Toggle Swap Sides</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> J </div> </div> <div class=\"jt-desc\">Toggle Gamepads</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> H </div> </div> <div class=\"jt-desc\">Adjust Turbo Fire speed</div> </div> </div> <div class=\"jt-right\"> <div id=\"jt-ports-paddles-mode\" class=\"jt-hotkey jt-link jt-joystick-device\" jt-var=\"true\">Controllers: JOYSTICKS</div> <div id=\"jt-ports-p1-mode\" class=\"jt-hotkey jt-link jt-mouse-device\" jt-var=\"true\">Swap Mode: NORMAL</div> <div id=\"jt-ports-gamepads-mode\" class=\"jt-hotkey jt-link jt-joykeys-device\" jt-var=\"true\">Gamepads: AUTO (swapped)</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-player jt-p1\"> <div id=\"jt-control-p1-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 1 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p1-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p1-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p1-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p1-buttonT\" class=\"jt-key\" jt-var=\"true\" > </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p1-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p1-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p1-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p1-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p1-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div class=\"jt-player jt-p2\"> <div id=\"jt-control-p2-label\" class=\"jt-title\" jt-var=\"true\"> PLAYER 2 </div> <div class=\"jt-command jt-fire1\"> Fire<br> <div id=\"jt-control-p2-button\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-up\"> <div id=\"jt-control-p2-up-label\" jt-var=\"true\"> Up </div> <div id=\"jt-control-p2-up\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-fire2\"> Turbo Fire<br> <div id=\"jt-control-p2-buttonT\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-left\"> Left<br> <div id=\"jt-control-p2-left\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-controller\"> <div id=\"jt-control-p2-controller\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-right\"> Right<br> <div id=\"jt-control-p2-right\" class=\"jt-key\" jt-var=\"true\"> </div> </div> <div class=\"jt-command jt-down\"> <div id=\"jt-control-p2-down-label\" jt-var=\"true\"> Down </div> <div id=\"jt-control-p2-down\" class=\"jt-key\" jt-var=\"true\"> </div> </div> </div> <div id=\"jt-ports-revert\" class=\"jt-link\" jt-var=\"true\"> REVERT </div> <div id=\"jt-ports-defaults\" class=\"jt-link\" jt-var=\"true\"> DEFAULTS </div> </div> <div id=\"jt-general\"> <div class=\"jt-left\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> C </div> </div> <div class=\"jt-desc\">Collisions</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F1 </div> </div> <div class=\"jt-desc\">Fry Console</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Q </div> </div> <div class=\"jt-desc\">NTSC/PAL</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> W </div> </div> <div class=\"jt-desc\">V-Synch Modes</div> </div> <div class=\"jt-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> R </div> </div> <div class=\"jt-desc\">CRT Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> T </div> </div> <div class=\"jt-desc\">CRT Filters</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> D </div> </div> <div class=\"jt-desc\">Debug Modes</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> I </div> </div> <div class=\"jt-desc\">Show Info</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> G </div> </div> <div class=\"jt-desc\">Capture Screen</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-desc\">Right-Click Bar Icons: Default Action</div> </div> </div> <div class=\"jt-right\"> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Load State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> 0 - 9 </div> </div> <div class=\"jt-desc\">Save State</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F8 </div> </div> <div class=\"jt-desc\">Save State File</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> F12 </div>&nbsp;&nbsp;/&nbsp;&nbsp;<div class=\"jt-key\"> Shift </div>&nbsp;+&nbsp;<div class=\"jt-key\"> F12 </div> </div> <div class=\"jt-desc\">Fast / Slow Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Adjust Speed</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> P </div> </div> <div class=\"jt-desc\">Toggle Pause</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> O </div>&nbsp;/&nbsp;<div class=\"jt-key\"> F </div> </div> <div class=\"jt-desc\">Next Frame</div> </div> <div class=\"jt-full-divider\"></div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Enter </div> </div> <div class=\"jt-desc\">Full Screen</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Alt </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Screen Size / Width</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Shift </div>&nbsp;<div class=\"jt-key jt-key-fixed\"> Ctrl </div>&nbsp;+&nbsp;<div class=\"jt-key\"> Arrows </div> </div> <div class=\"jt-desc\">Viewport Size / Origin</div> </div> <div class=\"jt-hotkey\"> <div class=\"jt-command\"> <div class=\"jt-key\"> Backspace </div> </div> <div class=\"jt-desc\">Defaults</div> </div> </div> </div> <div id=\"jt-about\"> <div id=\"jt-logo-version\">version&nbsp' + Javatari.VERSION + '</div> <div class=\"jt-info\">' + atob(\"Q3JlYXRlZCBieSBQYXVsbyBBdWd1c3RvIFBlY2Npbg==\") + '<br>' + atob(\"PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9qYXZhdGFyaS5vcmciPmh0dHA6Ly9qYXZhdGFyaS5vcmc8L2E+\") + ' </div> <div id=\"jt-browserinfo\" jt-var=\"true\"> </div> </div> </div> </div>';\n};\n\njt.SettingsGUI.css = function() {\n    return '#jt-modal * { outline: none; box-sizing: border-box; } #jt-modal { position: absolute; overflow: hidden; width: ' + jt.SettingsGUI.WIDTH + 'px; height: 0; opacity: 0; visibility: hidden; top: 50%; left: 50%; color: hsl(0, 0%, 10%); font: normal 13px sans-serif; white-space: nowrap; text-align: initial; box-shadow: 3px 3px 15px 2px rgba(0, 0, 0, .4); transform: scale(0.85); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out, height .25s step-end; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; z-index: 50; } #jt-modal.jt-show { transform: scale(1); transition: visibility .2s ease-out, opacity .2s ease-out, transform .2s ease-out; height: ' + jt.SettingsGUI.HEIGHT + 'px; visibility: visible; opacity: 1; } #jt-modal .jt-heading { font-weight: 700; color: hsl(0, 0%, 30%); } #jt-modal .jt-link { font-weight: 700; line-height: 21px; color: hsl(228, 90%, 40%); cursor: pointer; } #jt-modal .jt-link:hover { outline: 1px solid; } .jt-command { position: relative; display: inline-block; font-weight: 600; color: hsl(0, 0%, 48%); } .jt-hotkey { height: 27px; padding: 3px 5px; box-sizing: border-box; } .jt-hotkey .jt-desc { display: inline-block; line-height: 21px; } .jt-key { position: relative; display: inline-block; top: -1px; min-width: 25px; height: 21px; padding: 4px 6px 3px; box-sizing: border-box; font-weight: 600; font-size: 12px; line-height: 12px; color: hsl(0, 0%, 42%); background: white; border-radius: 3px; border: 1px solid rgb(210, 210, 210); box-shadow: 0 1px 0 1px hsl(0, 0%, 47%); text-align: center; } .jt-key-fixed { width: 31px; padding-left: 0; padding-right: 2px; } .jt-footer { margin-top: 16px; text-align: center; } #jt-menu { position: relative; background: white; border-bottom: 1px solid hsl(0, 0%, 72%); } #jt-menu #jt-back { position: absolute; width: 40px; height: 34px; margin: 3px 1px; padding: 16px 12px; cursor: pointer; } #jt-menu #jt-back:hover { background: rgba(0, 0, 0, .12); } .jt-back-arrow { display: block; width: 16px; height: 2px; border-radius: 1000px; background: hsl(0, 0%, 98%); } .jt-back-arrow:before { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(-45deg); transform-origin: 1px 1px; } .jt-back-arrow:after { content: \"\"; display: block; position: absolute; width: 10px; height: 2px; border-radius: inherit; background: inherit; transform: rotate(45deg); transform-origin: 1px 1px; } #jt-menu .jt-caption { height: 29px; margin: 0 -1px; padding: 10px 0 0 48px; font-size: 18px; color: white; background: hsl(358, 66%, 50%); box-shadow: 0 1px 3px rgba(0, 0, 0, .9); vertical-align: middle; box-sizing: content-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-menu .jt-items { position: relative; width: 84%; height: 39px; margin: 0 auto; font-weight: 600; } #jt-menu .jt-item { float: left; width: 25%; height: 100%; padding-top: 13px; font-size: 14px; color: rgba(0, 0, 0, .43); text-align: center; cursor: pointer; } #jt-menu .jt-selected { color: hsl(358, 67%, 46%); } #jt-menu #jt-menu-selection { position: absolute; left: 0; bottom: 0; width: 25%; height: 3px; background: hsl(358, 67%, 46%); transition: left 0.3s ease-in-out; } #jt-content { position: relative; left: 0; width: 3000px; height: 371px; background: rgb(218, 218, 218); transition: left 0.3s ease-in-out } #jt-console, #jt-ports, #jt-general, #jt-about { position: absolute; width: ' + jt.SettingsGUI.WIDTH + 'px; height: 100%; box-sizing: border-box; } #jt-console { padding-top: 35px; } #jt-console .jt-hotkey { height: 29px; } #jt-console .jt-command { width: 42px; } #jt-console .jt-left, #jt-console .jt-middle, #jt-console .jt-right { float: left; } #jt-console .jt-left { width: 160px; margin-left: 58px; } #jt-console .jt-middle { width: 204px; } #jt-console .jt-right .jt-command { width: 46px; } #jt-console .jt-console-panel { position: relative; margin: 18px auto 0; box-shadow: rgba(0, 0, 0, 0.6) 2px 2px 4px; } #jt-console .jt-console-panel * { cursor: auto; } #jt-console .jt-footer { margin: 20px auto; } #jt-ports { left: ' + jt.SettingsGUI.WIDTH + 'px; padding: 18px 0 0 27px; } #jt-ports > .jt-left { float: left; width: 335px; padding-left: 26px; } #jt-ports > .jt-right { float: left; } #jt-ports .jt-command { width: 91px; } #jt-ports .jt-bottom { width: 546px; text-align: center; } #jt-ports .jt-player { position: absolute; top: 146px; width: 217px; color: rgba(0, 0, 0, .8); } #jt-ports .jt-p1 { left: 47px; } #jt-ports .jt-p2 { right: 47px; } #jt-ports .jt-title { margin-bottom: 09px; font-size: 14px; line-height: 14px; font-weight: bold; color: hsl(0, 0%, 35%); text-align: center; } #jt-ports .jt-player .jt-command { display: block; position: relative; float: left; width: 33%; height: 45px; font-size: 13px; text-align: center; } #jt-ports .jt-command.jt-fire1, #jt-ports .jt-command.jt-fire2 { top: 14px; } #jt-ports .jt-command.jt-left, #jt-ports .jt-command.jt-right { top: 27px; } #jt-ports .jt-command.jt-down { float: none; clear: both; margin: 0 auto; } #jt-ports .jt-command.jt-controller { height: 90px; } #jt-ports #jt-control-p1-controller, #jt-ports #jt-control-p2-controller { width: 70px; height: 89px; margin-left: 1px; background: url(\"' + jt.Images.urls.controllers + '\") no-repeat -1px 0; background-size: 73px 179px; } #jt-ports .jt-player .jt-key { min-width: 33px; height: 23px; padding: 5px 6px 4px; margin-top: 2px; cursor: pointer; } #jt-ports .jt-player .jt-key:hover { box-shadow: 0 1px 0 1px rgba(0, 0, 0, .5), 1px 2px 6px 4px rgb(170, 170, 170); } #jt-ports .jt-player .jt-key.jt-redefining { color: white; background-color: rgb(87, 128, 255); border-color: rgb(71, 117, 255); } #jt-ports .jt-player .jt-key.jt-undefined { background-color: rgb(255, 150, 130); border-color: rgb(255, 130, 90); } #jt-ports-defaults, #jt-ports-revert { position: absolute; left: 260px; width: 82px; text-align: center; padding: 3px 0 1px; font-size: 12px; } #jt-ports-defaults { bottom: 47px; } #jt-ports-revert { bottom: 21px; } #jt-general { left: ' + (jt.SettingsGUI.WIDTH * 2) + 'px; padding-top: 18px; padding-left: 34px; } #jt-general .jt-left { float: left; width: 245px; } #jt-general .jt-left .jt-command { width: 99px; } #jt-general .jt-right { float: left; } #jt-general .jt-right .jt-command { width: 160px; } #jt-about { left: ' + (jt.SettingsGUI.WIDTH * 3) + 'px; font-size: 18px; } #jt-about #jt-logo-version { width: 300px; height: 238px; margin: 26px auto 19px; color: hsl(0, 0%, 98%); padding-top: 200px; box-sizing: border-box; text-align: center; background: black url(\"' + jt.Images.urls.logo + '\") center 18px no-repeat; background-size: 233px 173px; box-shadow: 3px 3px 14px rgb(75, 75, 75); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #jt-about .jt-info { line-height: 30px; text-align: center; } #jt-about a { color: rgb(0, 40, 200); text-decoration: none; } #jt-about a:hover { text-decoration: underline; } #jt-about #jt-browserinfo { position: absolute; left: 0; right: 0; bottom: 7px; font-size: 10px; text-align: center; color: transparent; } .jt-clear { clear: both; } .jt-divider { clear: both; height: 27px; } .jt-full-divider { clear: both; height: 21px; } #jt-general .jt-full-divider { clear: both; height: 18px; }';\n};\n"
  },
  {
    "path": "src/main/room/speaker/WebAudioSpeaker.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\n// Accepts multiple AudioSignals with different sampling rates\n// Mixes all signals performing per-signal resampling as needed\n\njt.WebAudioSpeaker = function(mainElement) {\n\"use strict\";\n\n    this.connect = function(audioSocket) {\n        audioSocket.connectMonitor(this);\n    };\n\n    this.connectPeripherals = function(pScreen) {\n        screen = pScreen;\n    };\n\n    this.connectAudioSignal = function(pAudioSignal) {\n        if (audioSignal.indexOf(pAudioSignal) >= 0) return;        // Add only once\n        jt.Util.arrayAdd(audioSignal, pAudioSignal);\n        updateResamplingFactors();\n    };\n\n    this.disconnectAudioSignal = function(pAudioSignal) {\n        if (audioSignal.indexOf(pAudioSignal) < 0) return;         // Not present\n        jt.Util.arrayRemoveAllElement(audioSignal, pAudioSignal);\n        updateResamplingFactors();\n    };\n\n    this.powerOn = function() {\n        createAudioContext();\n        if (!processor) return;\n\n        registerUnlockOnTouchIfNeeded();\n        this.unpause();\n    };\n\n    this.powerOff = function() {\n        this.pause();\n        if (audioContext) audioContext.close();\n        audioContext = processor = undefined;\n    };\n\n    this.mute = function () {\n        mute = true;\n    };\n\n    this.unMute = function () {\n        mute = false;\n    };\n\n    this.pause = function () {\n        if (processor) processor.disconnect();\n    };\n\n    this.unpause = function () {\n        if (processor) processor.connect(audioContext.destination);\n    };\n\n    this.toggleBufferBaseSize = function() {\n        if (!audioContext) return screen.showOSD(\"Audio is DISABLED\", true, true);\n\n        bufferBaseSize = ((bufferBaseSize + 2) % 8) - 1;  // -1..6\n        this.pause();\n        createProcessor();\n        this.unpause();\n        screen.showOSD(\"Audio Buffer size: \" + (bufferBaseSize === -1 ? \"Auto (\" + bufferSize + \")\" : bufferBaseSize === 0 ? \"Browser (\" + bufferSize + \")\" : bufferSize), true);\n        prefs.audioBufferBase = bufferBaseSize;\n        Javatari.userPreferences.setDirty();\n    };\n\n    this.getControlReport = function(control) {\n        // Only BufferBaseSize for now\n        return { label: bufferBaseSize === -2 ? \"OFF\" : bufferBaseSize === -1 ? \"Auto\" : bufferBaseSize === 0 ? \"Browser\" : bufferSize, active: bufferBaseSize > 0 };\n    };\n\n    function determineAutoBufferBaseSize() {\n        // Set bufferBaseSize according to browser and platform\n        return jt.Util.isMobileDevice()\n            ? jt.Util.browserInfo().name === \"CHROME\" && !jt.Util.isIOSDevice()\n                ? 4      // for now mobile Chrome needs more buffer, except on iOS\n                : 3      // other mobile scenarios\n            : 2;         // desktop\n    }\n\n    function determineBrowserDefaultBufferBaseSize() {\n        // Safari/WebKit does not allow 0 (browser default), so use Auto instead\n        return jt.Util.browserInfo().name === \"SAFARI\" || jt.Util.isIOSDevice() ? determineAutoBufferBaseSize() : 0;\n    }\n\n    var createAudioContext = function() {\n        if (bufferBaseSize === -2 || Javatari.AUDIO_MONITOR_BUFFER_SIZE === 0) {\n            jt.Util.warning(\"Audio disabled in configuration\");\n            return;\n        }\n        try {\n            var constr = (window.AudioContext || window.webkitAudioContext || window.WebkitAudioContext);\n            if (!constr) throw new Error(\"WebAudio API not supported by the browser\");\n            audioContext = new constr();\n            jt.Util.log(\"Speaker AudioContext created. Sample rate: \" + audioContext.sampleRate + (audioContext.state ? \", \" + audioContext.state : \"\"));\n            createProcessor();\n        } catch(ex) {\n            jt.Util.error(\"Could not create AudioContext. Audio DISABLED!\\n\" + ex);\n        }\n    };\n\n    var createProcessor = function() {\n        try {\n            // If not specified, calculate buffer size based on baseSize and host audio sampling rate. Ex: for a baseSize = 1 then 22050Hz = 256, 44100 = 512, 48000 = 512, 96000 = 1024, 192000 = 2048, etc\n            var baseSize = bufferBaseSize === -1 ? determineAutoBufferBaseSize() : bufferBaseSize === 0 ? determineBrowserDefaultBufferBaseSize() : bufferBaseSize;\n            var totalSize = Javatari.AUDIO_MONITOR_BUFFER_SIZE > 0 ? Javatari.AUDIO_MONITOR_BUFFER_SIZE : baseSize > 0 ? jt.Util.exp2(jt.Util.log2((audioContext.sampleRate + 14000) / 22050) | 0) * jt.Util.exp2(baseSize - 1) * 256 : 0;\n            processor = audioContext.createScriptProcessor(totalSize, 1, 1);\n            processor.onaudioprocess = onAudioProcess;\n            bufferSize = processor.bufferSize;\n            updateResamplingFactors();\n            jt.Util.log(\"Audio Processor buffer size: \" + processor.bufferSize);\n        } catch(ex) {\n            jt.Util.error(\"Could not create ScriptProcessorNode. Audio DISABLED!\\n\" + ex);\n        }\n    };\n\n    function registerUnlockOnTouchIfNeeded() {\n        // Browser may require unlocking of the AudioContext on user interaction!\n        if (processor && (!audioContext.state || audioContext.state === \"suspended\")) {\n            mainElement.addEventListener(\"touchend\", unlockAudioContext, true);\n            mainElement.addEventListener(\"mousedown\", unlockAudioContext, true);\n            mainElement.addEventListener(\"keydown\", unlockAudioContext, true);\n            jt.Util.log(\"Speaker Audio Context resume event registered\");\n            screen.speakerUnlockStateUpdate(false);\n        }\n\n        function unlockAudioContext() {\n            mainElement.removeEventListener(\"touchend\", unlockAudioContext, true);\n            mainElement.removeEventListener(\"mousedown\", unlockAudioContext, true);\n            mainElement.removeEventListener(\"keydown\", unlockAudioContext, true);\n\n            var ex;\n            try {\n                audioContext.resume().then(function () {\n                    jt.Util.log('Speaker Audio Context resumed!');\n                });\n            } catch (e) {\n                ex = e;\n            }\n\n            var source = audioContext.createBufferSource();\n            source.buffer = audioContext.createBuffer(1, 1, 22050);\n            source.connect(audioContext.destination);\n            source.start(0);\n            if (ex) jt.Util.log(\"Audio Context unlocked!\");\n            screen.speakerUnlockStateUpdate(true);\n        }\n    }\n    function updateResamplingFactors() {\n        //if (bufferSizeProblem !== undefined) console.error(\"+++++++ buffer size problem: \" + bufferSizeProblem);\n\n        if (!processor) return;\n        resamplingFactor.length = audioSignal.length;\n        resamplingLeftOver.length = audioSignal.length;\n        for (var i = 0; i < audioSignal.length; i++) {\n            resamplingFactor[i] = audioSignal[i].getSampleRate() / audioContext.sampleRate;\n            resamplingLeftOver[i] = 0;\n            audioSignal[i].setAudioMonitorBufferSize((resamplingFactor[i] * bufferSize) | 0);\n        }\n    }\n\n    function onAudioProcess(event) {\n        //if (Javatari.room.console.powerIsOn) {\n        //    var now = performance.now();\n        //    Javatari.onAudioProcessLog.push(now - lastOnAudioProcessTime);\n        //    lastOnAudioProcessTime = now;\n        //}\n\n        // Assumes there is only one output channel\n        var outputBuffer = event.outputBuffer.getChannelData(0);\n        var outputBufferSize = outputBuffer.length;\n\n        //if (outputBufferSize !== bufferSize) bufferSizeProblem = outputBufferSize;\n\n        // Clear output buffer\n        for (var j = outputBufferSize - 1; j >= 0; j = j - 1) outputBuffer[j] = 0;\n\n        if (audioSignal.length === 0) return;\n\n        // Mix all signals, performing resampling on-the-fly\n        for (var i = audioSignal.length - 1; i >= 0; i = i - 1) {\n            var resampFactor = resamplingFactor[i];\n            var input = audioSignal[i].retrieveSamples((outputBufferSize * resampFactor + resamplingLeftOver[i]) | 0, mute);\n            var inputBuffer = input.buffer;\n            var inputBufferSize = input.bufferSize;\n\n            // Copy to output performing basic re-sampling\n            // Same as Util.arrayCopyCircularSourceWithStep, but optimized with local code\n            var s = input.start + resamplingLeftOver[i];\n            var d = 0;\n            while (d < outputBufferSize) {\n                outputBuffer[d] += inputBuffer[s | 0];   // source position as integer\n\n                //COUNTER--; if (COUNTER < 0) {\n                //    COUNTER = 160;\n                //    SIGNAL = -SIGNAL;\n                //}\n                //outputBuffer[d] = SIGNAL * 0.4;\n\n                d = d + 1;\n                s = s + resampFactor;\n                if (s >= inputBufferSize) s = s - inputBufferSize;\n            }\n            resamplingLeftOver[i] = s - (s | 0);        // fractional part\n        }\n\n        //var str = \"\"; for (var i = 0; i < audioSignal.length; i++) str = str + audioSignal[i].name + \" \";\n        //console.log(\"AudioProcess: \" + str);\n    }\n\n\n    var screen;\n\n    var audioSignal = [];\n    this.signals = audioSignal;\n    var resamplingFactor = [];\n    var resamplingLeftOver = [];\n\n    var prefs = Javatari.userPreferences.current;\n\n    var bufferBaseSize = Javatari.AUDIO_MONITOR_BUFFER_BASE === -3 ? prefs.audioBufferBase : Javatari.AUDIO_MONITOR_BUFFER_BASE;\n\n    var audioContext;\n    var bufferSize;\n    var processor;\n\n    var mute = false;\n\n    //var bufferSizeProblem;\n    //Javatari.onAudioProcessLog = [ ];\n    //var lastOnAudioProcessTime = 0;\n    //var COUNTER = 0;\n    //var SIGNAL = 1;\n\n};"
  },
  {
    "path": "src/main/userprefs/UserPreferences.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\nJavatari.userPreferences = { };\n\nJavatari.userPreferences.currentVersion = 1;\nJavatari.userPreferences.compatibleVersions = new Set([ 1 ]);\n\nJavatari.userPreferences.defaults = function() {\n\"use strict\";\n\n    var k = jt.DOMKeys;\n\n    return {\n\n        joystickKeys: [\n            {\n                left:    k.VK_LEFT,\n                up:      k.VK_UP,\n                right:   k.VK_RIGHT,\n                down:    k.VK_DOWN,\n                button:  k.VK_SPACE,\n                buttonT: k.VK_DELETE\n            }, {\n                left:    k.VK_F,\n                up:      k.VK_T,\n                right:   k.VK_H,\n                down:    k.VK_G,\n                button:  k.VK_A,\n                buttonT: k.VK_PERIOD\n            }\n        ],\n\n        joystickGamepads: [\n            {\n                button:        0,\n                buttonT:       1,\n                select:        8,\n                reset:         9,\n                pause:         4,\n                fastSpeed:     7,\n                slowSpeed:     6,\n                device:        -1,  // -1 = auto\n                xAxis:         0,\n                xAxisSig:      1,\n                yAxis:         1,\n                yAxisSig:      1,\n                paddleAxis:    0,\n                paddleAxisSig: 1,\n                paddleCenter:  0.3,\n                paddleSens:    0.75,\n                deadzone:      0.3\n            }, {\n                button:        0,\n                buttonT:       1,\n                select:        8,\n                reset:         9,\n                pause:         4,\n                fastSpeed:     7,\n                slowSpeed:     6,\n                device:        -1,  // -1 = auto\n                xAxis:         0,\n                xAxisSig:      1,\n                yAxis:         1,\n                yAxisSig:      1,\n                paddleAxis:    0,\n                paddleAxisSig: 1,\n                paddleCenter:  0.3,\n                paddleSens:    0.75,\n                deadzone:      0.3\n            }\n        ],\n\n        touch: {\n            directionalBig: false\n        },\n\n        hapticFeedback: true,\n        turboFireSpeed: 6,\n\n        vSynch: 1,                         // on\n        crtFilter: -1,                     // auto\n\n        audioBufferBase: -1,               // auto\n\n        netPlaySessionName: \"\",\n        netPlayNick: \"\"\n\n    };\n};\n\nJavatari.userPreferences.load = function() {\n    var prefs;\n\n    // Load from Local Storage\n    try {\n        prefs = JSON.parse(localStorage.javatari4prefs || \"{}\");\n        // Migrations from old to new version control fields\n        if (prefs.version) delete prefs.version;\n    } catch(e) {\n        // Give up\n    }\n\n    // Absent or incompatible version\n    if (!prefs || !Javatari.userPreferences.compatibleVersions.has(prefs.prefsVersion)) {\n        // Create new empty preferences and keep settings as possible\n        var oldPrefs = prefs;\n        prefs = {};\n        if (oldPrefs) {\n            // Migrations\n        }\n    }\n\n    // Fill missing properties with defaults\n    var defs = Javatari.userPreferences.defaults();\n    for (var pref in defs)\n        if (prefs[pref] === undefined) prefs[pref] = defs[pref];\n\n    prefs.prefsVersion = Javatari.userPreferences.currentVersion;\n\n    // Update current preferences\n    if (!Javatari.userPreferences.current) Javatari.userPreferences.current = {};\n    var cur = Javatari.userPreferences.current;\n    for (pref in prefs) cur[pref] = prefs[pref];\n\n    Javatari.userPreferences.isDirty = false;\n};\n\nJavatari.userPreferences.setDefaultJoystickKeys = function() {\n    Javatari.userPreferences.current.joystickKeys = Javatari.userPreferences.defaults().joystickKeys;\n    Javatari.userPreferences.setDirty();\n};\n\nJavatari.userPreferences.save = function() {\n    if (!Javatari.userPreferences.isDirty) return;\n\n    try {\n        Javatari.userPreferences.current.javatariVersion = Javatari.VERSION;\n        localStorage.javatari4prefs = JSON.stringify(Javatari.userPreferences.current);\n        Javatari.userPreferences.isDirty = false;\n\n        jt.Util.log(\"Preferences saved!\");\n    } catch (e) {\n        // give up\n    }\n};\n\nJavatari.userPreferences.setDirty = function() {\n    Javatari.userPreferences.isDirty = true;\n};\n"
  },
  {
    "path": "src/main/userprefs/UserROMFormats.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\nJavatari.userROMFormats = {\n\n    init: function() {\n        jt.CartridgeCreator.setUserROMFormats(this);\n        this.userFormats = JSON.parse(localStorage.javatariuserformats || \"{}\");\n    },\n\n    getForROM: function(rom) {\n        return this.userFormats[rom.info.h];\n    },\n\n    setForROM: function(rom, formatName, isAuto) {\n        if (!rom.info.h) return;\n        if (isAuto) delete this.userFormats[rom.info.h];\n        else this.userFormats[rom.info.h] = formatName;\n\n        localStorage.javatariuserformats = JSON.stringify(this.userFormats);\n    }\n\n};\n\n"
  },
  {
    "path": "src/main/util/EmbeddedFiles.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.EmbeddedFiles = {\n\n    get: function(fileName) {\n    var comp = this.compressedContent[fileName];\n    if (comp !== undefined) return { name: fileName, content: jt.Util.uncompressStringBase64ToInt8BitArray(comp) };\n\n    var diff = this.diffsContent[fileName];\n    if (diff === undefined) return undefined;\n\n    var base = this.get(diff.based);\n    if (base === undefined) return undefined;\n\n    var content = base.content;\n    for (var add in diff.diffs) {\n        var bytes = diff.diffs[add];\n        for (var i = 0; i < bytes.length; ++i) content[(add | 0) + i] = bytes[i];\n    }\n    return { name: fileName, content: content };\n    },\n\n    embedFileCompressedContent: function(fileName, compressedContent) {\n        this.compressedContent[fileName] = compressedContent;\n    },\n\n    embedFileDiff: function(fileName, diffs) {\n        this.diffsContent[fileName] = diffs;\n    },\n\n    compressedContent: {},\n\n    diffsContent: {}\n\n};\n"
  },
  {
    "path": "src/main/util/MD5.js",
    "content": "jt.MD5 = function(data) {\n\"use strict\";\n\n    // convert number to (unsigned) 32 bit hex, zero filled string\n    function to_zerofilled_hex(n) {     \n        var t1 = (n >>> 0).toString(16)\n        return \"00000000\".substr(0, 8 - t1.length) + t1\n    }\n\n    // convert array of chars to array of bytes \n    function chars_to_bytes(ac) {\n        var retval = []\n        for (var i = 0; i < ac.length; i++) {\n            retval = retval.concat(str_to_bytes(ac[i]))\n        }\n        return retval\n    }\n\n\n    // convert a 64 bit unsigned number to array of bytes. Little endian\n    function int64_to_bytes(num) {\n        var retval = []\n        for (var i = 0; i < 8; i++) {\n            retval.push(num & 0xFF)\n            num = num >>> 8\n        }\n        return retval\n    }\n\n    //  32 bit left-rotation\n    function rol(num, places) {\n        return ((num << places) & 0xFFFFFFFF) | (num >>> (32 - places))\n    }\n\n    // The 4 MD5 functions\n    function fF(b, c, d) {\n        return (b & c) | (~b & d)\n    }\n\n    function fG(b, c, d) {\n        return (d & b) | (~d & c)\n    }\n\n    function fH(b, c, d) {\n        return b ^ c ^ d\n    }\n\n    function fI(b, c, d) {\n        return c ^ (b | ~d)\n    }\n\n    // pick 4 bytes at specified offset. Little-endian is assumed\n    function bytes_to_int32(arr, off) {\n        return (arr[off + 3] << 24) | (arr[off + 2] << 16) | (arr[off + 1] << 8) | (arr[off])\n    }\n\n    /*\n    Conver string to array of bytes in UTF-8 encoding\n    See: \n    http://www.dangrossman.info/2007/05/25/handling-utf-8-in-javascript-php-and-non-utf8-databases/\n    http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string\n    How about a String.getBytes(<ENCODING>) for Javascript!? Isn't it time to add it?\n    */\n    function str_to_bytes(str) {\n        var retval = [ ]\n        for (var i = 0; i < str.length; i++)\n            if (str.charCodeAt(i) <= 0x7F) {\n                retval.push(str.charCodeAt(i))\n            } else {\n                var tmp = encodeURIComponent(str.charAt(i)).substr(1).split('%')\n                for (var j = 0; j < tmp.length; j++) {\n                    retval.push(parseInt(tmp[j], 0x10))\n                }\n            }\n        return retval\n    }\n\n\n    // convert the 4 32-bit buffers to a 128 bit hex string. (Little-endian is assumed)\n    function int128le_to_hex(a, b, c, d) {\n        var ra = \"\"\n        var t = 0\n        var ta = 0\n        for (var i = 3; i >= 0; i--) {\n            ta = arguments[i]\n            t = (ta & 0xFF)\n            ta = ta >>> 8\n            t = t << 8\n            t = t | (ta & 0xFF)\n            ta = ta >>> 8\n            t = t << 8\n            t = t | (ta & 0xFF)\n            ta = ta >>> 8\n            t = t << 8\n            t = t | ta\n            ra = ra + to_zerofilled_hex(t)\n        }\n        return ra\n    }\n\n    // conversion from typed byte array to plain javascript array \n    function typed_to_plain(tarr) {\n        var retval = new Array(tarr.length)\n        for (var i = 0; i < tarr.length; i++) {\n            retval[i] = tarr[i]\n        }\n        return retval\n    }\n\n    // check input data type and perform conversions if needed\n    var databytes = null\n    // String\n    var type_mismatch = null\n    if (typeof data == 'string') {\n        // convert string to array bytes\n        databytes = str_to_bytes(data)\n    } else if (data.constructor == Array) {\n        if (data.length === 0) {\n            // if it's empty, just assume array of bytes\n            databytes = data\n        } else if (typeof data[0] == 'string') {\n            databytes = chars_to_bytes(data)\n        } else if (typeof data[0] == 'number') {\n            databytes = data\n        } else {\n            type_mismatch = typeof data[0]\n        }\n    } else if (typeof ArrayBuffer != 'undefined') {\n        if (data instanceof ArrayBuffer) {\n            databytes = typed_to_plain(new Uint8Array(data))\n        } else if ((data instanceof Uint8Array) || (data instanceof Int8Array)) {\n            databytes = typed_to_plain(data)\n        } else if ((data instanceof Uint32Array) || (data instanceof Int32Array) || \n               (data instanceof Uint16Array) || (data instanceof Int16Array) || \n               (data instanceof Float32Array) || (data instanceof Float64Array)\n         ) {\n            databytes = typed_to_plain(new Uint8Array(data.buffer))\n        } else {\n            type_mismatch = typeof data\n        }   \n    } else {\n        type_mismatch = typeof data\n    }\n\n    if (type_mismatch) {\n        alert('MD5 type mismatch, cannot process ' + type_mismatch)\n    }\n\n    function _add(n1, n2) {\n        return 0x0FFFFFFFF & (n1 + n2)\n    }\n\n\n    return do_digest()\n\n    function do_digest() {\n\n        // function update partial state for each run\n        function updateRun(nf, sin32, dw32, b32) {\n            var temp = d\n            d = c\n            c = b\n            //b = b + rol(a + (nf + (sin32 + dw32)), b32)\n            b = _add(b, \n                rol( \n                    _add(a, \n                        _add(nf, _add(sin32, dw32))\n                    ), b32\n                )\n            )\n            a = temp\n        }\n\n        // save original length\n        var org_len = databytes.length\n\n        // first append the \"1\" + 7x \"0\"\n        databytes.push(0x80)\n\n        // determine required amount of padding\n        var tail = databytes.length % 64\n        // no room for msg length?\n        if (tail > 56) {\n            // pad to next 512 bit block\n            for (var i = 0; i < (64 - tail); i++) {\n                databytes.push(0x0)\n            }\n            tail = databytes.length % 64\n        }\n        for (i = 0; i < (56 - tail); i++) {\n            databytes.push(0x0)\n        }\n        // message length in bits mod 512 should now be 448\n        // append 64 bit, little-endian original msg length (in *bits*!)\n        databytes = databytes.concat(int64_to_bytes(org_len * 8))\n\n        // initialize 4x32 bit state\n        var h0 = 0x67452301\n        var h1 = 0xEFCDAB89\n        var h2 = 0x98BADCFE\n        var h3 = 0x10325476\n\n        // temp buffers\n        var a = 0, b = 0, c = 0, d = 0\n\n        // Digest message\n        for (i = 0; i < databytes.length / 64; i++) {\n            // initialize run\n            a = h0\n            b = h1\n            c = h2\n            d = h3\n\n            var ptr = i * 64\n\n            // do 64 runs\n            updateRun(fF(b, c, d), 0xd76aa478, bytes_to_int32(databytes, ptr), 7)\n            updateRun(fF(b, c, d), 0xe8c7b756, bytes_to_int32(databytes, ptr + 4), 12)\n            updateRun(fF(b, c, d), 0x242070db, bytes_to_int32(databytes, ptr + 8), 17)\n            updateRun(fF(b, c, d), 0xc1bdceee, bytes_to_int32(databytes, ptr + 12), 22)\n            updateRun(fF(b, c, d), 0xf57c0faf, bytes_to_int32(databytes, ptr + 16), 7)\n            updateRun(fF(b, c, d), 0x4787c62a, bytes_to_int32(databytes, ptr + 20), 12)\n            updateRun(fF(b, c, d), 0xa8304613, bytes_to_int32(databytes, ptr + 24), 17)\n            updateRun(fF(b, c, d), 0xfd469501, bytes_to_int32(databytes, ptr + 28), 22)\n            updateRun(fF(b, c, d), 0x698098d8, bytes_to_int32(databytes, ptr + 32), 7)\n            updateRun(fF(b, c, d), 0x8b44f7af, bytes_to_int32(databytes, ptr + 36), 12)\n            updateRun(fF(b, c, d), 0xffff5bb1, bytes_to_int32(databytes, ptr + 40), 17)\n            updateRun(fF(b, c, d), 0x895cd7be, bytes_to_int32(databytes, ptr + 44), 22)\n            updateRun(fF(b, c, d), 0x6b901122, bytes_to_int32(databytes, ptr + 48), 7)\n            updateRun(fF(b, c, d), 0xfd987193, bytes_to_int32(databytes, ptr + 52), 12)\n            updateRun(fF(b, c, d), 0xa679438e, bytes_to_int32(databytes, ptr + 56), 17)\n            updateRun(fF(b, c, d), 0x49b40821, bytes_to_int32(databytes, ptr + 60), 22)\n            updateRun(fG(b, c, d), 0xf61e2562, bytes_to_int32(databytes, ptr + 4), 5)\n            updateRun(fG(b, c, d), 0xc040b340, bytes_to_int32(databytes, ptr + 24), 9)\n            updateRun(fG(b, c, d), 0x265e5a51, bytes_to_int32(databytes, ptr + 44), 14)\n            updateRun(fG(b, c, d), 0xe9b6c7aa, bytes_to_int32(databytes, ptr), 20)\n            updateRun(fG(b, c, d), 0xd62f105d, bytes_to_int32(databytes, ptr + 20), 5)\n            updateRun(fG(b, c, d), 0x2441453, bytes_to_int32(databytes, ptr + 40), 9)\n            updateRun(fG(b, c, d), 0xd8a1e681, bytes_to_int32(databytes, ptr + 60), 14)\n            updateRun(fG(b, c, d), 0xe7d3fbc8, bytes_to_int32(databytes, ptr + 16), 20)\n            updateRun(fG(b, c, d), 0x21e1cde6, bytes_to_int32(databytes, ptr + 36), 5)\n            updateRun(fG(b, c, d), 0xc33707d6, bytes_to_int32(databytes, ptr + 56), 9)\n            updateRun(fG(b, c, d), 0xf4d50d87, bytes_to_int32(databytes, ptr + 12), 14)\n            updateRun(fG(b, c, d), 0x455a14ed, bytes_to_int32(databytes, ptr + 32), 20)\n            updateRun(fG(b, c, d), 0xa9e3e905, bytes_to_int32(databytes, ptr + 52), 5)\n            updateRun(fG(b, c, d), 0xfcefa3f8, bytes_to_int32(databytes, ptr + 8), 9)\n            updateRun(fG(b, c, d), 0x676f02d9, bytes_to_int32(databytes, ptr + 28), 14)\n            updateRun(fG(b, c, d), 0x8d2a4c8a, bytes_to_int32(databytes, ptr + 48), 20)\n            updateRun(fH(b, c, d), 0xfffa3942, bytes_to_int32(databytes, ptr + 20), 4)\n            updateRun(fH(b, c, d), 0x8771f681, bytes_to_int32(databytes, ptr + 32), 11)\n            updateRun(fH(b, c, d), 0x6d9d6122, bytes_to_int32(databytes, ptr + 44), 16)\n            updateRun(fH(b, c, d), 0xfde5380c, bytes_to_int32(databytes, ptr + 56), 23)\n            updateRun(fH(b, c, d), 0xa4beea44, bytes_to_int32(databytes, ptr + 4), 4)\n            updateRun(fH(b, c, d), 0x4bdecfa9, bytes_to_int32(databytes, ptr + 16), 11)\n            updateRun(fH(b, c, d), 0xf6bb4b60, bytes_to_int32(databytes, ptr + 28), 16)\n            updateRun(fH(b, c, d), 0xbebfbc70, bytes_to_int32(databytes, ptr + 40), 23)\n            updateRun(fH(b, c, d), 0x289b7ec6, bytes_to_int32(databytes, ptr + 52), 4)\n            updateRun(fH(b, c, d), 0xeaa127fa, bytes_to_int32(databytes, ptr), 11)\n            updateRun(fH(b, c, d), 0xd4ef3085, bytes_to_int32(databytes, ptr + 12), 16)\n            updateRun(fH(b, c, d), 0x4881d05, bytes_to_int32(databytes, ptr + 24), 23)\n            updateRun(fH(b, c, d), 0xd9d4d039, bytes_to_int32(databytes, ptr + 36), 4)\n            updateRun(fH(b, c, d), 0xe6db99e5, bytes_to_int32(databytes, ptr + 48), 11)\n            updateRun(fH(b, c, d), 0x1fa27cf8, bytes_to_int32(databytes, ptr + 60), 16)\n            updateRun(fH(b, c, d), 0xc4ac5665, bytes_to_int32(databytes, ptr + 8), 23)\n            updateRun(fI(b, c, d), 0xf4292244, bytes_to_int32(databytes, ptr), 6)\n            updateRun(fI(b, c, d), 0x432aff97, bytes_to_int32(databytes, ptr + 28), 10)\n            updateRun(fI(b, c, d), 0xab9423a7, bytes_to_int32(databytes, ptr + 56), 15)\n            updateRun(fI(b, c, d), 0xfc93a039, bytes_to_int32(databytes, ptr + 20), 21)\n            updateRun(fI(b, c, d), 0x655b59c3, bytes_to_int32(databytes, ptr + 48), 6)\n            updateRun(fI(b, c, d), 0x8f0ccc92, bytes_to_int32(databytes, ptr + 12), 10)\n            updateRun(fI(b, c, d), 0xffeff47d, bytes_to_int32(databytes, ptr + 40), 15)\n            updateRun(fI(b, c, d), 0x85845dd1, bytes_to_int32(databytes, ptr + 4), 21)\n            updateRun(fI(b, c, d), 0x6fa87e4f, bytes_to_int32(databytes, ptr + 32), 6)\n            updateRun(fI(b, c, d), 0xfe2ce6e0, bytes_to_int32(databytes, ptr + 60), 10)\n            updateRun(fI(b, c, d), 0xa3014314, bytes_to_int32(databytes, ptr + 24), 15)\n            updateRun(fI(b, c, d), 0x4e0811a1, bytes_to_int32(databytes, ptr + 52), 21)\n            updateRun(fI(b, c, d), 0xf7537e82, bytes_to_int32(databytes, ptr + 16), 6)\n            updateRun(fI(b, c, d), 0xbd3af235, bytes_to_int32(databytes, ptr + 44), 10)\n            updateRun(fI(b, c, d), 0x2ad7d2bb, bytes_to_int32(databytes, ptr + 8), 15)\n            updateRun(fI(b, c, d), 0xeb86d391, bytes_to_int32(databytes, ptr + 36), 21)\n\n            // update buffers\n            h0 = _add(h0, a)\n            h1 = _add(h1, b)\n            h2 = _add(h2, c)\n            h3 = _add(h3, d)\n        }\n        // Done! Convert buffers to 128 bit (LE)\n        return int128le_to_hex(h3, h2, h1, h0).toUpperCase()\n    }\n    \n};\n\n"
  },
  {
    "path": "src/main/util/MultiDownloader.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.MultiDownloader = function (urlSpecs, onAllSuccess, onAnyError, timeout) {\n\"use strict\";\n\n    this.start = function() {\n        if (urlSpecs && urlSpecs.length !== 0) {\n            scheduleLoadingIcon();\n            for (var i = 0; i < urlSpecs.length; i++) load(urlSpecs[i]);\n        }\n        checkFinish();\n    };\n\n    function load(urlSpec) {\n        if (!urlSpec) return;\n\n        var urls = urlSpec.url.trim().split(/\\s*\\|\\s*/);              // Special \"|\" divider. TODO Find a better way since \"|\" is allowed in Linux file names\n        urlSpec.filesToLoad = urls.length;\n        urlSpec.filesContent = new Array(urlSpec.filesToLoad);\n\n        // Ask to load all files\n        for (var f = 0; f < urls.length; ++f) {\n            var url = urls[f];\n            if (url[0] === \"@\") getEmbedded(urlSpec, f, url);         // Embedded file?\n            else getHTTP(urlSpec, f, url);                            // No, HTTP\n        }\n    }\n\n    function getEmbedded(urlSpec, f, url) {\n        jt.Util.log(\"Reading Embedded file: \" + url);\n        var file = jt.EmbeddedFiles.get(url.substr(1));\n        if (file !== undefined) loadSuccess(urlSpec, f, file.content);\n        else loadError(urlSpec, \"Embedded file not found!\");\n    }\n\n    function getHTTP(urlSpec, f, url, remote) {\n        var finalUrl = isRemote(url) ? proxyze(url) : url;      // May use a proxy downloader if configured\n\n        var req = new XMLHttpRequest();\n        req.open(\"GET\", finalUrl, true);\n        req.responseType = \"arraybuffer\";\n        req.timeout = timeout !== undefined ? timeout : DEFAULT_TIMEOUT;\n        req.onload = function () {\n            if ((req.status === 200 || req.status === 0) && req.response)\n                loadSuccess(urlSpec, f, new Uint8Array(req.response));\n            else\n                req.onerror();\n        };\n        req.onerror = req.ontimeout = function () {\n            loadError(urlSpec, \"\" + req.status + \" \" + req.statusText);\n        };\n        jt.Util.log(\"Reading file from: \" + url);\n        req.send();\n    }\n\n    function loadSuccess(urlSpec, f, content) {\n        urlSpec.filesContent[f] = content;\n        if (--urlSpec.filesToLoad > 0) return;                                   // Still some files to complete loading\n\n        urlSpec.success = true;\n        urlSpec.content = jt.Util.arraysConcatAll(urlSpec.filesContent);       // Concat all files in order\n        if (urlSpec.onSuccess) urlSpec.onSuccess(urlSpec);\n        checkFinish();\n    }\n\n    function loadError(urlSpec, error) {\n        urlSpec.success = false;\n        urlSpec.error = error;\n        var mes = \"Could not load file: \" + urlSpec.url + \"\\nError: \" + error;\n        if (urlSpec.onError) {\n            jt.Util.error(mes);\n            urlSpec.onError(urlSpec);\n        } else if (!onAnyError)\n            jt.Util.message(mes);\n        checkFinish();\n    }\n\n    function checkFinish() {\n        if (finished) return;\n\n        for (var i = 0; i < urlSpecs.length; i++)\n            if (urlSpecs[i] && (urlSpecs[i].success === undefined)) return;\n\n        finished = true;\n        cancelLoadingIcon();\n\n        // All urls have a definition, check for errors\n        for (i = 0; i < urlSpecs.length; i++)\n            if (urlSpecs[i] && !urlSpecs[i].success) {\n                if (onAnyError) onAnyError(urlSpecs);\n                return;\n            }\n\n        // If no errors, then success\n        if (onAllSuccess) onAllSuccess(urlSpecs);\n    }\n\n    function isRemote(url) {\n        return url && (url.indexOf(\"http:\") === 0 || url.indexOf(\"https:\") === 0);\n    }\n\n    function proxyze(url) {\n        return Javatari.PROXY_SERVER_ADDRESS ? \"https://\" + Javatari.PROXY_SERVER_ADDRESS + \"/proxy-remote-download?url=\" + url : url;\n    }\n\n    function scheduleLoadingIcon() {\n        if (Javatari.room.isLoading) return;\n\n        loadingTimer = window.setTimeout(function setLoadingOnDelay() {\n            loadingTimer = null;\n            loadingSet = true;\n            Javatari.room.setLoading(true);\n        }, LOADING_ICON_TIMEOUT);\n    }\n\n    function cancelLoadingIcon() {\n        if (loadingTimer) {\n            window.clearTimeout(loadingTimer);\n            loadingTimer = null;\n        }\n        if (loadingSet) {\n            loadingSet = false;\n            Javatari.room.setLoading(false);\n        }\n    }\n\n\n    var loadingSet = false;\n    var loadingTimer = null;\n    var finished = false;\n\n    var LOADING_ICON_TIMEOUT = 1000;\n    var DEFAULT_TIMEOUT = 15000;\n\n};\n"
  },
  {
    "path": "src/main/util/MultiFileReader.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.MultiFileReader = function (files, onAllSuccess, onFirstError, maxTotalSize) {\n\"use strict\";\n\n    this.start = function() {\n        if (!files || files.length === 0)\n            onAllSuccess(files);\n        else {\n            if (!maxTotalSize) maxTotalSize = MAX_TOTAL_SIZE;\n            var totalSize = 0;\n            for (var i = 0; i < files.length; i++) totalSize += files[i].size;\n            if (totalSize > maxTotalSize) {\n                var error = \"Maximum total size limit exceeded: \" + ((maxTotalSize / 1024) | 0) + \"KB\";\n                if (onFirstError) onFirstError(files, error, true);     // known error\n                return;\n            }\n\n            for (i = 0; i < files.length; i++) load(files[i]);\n            checkFinish();\n        }\n    };\n\n    function load(file) {\n        if (!file) return;\n\n        jt.Util.log(\"Reading file: \" + file.name);\n        var reader = new FileReader();\n        reader.onload = function (event) {\n            file.success = true;\n            file.content = new Uint8Array(event.target.result);\n            checkFinish();\n        };\n        reader.onerror = function (event) {\n            file.success = false;\n            file.error = event.target.error.name;\n            checkFinish();\n        };\n        reader.readAsArrayBuffer(file);\n    }\n\n    function checkFinish() {\n        if (finished) return;\n\n        for (var i = 0; i < files.length; i++)\n            if (files[i] && (files[i].success === undefined)) return;\n\n        finished = true;\n\n        // All files have a definition, check for errors\n        for (i = 0; i < files.length; i++)\n            if (files[i] && !files[i].success) {\n                if (onFirstError) onFirstError(files, files[i].error);\n                return files;\n            }\n\n        // If no errors, then success\n        if (onAllSuccess) onAllSuccess(files);\n    }\n\n    var finished = false;\n\n    var MAX_TOTAL_SIZE = 8 * 720 * 1024;   // Read up 8 720KB disks of files\n\n};\n"
  },
  {
    "path": "src/main/util/Util.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Util = new function() {\n\"use strict\";\n\n    this.logs = [];\n\n    this.log = function(str) {\n         var args = [ \">> jt:\" ];\n         Array.prototype.push.apply(args, arguments);\n         console.log.apply(console, args);\n        //console.log(str);\n        // this.logs.push(str);\n    };\n    this.warning = function(str) {\n         var args = [ \">> jt Warning:\" ];\n         Array.prototype.push.apply(args, arguments);\n         console.warn.apply(console, args);\n        //console.warn(str);\n        // this.logs.push(str);\n    };\n    this.error = function(str) {\n         var args = [ \">> jt Error:\" ];\n         Array.prototype.push.apply(args, arguments);\n         console.error.apply(console, args);\n        //console.error(str);\n        // this.logs.push(str);\n    };\n\n    this.message = function(str) {\n        console.info(str);\n        alert(str);\n    };\n\n    this.asNormalArray = function(arr) {\n        if (arr instanceof Array) return arr;\n        return this.arrayCopy(arr, 0, new Array(arr.length));\n    };\n\n    this.arrayFill = function(arr, val, from, to) {\n        if (arr.fill) return arr.fill(val, from, to);       // polyfill for TypedArrays or Arrays with native fill\n        if (from === undefined) from = 0;\n        for (var i = (to === undefined ? arr.length : to) - 1; i >= from; i = i - 1)\n            arr[i] = val;\n        return arr;\n    };\n\n    this.arrayFillSegment = function(arr, from, to, val) {\n        //noinspection UnnecessaryLocalVariableJS\n        var i = to;\n        while(i-- > from)\n            arr[i] = val;\n        return arr;\n    };\n\n    this.arrayCopy = function(src, srcPos, dest, destPos, length) {\n        destPos = destPos || 0;\n        var finalSrcPos = length ? srcPos + length : src.length;\n        while(srcPos < finalSrcPos)\n            dest[destPos++] = src[srcPos++];\n        return dest;\n    };\n\n    this.arrayAdd = function(arr, element) {\n        arr[arr.length] = element;\n        return arr;\n    };\n\n    this.arrayRemoveAllElement = function(arr, element) {\n        var i;\n        while ((i = arr.indexOf(element)) >= 0) {\n            arr.splice(i, 1);\n        }\n        return arr;\n    };\n\n    this.arraysConcatAll = function(arrs) {\n        var len = 0;\n        for (var i = 0; i < arrs.length; ++i) len += arrs[i].length;\n        var res = new (arrs[0].constructor)(len);   // Same type as the first array\n        var pos = 0;\n        for (i = 0; i < arrs.length; ++i) {\n            this.arrayCopy(arrs[i], 0, res, pos);\n            pos += arrs[i].length;\n        }\n        return res;\n    };\n\n    this.arrayRemove = function(arr, element) {\n        var i = arr.indexOf(element);\n        if (i < 0) return;\n        arr.splice(i, 1);\n    };\n\n    this.arraysEqual = function(a, b) {\n        var i = a.length;\n        if (i !== b.length) return false;\n        while (i--)\n            if (a[i] !== b[i]) return false;\n        return true;\n    };\n\n\n    // Only 8 bit values\n\n    this.reverseInt8 = function(val) {\n        return ((val & 0x01) << 7) | ((val & 0x02) << 5) | ((val & 0x04) << 3) | ((val & 0x08) << 1) | ((val & 0x10) >> 1) | ((val & 0x20) >> 3) | ((val & 0x40) >> 5) | ((val & 0x80) >> 7);\n    };\n\n    this.int8BitArrayToByteString = function(ints, start, length) {\n        if (ints === null || ints == undefined) return ints;\n        if (start === undefined) start = 0;\n        if (length === undefined) length = ints.length - start;\n        var str = \"\";\n        for(var i = start, finish = start + length; i < finish; i = i + 1)\n            str += String.fromCharCode(ints[i] & 0xff);\n        return str;\n    };\n\n    this.byteStringToInt8BitArray = function(str, dest) {\n        if (str === null || str === undefined) return str;\n        if (str == \"null\") return null; if (str == \"undefined\") return undefined;\n        var len = str.length;\n        var ints = (dest && dest.length === len) ? dest : new (dest ? dest.constructor : Array)(len);      // Preserve dest type\n        for(var i = 0; i < len; i = i + 1)\n            ints[i] = (str.charCodeAt(i) & 0xff);\n        return ints;\n    };\n\n    // Only 32 bit values\n    this.int32BitArrayToByteString = function(ints, start, length) {\n        if (ints === null || ints == undefined) return ints;\n        if (start === undefined) start = 0;\n        if (length === undefined) length = ints.length - start;\n        var str = \"\";\n        for(var i = start, finish = start + length; i < finish; i = i + 1)\n            str += String.fromCharCode(ints[i] & 0xff) + String.fromCharCode((ints[i] >> 8) & 0xff) + String.fromCharCode((ints[i] >> 16) & 0xff) + String.fromCharCode((ints[i] >> 24) & 0xff);\n        return str;\n    };\n\n    this.byteStringToInt32BitArray = function(str, dest) {\n        if (str === null || str === undefined) return str;\n        if (str == \"null\") return null; if (str == \"undefined\") return undefined;\n        var len = (str.length / 4) | 0;\n        var ints = (dest && dest.length === len) ? dest : new (dest ? dest.constructor : Array)(len);      // Preserve dest type\n        for(var i = 0, s = 0; i < len; i = i + 1, s = s + 4)\n            ints[i] = (str.charCodeAt(s) & 0xff) | ((str.charCodeAt(s + 1) & 0xff) << 8) | ((str.charCodeAt(s + 2) & 0xff) << 16) | ((str.charCodeAt(s + 3) & 0xff) << 24);\n        return ints;\n    };\n\n    this.storeInt8BitArrayToStringBase64 = function(arr) {\n        if (arr === null || arr === undefined) return arr;\n        if (arr.length === 0) return \"\";\n        return btoa(this.int8BitArrayToByteString(arr));\n    };\n\n    this.restoreStringBase64ToInt8BitArray = function(str, dest) {\n        if (str === null || str === undefined) return str;\n        if (str == \"null\") return null; if (str == \"undefined\") return undefined;\n        if (str == \"\") return [];\n        return this.byteStringToInt8BitArray(atob(str), dest);\n    };\n\n    this.compressInt8BitArrayToStringBase64 = function(arr, length) {\n        if (arr === null || arr === undefined) return arr;\n        if (arr.length === 0) return \"\";\n        if (length < arr.length)\n            return this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(arr.slice(0, length)));\n        else\n            return this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(arr));\n    };\n\n    this.uncompressStringBase64ToInt8BitArray = function(str, dest, diffSize) {\n        if (str === null || str === undefined) return str;\n        if (str == \"null\") return null; if (str == \"undefined\") return undefined;\n        if (str == \"\") return [];\n        var res = JSZip.compressions.DEFLATE.uncompress(atob(str));\n        if (dest && (diffSize || dest.length === res.length))\n            return this.arrayCopy(res, 0, dest);                                                        // Preserve dest\n        else\n            return this.arrayCopy(res, 0, new (dest ? dest.constructor : Array)(res.length));      // Preserve dest type\n    };\n\n    this.storeInt32BitArrayToStringBase64 = function(arr) {\n        if (arr === null || arr === undefined) return arr;\n        if (arr.length === 0) return \"\";\n        return btoa(this.int32BitArrayToByteString(arr));\n    };\n\n    this.restoreStringBase64ToInt32BitArray = function(str, dest) {\n        if (str === null || str === undefined) return str;\n        if (str == \"null\") return null; if (str == \"undefined\") return undefined;\n        if (str == \"\") return [];\n        return this.byteStringToInt32BitArray(atob(str), dest);\n    };\n\n    this.compressStringToStringBase64 = function(str) {\n        if (str === null || str === undefined) return str;\n        if (str.length === 0) return str;\n        return this.storeInt8BitArrayToStringBase64(JSZip.compressions.DEFLATE.compress(str));\n    };\n\n    this.uncompressStringBase64ToString = function(str) {\n        if (str === null || str === undefined) return str;\n        if (str == \"null\") return null; if (str == \"undefined\") return undefined;\n        if (str == \"\") return str;\n        return this.int8BitArrayToByteString(JSZip.compressions.DEFLATE.uncompress(atob(str)));\n    };\n\n    this.toHex2 = function(num) {\n        if (num === null || num === undefined) return num;\n        var res = num.toString(16).toUpperCase();\n        if (num >= 0 && (res.length % 2)) return \"0\" + res;\n        else return res;\n    };\n\n    this.toHex4 = function(num) {\n        if (num === null || num === undefined) return num;\n        var res = num.toString(16).toUpperCase();\n        if (num < 0) return res;\n        switch (res.length) {\n            case 4:\n                return res;\n            case 3:\n                return \"0\" + res;\n            case 2:\n                return \"00\" + res;\n            case 1:\n                return \"000\" + res;\n            default:\n                return res;\n        }\n    };\n\n    this.escapeHtml = function(html) {\n        return html\n            .replace(/&/g, \"&amp;\")\n            .replace(/</g, \"&lt;\")\n            .replace(/>/g, \"&gt;\")\n            .replace(/\"/g, \"&quot;\")\n            .replace(/'/g, \"&#039;\")\n            .replace(/\\//g,\"&#047;\")\n            .replace(/\\?/g,\"&#063;\")\n            .replace(/\\-/g, \"&#045;\")\n            .replace(/\\|/g, \"&#0124;\");\n    };\n\n    this.arrayFind = function(arr, pred) {\n        if (arr.find) return arr.find(pred);\n        for (var i = 0, len = arr.length; i < len; ++i)\n            if (pred(arr[i], i, arr)) return arr[i];\n    };\n\n    this.arrayFindIndex = function(arr, pred) {\n        if (arr.findIndex) return arr.findIndex(pred);\n        for (var i = 0, len = arr.length; i < len; ++i)\n            if (pred(arr[i], i, arr)) return i;\n        return -1;\n    };\n\n    this.arrayIndexOfSubArray = function(arr, subarr, fromIndex, step) {\n        var subLen = subarr.length;\n        var len = arr.length;\n        var st = step || 1;\n\n        Loop: for (var i = fromIndex; (i >= 0) && (i < len); i += st) {\n            for (var j = 0; j < subLen; j = j + 1)\n                if (arr[i + j] !== subarr[j])\n                    continue Loop;\n            return i;\n        }\n        return -1;\n    };\n\n    this.stringCountOccurrences = function(str, char) {\n        var total = 0;\n        for (var i = 0, len = str.length; i < len; ++i)\n            if (str[i] == char) ++total;\n        return total;\n    };\n\n    this.stringStartsWith = function(str, start) {\n        if (str.startsWith) return str.startsWith(start);\n        else return str.substr(0, start.length) === start;\n    };\n\n    this.stringEndsWith = function(str, end) {\n        if (str.endsWith) return str.endsWith(end);\n        else return str.substr(str.length - end.length) === end;\n    };\n\n    this.checkContentIsZIP = function(content) {\n        if (content && content[0] === 0x50 && content[1] === 0x4b)      // PK signature\n            try {\n                return new JSZip(content);\n            } catch(ez) {\n                // Error decompressing files. Abort\n            }\n        return null;\n    };\n\n    this.getZIPFilesSorted = function(zip) {\n        var files = zip.file(/.+/);\n        files.sort(sortByName);\n        return files;\n    };\n\n    this.checkContentIsGZIP = function(content) {\n        if (!content || content[0] !== 0x1f || content[1] !== 0x8b || content[2] !== 0x08) return null;      // GZ Deflate signature\n\n        try {\n            var flags = content[3];\n            var fHCRC =    flags & 0x02;\n            var fEXTRA =   flags & 0x04;\n            var fNAME =    flags & 0x08;\n            var fCOMMENT = flags & 0x10;\n\n            // Skip MTIME, XFL and OS fields, no use...\n            var pos = 10;\n\n            // Skip bytes of optional content\n            if (fEXTRA) {\n                var xLEN = content[pos++] | (content[pos++] << 8);\n                pos += xLEN;\n            }\n            if (fNAME) while (content[pos++] !== 0);\n            if (fCOMMENT) while (content[pos++] !== 0);\n            if (fHCRC) pos += 2;\n\n            return JSZip.compressions.DEFLATE.uncompress(content.slice(pos, content.length - 8));\n        } catch (ez) {\n            return null;      // Error decompressing file. Abort\n        }\n    };\n\n    this.leafFilename = function(fileName) {\n        return (((fileName && fileName.indexOf(\"/\") >= 0) ? fileName.split(\"/\").pop() : fileName) || \"\").trim();\n    };\n\n    this.leafFilenameNoExtension = function(fileName) {\n        var name = this.leafFilename(fileName);\n        var period = name.lastIndexOf(\".\");\n        return period <= 0 ? name : name.substr(0, period).trim();\n    };\n\n    this.leafFilenameOnlyExtension = function(fileName) {\n        var name = this.leafFilename(fileName);\n        var period = name.lastIndexOf(\".\");\n        return period <= 0 ? \"\" : name.substr(period + 1).trim();\n    };\n\n    function sortByName(a, b) {\n        return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;\n    }\n\n    this.dump = function(arr, from, chunk, quant) {\n        var res = \"\";\n        var p = from || 0;\n        quant = quant || 1;\n        for(var i = 0; i < quant; i++) {\n            for(var c = 0; c < chunk; c++) {\n                var val = arr[p++];\n                res = res + (val != undefined ? val.toString(16, 2) + \" \" : \"? \");\n            }\n            res = res + \"   \";\n        }\n\n        console.log(res);\n    };\n\n    this.browserInfo = function() {\n        if (this.browserInfoAvailable) return this.browserInfoAvailable;\n\n        var ua = navigator.userAgent;\n        var temp;\n        var m = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n        if (/trident/i.test(m[1])) {\n            temp = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n            return this.browserInfoAvailable = { name:'IE', version: (temp[1] || '') };\n        }\n        if (m[1] === 'Chrome') {\n            temp = ua.match(/\\bOPR\\/(\\d+)/);\n            if (temp != null) return this.browserInfoAvailable = { name:'OPERA', version: temp[1] };\n        }\n        m = m[2] ? [m[1], m[2]] : [ navigator.appName, navigator.appVersion, '-?' ];\n        if ((temp = ua.match(/version\\/(\\d+)/i)) != null) m.splice(1, 1, temp[1]);\n        var name = m[0].toUpperCase();\n        return this.browserInfoAvailable = {\n            name: this.isIOSDevice() || name === \"NETSCAPE\" ? \"SAFARI\" : name,\n            version: m[1]\n        };\n    };\n\n    this.userLanguage = function() {\n        return ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage || \"en-US\").trim();\n    };\n\n    this.browserCurrentURL = function () {\n        return window.location.origin + window.location.pathname;\n    };\n\n    this.isOfficialHomepage = function () {\n        var loc = window.location;\n        return loc\n            && (loc.hostname.toLowerCase() === \"javatari.org\")\n            && (loc.port === \"\" || loc.port === \"80\");\n    };\n\n    this.isTouchDevice = function() {\n        return ('ontouchstart' in window) || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n    };\n\n    this.isMobileDevice = function() {\n        return this.isTouchDevice() && (/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i).test(navigator.userAgent);\n    };\n\n    this.isIOSDevice = function() {\n        return (/ipad|iphone|ipod/i).test(navigator.userAgent);\n    };\n\n    this.isBrowserStandaloneMode = function() {\n        return navigator.standalone || window.matchMedia(\"(display-mode: standalone)\").matches;\n    };\n\n    this.onTapOrMouseDown = function(element, handler) {\n        this.addEventsListener(element, this.isTouchDevice() ? \"touchstart mousedown\" : \"mousedown\", handler);\n    };\n\n    this.onTapOrMouseDownWithBlock = function(element, handler) {\n        function onTapOrMouseDown(e) {\n            handler(e);\n            return blockEvent(e);\n        }\n        this.addEventsListener(element, this.isTouchDevice() ? \"touchstart mousedown\" : \"mousedown\", onTapOrMouseDown);\n    };\n\n    this.onTapOrMouseUpWithBlock = function(element, handler) {\n        function onTapOrMouseUp(e) {\n            handler(e);\n            return blockEvent(e);\n        }\n        this.addEventsListener(element, this.isTouchDevice() ? \"touchstart mouseup\" : \"mouseup\", onTapOrMouseUp);\n    };\n\n    // Will fire event 2 times (at touch start and end) for needsUIG targets\n    this.onTapOrMouseDownWithBlockUIG = function(element, handler) {\n        function onTapOrMouseDownUIG(e) {\n            if (e.type === \"touchend\" && !e.target.jtNeedsUIG) return blockEvent(e);\n            // If User Initiated Gesture needed on TARGET, signal if starting or ending touch\n            var uigStart = e.type === \"touchstart\" && e.target.jtNeedsUIG;\n            var uigEnd = e.type === \"touchend\";\n            // Fire original event and block\n            handler(e, uigStart, uigEnd);\n            return blockEvent(e);\n        }\n        this.addEventsListener(element, this.isTouchDevice() ? \"touchstart touchend mousedown\" : \"mousedown\", onTapOrMouseDownUIG);\n    };\n\n    function blockEvent(e) {\n        e.stopPropagation();\n        if (e.cancelable) e.preventDefault();\n        return false;\n    }\n    this.blockEvent = blockEvent;\n\n    this.addEventsListener = function(element, events, handler, capture) {\n        events = events.split(\" \");\n        for (var i = 0; i < events.length; ++i)\n            if (events[i]) element.addEventListener(events[i], handler, capture);\n    };\n\n    this.removeEventsListener = function(element, events, handler, capture) {\n        events = events.split(\" \");\n        for (var i = 0; i < events.length; ++i)\n            if (events[i]) element.removeEventListener(events[i], handler, capture);\n    };\n\n    this.insertCSS = function(css) {\n        var style = document.createElement('style');\n        style.type = 'text/css';\n        style.innerHTML = css;\n        document.head.appendChild(style);\n    };\n\n    this.scaleToFitParentHeight = function(element, parent, bottomOffset) {\n        var availHeight = parent.clientHeight - bottomOffset - 20;      //  bar - tolerance\n        var height = element.clientHeight;\n        var scale = height < availHeight ? 1 : availHeight / height;\n        element.style.transform = \"translateY(-\" + ((bottomOffset / 2) | 0) + \"px) scale(\" + scale.toFixed(4) + \")\";\n\n        // console.log(\"SCALE availHeight: \" + availHeight + \", height: \" + height + \", final: \" + height * scale);\n    };\n\n    this.scaleToFitParentWidth = function(element, parent, horizMargin) {\n        var availWidth = parent.clientWidth - (horizMargin * 2 | 0);      //  margins\n        var width = element.clientWidth;\n        var scale = width < availWidth ? 1 : availWidth / width;\n        var finaWidth = (width * scale) | 0;\n        var left = Math.floor((availWidth - finaWidth) / 2 + horizMargin);\n        element.style.left = \"\" + left + \"px\";\n        element.style.right = \"initial\";\n        element.style.transform = \"scale(\" + scale.toFixed(4) + \")\";\n\n        // console.log(\"SCALE availWidth: \" + availWidth + \", width: \" + width + \", final: \" + width * scale + \", left: \" + left);\n    };\n\n    this.log2 = function(x) {\n        return Math.log(x) / Math.log(2);\n    };\n\n    this.exp2 = function(x) {\n        return Math.pow(2, x);\n    };\n\n    this.performanceNow = function() {\n        return this.performanceNow.startOffset ? Date.now() - this.performanceNow.startOffset : window.performance.now();\n    };\n\n};\n\nif (!window.performance || !window.performance.now) jt.Util.performanceNow.startOffset = Date.now();"
  },
  {
    "path": "src/main/util/ZIP.js",
    "content": "/*!\nJSZip - A Javascript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n!function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\x00\\x00\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(\"undefined\"==typeof a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);\"undefined\"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\x00\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return\"string\"===e?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||\"undefined\"==typeof b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&\"undefined\"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||\"undefined\"==typeof b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=\"undefined\"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";w+=\"\\n\\x00\",w+=p||q?\"\\x00\\b\":\"\\x00\\x00\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+\"\u0014\\x00\"+w+s(o.length,2)+\"\\x00\\x00\\x00\\x00\"+(j===!0?\"\u0010\\x00\\x00\\x00\":\"\\x00\\x00\\x00\\x00\")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\x00\\x00\\x00\\x00\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=\"undefined\"!=typeof a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob(\"application/zip\").size}catch(d){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k=\"\",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(b){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;return e.append(a),e.getBlob(\"application/zip\")}catch(b){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=16&this.externalFileAttributes?!0:!1},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)\n};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg=\"invalid literal/length code\",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg=\"invalid distance code\",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=lb;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg=\"invalid window size\",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=lb;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg=\"invalid code lengths set\",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg=\"invalid literal/lengths set\",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg=\"invalid distances set\",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg=\"invalid literal/length code\",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg=\"invalid distance code\",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;\nif(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});"
  },
  {
    "path": "src/runtime/embedded/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n\n    </head>\n\n    <body>\n\n        <div id=\"javatari\" style=\"text-align: center; margin: 20px auto 0; padding: 0 10px;\">\n            <div id=\"javatari-screen\" style=\"box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\"></div>\n        </div>\n\n        <script src=\"javatari.js\"></script>\n\n    </body>\n\n</html>"
  },
  {
    "path": "src/runtime/images/EmbeddedImages.js",
    "content": "// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\njt.Images.embedded = true;\n\njt.Images.urls.logo = \"data:image/png;base64,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\";\njt.Images.urls.loading = \"data:image/gif;base64,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\";\njt.Images.urls.mouseCursor = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABL0lEQVRYw+3VP0oDQRTH8U8k+AcFFRUFERGLiFjEA1jZTo6RG6T3ArmFR9j0WlpaWBiwsNNyiwgW0Vg4CUPELhMt9guPffumeG9nf/MbvlnEYVmWo3a7PcIO1s2R3aT5KQ6wMo/GC/G5nNTWsYr6PHdgE+fJLjRxhFqMbNSxFr96K6nvYxhr7zE+Y8yUWghhNH5pNBr6/f5ksdfrXeA1xiCbBoqiUBSF6RwN7GIptwh/4wR7UyKduQZ0Op1JIc2xHTVSzzpAt9v9sdBqtczTB/6Mfz/A2AOGOYe4DCGMUqI33OAKl1MmNVsjwhmaIYTrxIBu8YA73OMZb7kG2MFhPPPH2ECJJzzG5iU+ch3DMvnfL/HcDxILztZcctPVo9stxXyYCPBDRUVFRUVFRUa+AB+1YCivg1lPAAAAAElFTkSuQmCC\";\njt.Images.urls.panel = \"data:image/jpeg;base64,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\";\njt.Images.urls.panelSprites = \"data:image/jpeg;base64,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\";\njt.Images.urls.controllers = \"data:image/jpeg;base64,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\";\njt.Images.urls.iconSprites = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAACkCAYAAADGxBfDAAAgAElEQVR42u2deXxU1fn/P+femcm+sQRiQtgFBRWFWJRNcImikgAqRbtYcQdtraL2W/urtda2WmsFam3VKojKIjGRLYMIWsEtICI7YQmBQICQfZnMcs/vj3MuuVxmkkkyk0yS5/16zesms5ztLudznvOc5wAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAE0U6w9sycAyouuigRTqfl7Js2mxt79pxigIdOD0EQBEGEJpZ2zb1v30S4HFkAkt2cqwDgqq89+Xxs7P2orDwO4CRISBAEQRAECYhzsFpVcE8SgD4WJowhJ9yeXotra1cCKARwO4CjADidKoIgCIIIHZRgJs5bMEWica5qnPcG0AdAN28ihycnx9GpIwiCIIhOKCA4oGBA34V8YP8M+BASdZrGNM59iYwIAMkAbMbf84H970CY9Xs+MOVaACQkCIIgCKIdCMoUBgcsGNB3EZgyA4zNeDA25qvXK6teBZAN03REI1YKK4B4AOrZ7w4a8DCAf4IxVHuUD26ODNdW1zp+BuAT0DQHEUJkZ+f4dT1mZmawUEi3ueTlbQno/ZaWNmqw/POoTN8RzPKb8wNQ3x711PMNdD7NrWdTOIdf3Kry2XbuZvRUIAuEf+Khf9/FUjwoAGyv9Og+IT0yYhmET4Ni+v55L0PZrLr1gQ/s/2sA/9Q/jFbUnvO7d+91Q3j4YgA3I8jTMQQRJPTLXu0g6RIhLsYCTWvFgyGNMLoeSUA0zoC+f4fCbpfiAQAQrihY1LOnpb/F8i6AW5ubb2FiYjiAqeCG65gx9LfZ8Fpij56DLJY3AKSTiOhy124gXqGC0dqmBCndUCZfvvrIV1vnx9A2y9rPybcNxEOr2jUQ4sGQlgNADzkwJEhAmIY8/ROHA8pMMOWcdMtdbvy5tAyH3W4bgP8CuKg5N2vqqVOOmoqq2+s5/8YsIgZYLLg/Nro3gNcBDEU7x7YgSEi0kH44f0pRCVK6BNFejAfQi0RE5yDAD5ao2WDoYXynyu3B70vLMK+qCgBcEP4Ktc29gKJLSkoerK196Onu3T7qa7P2hVz2yRQFM6Nj8EZFVZ98j+dXAB4B4AT5RHQK/J3zby3B9hnIzMxo6isJ/giGzMyMSABj5H1kbKdWpdta0tJGdej0qZ7+Ydu5u7lWB/Nb0+TxCwCnQXF+yAIBADwlZSAUTNE7dvEmR3ZtjS4eAOAMgAKI5Zmqw/cKDDMMAHu9trb272Xl6+o0TTN+mGxRcVt0NJMX5wjQVAbRgksYbeMzUC8FtP46A+DjFqTzsfytno4vVJBVjggdrgIwCUAqyDJGFoizhClXATzR+Kyq1DTML6vQ/3UA2AHgGIDKZipPDkADUPp2dfWqn8TGXp8WofQ7a4VgDFOiIvByRUV3J3AXgB9kfmSF6KSoqujnNY1LraoFKul4AOVBHBntNKVfD2AXgDJ5jcNw9Nbxa/K7u+TnYfL9G0Lk1GTK40HDveuvsAIaVgsEOv2m8uNdpJ7tTXcIX4xYGuiRgDB08Ww0GLMYrQ/ramux1eXSL/58AJ8D+AYiRLU7nDHejPtCA1BRBXz3cU3Nm5eFW/9gY7IXYQyDbVZEM4ZSztMB/BXACRIQRAvoJzv5YAmILJm+/mD3SEFwBIDbyzVvxi2/uwLABoPF5AY6dUSo4WXKQ4WYvibLGAkIqRUGDYoF94w1vufhHDk1NfoTsEaKh00ADsj/mztk5BA+FKe3uVyryj3aQ4mKmnx22MhUpEdE4IPa2hSIAFSnWpAHEeL44UvgF8H2GZC+CuMA2L1YIDYDqDPeLlIYeLxc82Z0wVFlEA/IzMzoAeEbkdPOp0gfMe9u4ciZBzn95ubX1evZIrz4PuhESLF7QxPCg8RFByAwJiSHwwLwFKP/Q6mm4eOas8/IIwC2ypui6pwHJWPnvhoXpRyAc3Vt7aEyTfvSuCJDVRhSrVb9Ar0JhhgSRKfE7EvQ3JcvAjky0gCsBFAqXytNZXBCTLW5mmnx8MjfeKuXOT8PyBJHhIZ4aE4aFDeiq1ggzu/mOQ66nHCLDl4D8BWA/XLk1PiDsulHNwdQ5+KeLzXOpyuGeBOGFAbKi4/8IIInJtvbumP2JWguwTb5674KO01lNvo6uL3ch1oz21+Rf/uTX9DIy9ui/7mjJb/3EjExoOl7yeeYPvyheoaWeDCk5bDt3N1bimEXPaI7sYDQOGeKofP/vM6hD/PqIPwfihG45ZWeI+5q+xBr+AuKsDiYiQYQBeGsSXROIWH2JQg1AWH2VQB8+zq4WylUmptflyUvb0u+oXOleoY+4+UA9CSJiE4qICo1jUWbLE0DrWfDPBRLAeF9tMhMe2P4ZzzmI1hMvMJ82ivC5YumMEwEOq5CsOMnNGGBMPsShBLefBW8+TqY248HOb9QJV8eg97pyc51ovz367YcoXf0ejZmYfAWI4LiRpCAaD6M4cqwcMQyhkrOLRDr1c+bTtDcbrdmVY/VQossc2vdNQZ21OXWh0uNPkh7hYVNVhkL9/GxKkfSJCCCDzdcS215c9dL8VAbwm2j+x+4vFgMWisYWpofIdgIYCLVM+S5Sg4+j8CfKXCiwwqIc0aC3VURZvp7l6ub7Mg188Myr7DwdGFy8i/eLi298ZDL9azGeZybMeW0x6PJ9Dw+eixFY9qVZv8aDz0r25Ngx0/oqBh9FYxHrZPkByDwERQN5vf8AI3GfXWuej5+xVsI9UiUftTzQAe7fyhuRGcXEHHHj5fW90vdbmM8WV+JEckU3BUdje/LyiIgoo59I4XE2Rt0IuBBUVExhIPlRgBXQvgu1ADIA1Di9YZOSuqmKOrlxlUfFR4PVlTXBmNUR/hHPwQ3fkJnERKdNT+CCAYUN6IrWCCcXPvBBnWy/j9TFEyOjsQfy8oslUAGxPp0bw5vbikUtkJMc0RK68NO+JrzCrc+DZy750aJpqFCRLj2QHgwk4jwg+bGVWjvPRc6IHqbMFPHzjtJfuddUs0Z0RvwFTFRHzmHtbJcO328HxYi9QxU+gGtp23n7kjn8Itr6TYmGnvYtBZe6PRkuzV+zjTGEKsVjybEAWIeK8lLfhxiZUYhgHUAFgF4E8BC+X+hvOHO3jw8KakHmDoVzGB+4Bxf1zlQKpaNutGw7IdEhP/4G1ehsZECjRD8u+eUTpwf0cmw7dx9PbUCEVQLxLMnTux6s3/fQ7GcD9OnFlRFwc+io/F6eWVSCeePAHgc5/tC6N7j1bI8+jSHG94C7IRbnwJDP+NbtR4Ni6tr9H/LIDbsakm0y66Mv3EVKGSyH5hXu2RmZlhMFoEOnV8jBDpC48EQPcUdLRJlS9EAVNh27n4dIkDfBaCtuIlAC4jlQP1cp2Ph5baIFyxqw54Yg202fJTUm91RfHL6CU2bB+HEw003kgve16qfu8Szf+ofoCgPwRg8inNsdTqxrq5O//5+iKkPCiLVPPyNq0AComXo17cVbeMn0tb5EZ33uj0KEVskHsDVkLsp+/h+BDUZCYiW4Lmy6OSi46kp9yUp1sFnHRwZw9iIcCzr3av37cUnlxdr2q3yguTNUeRSPDwBpkSarQ/zyiv0YZYDwvnyDAIXtKorWSBCOa6CP3QEU308GpajWXD+DpyBrqsxv7aA+zg2i7y8LaF+7waknl7qrf+5I0Tq6ZHP06/k/+VofCvucwYYgYxMSXRuAcEBVGdV1cy7PTb6hUSLJcYsIlb0Trz0xdLydTscjhsOeRcR5yealNQD4danhOXhXPHg8mhYXFOND2vPTs0fBrAPFHCkJRjjKljQsad/QllI9MW5+8FoaFkoa3/ras6PIJqLCyIS5BcQ8RjiGrnuyEJJAqLFAqJ+TlnZmsOaa+hj8fH3JVtttrOfMoarIyLwflLYkK/q6rd/63D8MS0ycuH1x4+f8ZKQgqSkbgi3Pi0cJtEPpj0vXB4N/62swoNnzv68GmK3z/0AKoL1wAx0JEczbR3Z0bCqIrcjXLAdrbxusTLIWO4tPs63FqTrj1bHmDDFWqhv57IMysvbcqAD1NMlB2ZloA2uiCAICMhOu+TliurlJS4t9bke3SanWq2q0RIRqaq4NioifkyE7eUit+fZ3X0usMczrE+y1K2BMyoRVusUMO1HYMoVAHqcs9rCIB7eqqzCQw3ioR7AtwC2SYXckf0f2iuyI9G+51v3VQj0dUurY3x3qqFSpoCLiCDV00PPJCKYAoJDmMAPLaytXVZ/msf+pUf3sX1tBhEhhUS4asFA1RIDzm/zcD7dwW0u1QZYGWyAAjDvzzzd8mAQD04A2yHm77+DiCnRGTYPosiOneEGU5TmnG/dV0FBiE8hpaWNGiT/NHd89UFOP5BMRMNulbw96qnnL/es2NgG9QwqgYwb0dx9NIi2JximTY/sxPOW1NUtnlty5svDLpeHaz6eh4xBVRQWrio2q6LYwJh38cA5at0evF19zrSFLh4+la8DEPP4ncF5sh+CtVcJEYr09XK+aeohuOKhK5SpzesZiLgRBvGgbwingZziQ45gmTYViOU8qQDGXmK1Tr8nNnrcbVHRkckWVcxKMD+z5hy1Hg1bnU7MKy/Dh7UOs3hYD8AO/+MYtJYIAGMAfBLkfK5HcFZFRAAYJ9sskNwI4WRV20HKG+x6NLfcxvOtWyC8WSKae/0F67zokQ37mN4/GqARujn9sACVu9448kfTu1MGu546+saAKQGqb3PrGcjr4lIA96D1cSNcAE4AWAPgbfm8b1efFeJcgjXC1TfDKgSwaYfLhcfOlFX/u6JqzNSoqMQpURHKYJsV8UyFqngXEhUeD0o0DV85HHivqgbr6ur0J6k+TbJLWh3aUjwY+Vg+yAO97rlOdiTBRAOw0lT+5qp7ZipvMObvA1ne9qiHP+Vu6fn2df215XkhCDPNjRvR2L2jLx/dIPsSNzVv1xAQZhHxBQD3Xre77s8VFZe+XFHRJ1pRYtLDw9VUq/U8BeGBhhXVtSjTNJRzbkyvHsIT+IB8OH7aDuJBg5ir3iUf1mEBTr9epl2G4MyD6+XfGcCRzs4OVN62qoe/5fZ2vjWTGGjJ9Rfs86KPBA8E8XwEM/1QK4cjROrbWpobN6IxIVIoxcPXMk3yBwsx2sI7W4EwzyUBGAZgJISJqz+AngCi5efeFKq+V0adfBAWQcR52Aax+dZBBHHJpg9UiKVxfeVRDcINWAaxmiQYAYACXf6OVt62qoe/5W4sX+bFehCIdAki2FghtuJOReNxIxoT4BVSRJyBmM4guqCA0POxQezpfgGAQQCGSBGRJC+0KNPDkEv1Xy6tDkchYjzslw/FEiks2uPBqEpFHczOzB3EugW6/B2tvG1VD3/L3dx8g5VuawcKMIw0zWXTLSVOeaw1fc9XPAzF9L7WzPz1KZ4aw8gWAWwTxUc5uale5s+ZqbyKlw7UWF6tifRo3x+izWkrL3/dklAKEfDpOIR5tYe0QvSCmC+zmB4ktRAR0E5LFVoiBYVD3ljtNbfb0ddDd7Tyd9T2Dla5aT0+QRBdxgJhzpPJEYJVjkyi5NFsgXDJkUMdGjbcouU8BBE6qACwYcNGvxzcJk2a+JT880X5Oy7fz5Dvb5fvF5je/14ei0wWBL/ynzRp4iz553p5PNbKkfs5+Xop5wn5ubOx+jVS3vvlnxuM5d2wYaPDz3YhiKDTHuvMubxpXVIYVMibrRBiLwv9VSBvmlIpIupBHuUEQXQB8vK2/IdagQh12jtQETcIAlLOBNHBnyGTJjUZt+iv8mjeA0ffLORBH+/rFoQP5LGumfm/JY/6yP14Ky0QlibKmeVP/XyVd8OGjdiwYeN/Jk2a+Df51tvNbBeC6JQWCIIgCIIgOtPogSAIIkCDkHXy+LU8mn0OdIvAm6bfJfpIr4eP/JrKX4/wuEQet8sjD1K9ezTxbE1sorzfyePT8viEPB5uZrsQRLvd/ARBEARBED4hCwRBEAFjw4azG0reYDxOmjTxT/L/rCaSYK0Z7HjJHzL/JaavBsvnSmmiHsyf9oqJiUFa2qgsANNoEEiEKnTxEQRBhBh+igeCaFfIAkEQRMBoZBXEb+VR3xvkuzbO/zV51FdhHAnF9tItEhs2bJxm+OxtNOwtQRAhA1kgCIIgQkyAxcTE6GLibWoVIlQhCwRBEMFgjTyuksfV8ljawvSs8qjvbaGv5vC1G+kn8pgnj/qumsltNChr7q6xdnmsnjRp4nSDbwRvYbuY99KgODtE0C52giAIIjRYQU1AdATIAkEQRDDQ5+yXyWO5PNqa+N05I27DSPw543HSpIkPy///5eP71xuPhu/rlhG1lSNzTaZ7f17elv8Y8v2T8ShXUywFMEO+f8ZHel/K41p5nC6P98jjVn/aRScIe38QRGgJiKysLDUmJiZR07Sz5VAUxV1VVXVq2rRpZHIjOjWP/Pp3tq1OT0+nw8XCamvcUXv3nsQFiVfYVBbNGWcaFKZwXrs654Nvhl86OmXIhRfCwzUcP3ak/NtvvqimFgwN0tJG3b9hw8b/+PhsKbUQ0Vlh7Zn52rVrkxhjWQCSPR6PCgBut/vk+++/f//SpUuPQ2zlTUKC6JTsnPt4Rs+D+VnMWa9wZ31hL/vGwTmf7z3VK2VAHJd3Z31tbdmUSSMGf7x2U4k1ujvANWzZvO7FX9477akQqYY+13+XPOoRJn3t0aB/v940wtZ/96BpcLOgifznyWO0KT1fZJgsEe4W1lu3YKTKo27heMLH9817WoyRR1143CuPH5ksEPrn+u6cNj/bJdD1JYjQskAoiqJyzpMA9FFVcT+Wlpb22rhx40qI3TlvB3AUHXAHzuzsHK9lzszMYCFWVAXCEUvxIih5E4Kzqc+DTWvLp+8M624PocrqarlaWe6xOp2KB+CYfEe8+ps/a2GKFWAaNDB4wJWasuPDw6PjoVosAAccLrcNQIwsN22eRBBE5xMQWVlZbNq0ac3q/DVNUzVN6y0f7t0gtvp2Gb+zZs2auMmTJ1d00DbnhrZvb+uKmp2d06VHJJmZGWMg9hk4A8DZpo0PsAjGLDbGcMTp7IMNK/e4nvhtvC2CQYEKjQGV5dWxmse9OioqDBxWKArw7RefPCBHrC8DeLadm1C/fvS59qnyqMd5cPr4Pnz87nuDsDVaJBLkUV91UCyPb5hG9FvkMc70/SJT+q31BdDvXd234HV53Gcqb5k8bjR9v9pHe1XJo74qI9NUbtVHu8BUr5IA15cgvI4+gyUelIiIiIW5ubkZvkam9fX1jHPua9QaAbHkymb8fW5ubqaiKN+vXbv2WsNDoiMSb3gYtJuAoFsAswGkA0hC0w5+ASVM8+y2eTx/L3Q4Pvjv8ZPMwtDNauUsPFyDNZwjPIwjzAoGICo8HLDJF7g7AsJkH0mnjyCITmWByMrKskRERCxijM1gjM245ZZbvlq1atWrALJhMitzzhljXjWE1dzJ2u32+yDnBB0Ox/tXXnkl//bbb38Gsea7o01z9IOIyteuVojMzIwrIeaNJwDojq61MkeTI9dYef2sA3Cqrc5J/9f+kw8xZ34JgJkRERGwhQER4ULXcwDhYeLeCA8HNCaUtBJaZ0hvq0LTsanvw8/f/dvPcmw2HdsK3Tp60HRsiqbqHah2IYiOY4GQ4mGxFA8KANsDDzwwYeTIkcsgfBqUZpTNqlsfcnNzf4UGhyKEh4cnPvzww72uuOKKxQBuRhvGtPj445U+g8RkZ+ckZGfnPOrr85tvvgVRUVGAMD2eV+aVK1eFteH590CYVL8EcABALbqWqZNBWLoGAbgawiGuzbrn+y+/suecUaOvvWXghWm9IiK/Uy2WNdERVqfNBoTbgMgwwBYmdHGYjcEWBoSFAxaF0ZOLIIjOZ4GIiIj4O2PsdikeAAA2mw1z5861/OpXv3q3uLi4HsDK5nRU77zzTjiA6Zxz6NYKxhh69+6NOXPm9HzmmWfeOH78+D0Q84ZB7wA559tzcj5e+ac/Pf/7b7/9ttYgHv4kR5Q+TeH33Xcf7r77bnz55ZdVr7zy924AjgPga9asVV0u1180TbsVwFAIb/X6NhAQZwB8Li09FQD6omHeuCvAAdRAxCloU3+QB8L5uAusbEVYVHeofRML4jZsGtktNrokXEF3/eaxyes9XGXg0hanKJyeXARBdC4BsXr16uGMsZlG8QAAVVVVWLJkCYqLi20A/gtgPIDd/qZ79913Oz788MPbw8LCsq1W64+MIiIpKQk33XRT77feeut1ADcB2IMgTmdkZ+c8yDkfAmDIo4/+8rHVq1etS09PfzI+PuG/ANL8ScNqtWLChAlfv/LK39kll1zyxnPP/fF/TqfzFYgpBPziF/d88vbb/00FcDGCb053QjikrYMwv3aXlhGPbEduGK0znBuAx9fnwfat8LSyfObPXVJIFbSliLAxuMMZXGGAtczpsoX16zdGcTmtEYbLN1wew8DB9QqQAYIgiM4mIFRVnQ2gh/G9mpoavPvuu8jJyYF8UH8CYSpv1ij3tttuK7npppsemjlzZlZiYmI/XUQoioJrrrkGa9eu7XP8+PFfAXhEdooBFxHZ2TkRAF7S/4+JiVFnzPjxTS6X66ZGrBXw4eOB7Owc7nK5wBi7lzEGzkWRb7jhhuvee28xnE7nrwD8o41ERGl2dk4RAGRmZkySlpHThra0ZGfnlPvzebDJzMxIh9hNsUXlM31eLz/3oI2Xc9qkQLABOON0XuA8cWJTTVU1FIPPsf6XCnZW+ZDnK0EQoUDA/AbWrl07EMAUY2fJOce0adOYFA8wjPK6AVCdTqe/YykGgK1du7Y2KytrndPpPGeaokePHhg3bhwDMA3ACATPH+KvaAhYc7bDt1p9ayFf4kH/TP+tnhYARERE4Gc/+zkA/FEKsmD7d6jZ2Tl1BmHzomzLAbJzdRrFQVOfB5vs7Bw7hD9Ni8pn+hwQsRTq0cYOrVZwrgfgEG4NDGDMj5uBTBAEQXQuC8RVABLN1ofBgwfz/Px8AHAA2AHhtFfZzIe1HvCnNDc3d/WkSZP+dOGFFx4xTmUsXbqUWSwW7na77wLwg8wvYFaI7OycwdK64RcfffQRNm/ehMJC4USdmpqKMWPGYurUqTALEG/ccsstWL16VcSJEyf+BrHmv76Nr4NZEEsbF0E4WPr7+QIAi4NUzp8AmCP/vhdAbwDvNLN85s8XAtglr5c2pcLDY7mFq2CsWReqorT/Hnh5eVsCauFLSxs1WP55VKbv8PN3g+SfenyFehCd7jy3Ih/9unB0pnZq7XVvLm9L0wvkk2i0sSPinGP69OnswIEDugDIh3DW+wYiRLXbZrM1p9E1ABUOh+O7r7766qdut9tjHMkvW7aMh4eHA2JNfzcEOCqiorBSALlNfe/UqVOYO/cJLFz4Dg4cOACn06k5nU7ngQMHHAsXvuN48sm5rlOnTjWZX2ZmBquurtY7zcuCbIXwlnZfALdC+JX0bsbni4NYTmPaKQBuaUH5vH2eiHaYGdA87jiut30Td4LH06C3Y2JiHqCujSAa7SDzqRWCT0A6JbvdHssYG2t+4E2aNInLUXaNFA+b5GiwBs1fLaE7u50+dOjQqurq6mLjh1FRURg5cqTesSQHukOYMmXKmczMjMyVKz+eU1R07AVduJh56aUXIS0uer0PQ0SD+xrA1/v379/2yiuvHDP/Tk8rMzOD/eY3TwMAr6qqAoRjoz5V3pa2a4scoV+Fhnj/zfk82KhSGLS0fPrnV0sx0ebRFfrZwhRVnvfG9ANjDHqodwB45ZVX/tMJn0X58tVHvvzlgHzpv2MAzfF0wvPcUhExWr7C0eCT3BnaKdDXfYvSC4iAkLtpphg71KqqKnz99df6v0cgtqM9CBGqtaVzzRyA85tvvjlUVVX1pXEKQFVVJCYmAmJd/00wxJAIEAyA9a233to9e/bs5MLCwgHmKYiPPvrIKB5KAHwLIAdi5ckC+Xprz57dy9avX7/jnIpxru+Twffs2aPX9bQUXSraZ2mlVY7OY1v4eaiXT/88Dm0YRwQAHhk8iJ3UtGF6pm4uTrmmaVpTFoisrCz9HwpPTBCNs5GaILijzIDDOcePf/xjJqcoNABfAdgPERe+tY5qHECd2+3O5pxPNy8ZlR39QIg4CgH1g5B1qQBwKDY2do/5w82bNxktD5shVpxsgYjDr8e+jwKwfc+e3Z7rrrvuEuPv33jjTX7ffffqdTwuFehhNN9nJNBWKtaKz0O9fEp71GFSVDhsDBdLEwNq3G6wBl+fc65po/UBAPr06aPZbDbF6XSODJUHSVraqECnN9gwEjOOKn39JAxEpznPrbA6+BIRgw0j7Q7XTo3Q3OueBTK9gI26zHta/OIXv+BOpxMQHu75ELEGArW80vPQQw+9r2maL0ePaNlRB7JT4BCOJUcA2GNjY88TX7rDJIC9UjxsgHDQK5bCo0L+vaug4MgH5t8nJJzdF8cD4AsAyyD8LgoQpKWpQeAnHTTtNuUTp1uJYeysADhSX+9hPq5XRVFQW3s2XhlSUlLQs2dPfbM5giCIjmuBqK2tZZGR5+7r8/bbbzPZ4RVLAVHuYxRt3hvDr8783XffvYr5XiOpz3cFelTpkfXYyRhrrKCbpeXhKM4PD+0BUHPJJcOLGvm9ChHY6QvZfnXoOObqOWhYKUH4YLTNMr67RY3S/99WXaupjHn127FarTh58iRiYmKgqip69+5tGTx4MC8qKuoLMf0SSjvT6rtHHvR2fzeCPhg4anp/sGlktJOuni5xnlvKzgCN1EOlnY6F8kUQlHlfxhgWLVrEpaiwQMR/OG86QdM0N+f8WG1tbcnp06f5yZMncffddzM539toQ3fr1m2yoijhjXTAwTJLe6QoKDZ/kJp61lcvX554Xx0/nznzzv7mN8vKym6cMvsAACAASURBVIyi6pjMowYNURNDFS0zM+P6NrsjMzN8CtCOwhVWy39UfTkm58irrNJUH3o4LCwMx44dO8cP4rHHHtP38RhKfRlBEB3WAiGpM/4TGxuL3r1749ChQ/qSSs38sM/MzDwBYMxll1326PHjx5/lnMclJCTwiooKTabndd4/KytLYYxdeV4vprXZIJ1zzssZYynGN8eMGQu5bDUKTaw0CQsLu8383n333atbbYzRETtCB+kBcDQzM+P/ZWfnJAZZPBitG5oUpu6OdNO9f8nF110cGTEI0tpW7HKj0FEfBh9WLcYYrrvuOlZZWcktFgsURcGUKVMwbNiw8F27dl0MsTQ6VNBHWrtbKPC4j/SI0ILOc9u0U5PjddPR3++HjgVi+vTppS6Xa7tx+iEsLAyTJk2CHCWl+ig8AxC7ffv2/adPn95YUlJyvKysrEzTtOMA/gexkoF76Xy7KYpyuXEGo6amBps2bQr6qDQn5+Ox2dk5OxRFGW6eQZk6dSoGDx4MiKWBPsnOzrkSYtOtczqJ7OwcDoANGzasracrtMzMjPHy768zMzPMznlcho/29rm+n8RpAJ9kZmb0APAigPcC/fIiHsohnKLOZGZmXNfK8rcJv7pwcNg1sVFPG6+cAodDK3A4fDrJut1uXH/99dzhcJwTRGrRokUKgLupLyMIokNbINxu9w82m23yWWWiKEhLS8N7771nqaury4BYzujN6dEthcJWOZqMlNaHnbJTOu/BqijK0zDtuVFRUYGamhp9NLwj0J1CTs7K7gB/l3N+k8EMcd735s59Ei+99OKU/Pz8MRAOkB4v4mGZF5OG/jmXI+31Q4cOnb53796sNujg3ACOZGZm/A4iQqMHYhpItwTVAyj08bkDIj5HPYTD6LuZmRmvQ2yYFmhHVrN4+ArAWgCHAFhbUf42s/RkxkZPSVCUaw3KEe+dPlOLhhDp57WXqqr45JNPXLt27aodN25cjKqqCgCMGDGC//SnPx3/7rvvXgZge3s+SAze7zta8ntz5D3Ds4K2Hg0hgnWe8/K2aNROXtvpWDDSbyS9nU3cj0EREPz06dPZKSkpv7RYLBH6mykpKcjIyMCSJUuuggjaU2PqUDnE6oJCCKfBrbJMbgi/iUI0mPMBAKtXr+7BGJtqdKDknOOee+7Rzf9uAKWyUwvYw4dzrRtEfIlGSUxMxEsv/Q2rVq1cWltb9/jo0aPfSE1NDQcwDMAdZstDI1YK/tBDD0K2y0+lmArWw9QD4JQUPIkAJgPoKTvfA1LgFUNsl+7t81LZ7k4IB1IOsfR0vBR6gZwqM4qHpTK/kzKP1pQ/6A+wF4cOGjYy3PZBuMGKUK1pWHD0uO7L44yOjq6Gj9UVEydOjK+qqnJER0fbADBFUdirr76KL7744q2CgoJRIIiO2dmSSOzqFoiFCxfueuKJJw6pqjpM79stFguuv/56rFmzJqmysvIRAI/jfF8ID0R8iGpZHqMQcJlH8IqiPAWgn/E9h8OBkSNH8q1bt0KmVYCWRbv0PXLMzMjPyvpogaIofq0wuOWWW6MAvC5fXjHuwGlm1apVOHHiBADcABEpUe+kg0U9xFboCwGcgNiUrFp2unp77m7kc7dBOGyS52EPRBS4RARmuoxLi8EBaXnYLIWBS+bf2vIHjb9eNKT/zxNiP49WFdVwMePRfQe5fh9aLBZ7XFzcJfC9PLPfd9999+L48eN/p7+RkJCAb775ZmRaWtrvCgsL/9iBn0V6HAB95NNcr3WiA57nYIacNsViqO/g90N7538gqALiyy+/rJ82bdrw1atXuywWy9l0k5OTUVlZqSQkJJwoKyubJwvCTZ2Cy8cD/JyHx9q1a//AGHvIGDxKRHDMZHJZJYcIWHUagQ8ixd57b/Gzd931k3sURYk0CgCXy9Xojpy+rRoNvzWKibq6OixatFD/2jdSCNkQHFO7AhGRUW/TwwCyIEJvu6UJrQYNkT29fV6Lc0Nta2gIHPY1RCTIQE1luGW6hRDLFy2m67i55S+E7yXGAeH5fqkD7kqIW5NoVbsb399ZXet6r/ikBzLE7kUXXfRUXV3dhkaSipgwYcL/O3r06F0pKSkDjFavjRs3Pj5//vx3/vGPfxylPoro6rRhICeyQAQID4BeFRUVh7t16zbYuFNmbm4uv/HGG1lCQsL2srKyWyHmVXhjYsGMFA9PMMYizdaHsWPHculA6QCQBzH9EfDASytWrKhfsWJFlO6nUFFRgbfeegsHDuSjqKiI6e83w6rBkpOT+aBBgzFr1izExoqIy++88w5kEC59E7JYBGezJzU7O8fdlW+AzMyMcVLAlshrJqAsvHTY+Gmx0WujVSXSfLH/9nAhnBrXpy9e27hxY0FxcXGTlpri4uJfJCQkbIyKijr73QEDBsT9/ve/LxwwYED0o48+WkMPbKIjnucgpT8RbRxPoaNF7GxpeQMZB4IDqN60adO88vLyKqNpXhcRZWVll40ePXpdr169+vg7Il29enWPtWvXvsQYe9wsHlwuFzZs2LDVsPriMIB98OF8GYD6uQBcWllZcWbVqlU1d9/9c3z++WcoKioCAPeHH36ouVyuJhNyuVxYvnw5APCioiJ8/vln/O67f+7Kzs7mRUVFf7Xbz276WQxhXj8j8w64gKBHIh6CmCZKklaUgPDXoRd22zxqxDOZcdGfR5nEAxQF846fdHxcckY3W1UCWPDhhx9a/XuYpP2voKDgLfP0V3x8PL//gQeqt2zf/uJjTz8VTqeWIDCRmqBjWCA4gPrXXnttTXFx8dBp06bd17NnT5tZRDgcDmRmZhbefffdv37nnXf+7i2hrKwsRS7VfJoxNhVAP/OeFy6XC3a7vWz+/Pn6krxqiLn3/RCm7WCYpF0Ajs+ZM+ehysrKHwPIkPUuA1CyePG7rpyc7B4TJkzofe+993kVZ2+88QY++2yjvmIEEGb0Yk3TSt95523re+8tniXfYxCOgt9B7IsRlFDWmZkZVwK4B8AEAN3RDrtStiMagDHSwsMhHFZPtfbaWTRixC/GRIX9Ls6i9LfKhFnDjYB3T57GY/mHjB38vwHsYYz5vSnZ8OHD7//uu++SLr/88lsMbzOrzYYhw4bPfezp//vpFWlXvfbT6Zlt7RcRqAiF5PsQ2gQ6EmWg0jfno1seHJ2knVobsVN/FO1oory7/DlPge4sPABKsrKylldWVqb+7Gc/m5yYmKgapzMiIiKQm5vLnU4nxo8f/6zb7bZHRUWtj42NXWOxWBIZY1M45z9ijF0BoIe3cNUulwu5ublYsGBBgqGxvwWwDWKvCkeQHkAagMrKysodAPpDePJHyYtjFwBHVVXVkFWrVo249977LvduUVllbKtKaWH4XlpOwl0u1zCIzcBqIPwf9kDsYBqMVQIeKU62QDhqRsmX0kUeggrEsuHBELE79kI4qzZLQFyTkqo80K1bdw9TxqTa1AWpYZZki9zYwgPD7liM4cuqajyw76Dx4swD8GRzC/7xxx+zl19+edozzzzz1ZAhQ0YyJrbicjOAKwrCo2N7X3tLxnNf7Cx4Yu+OnU9xTc15780Fpz/fuLpLT1kRBBGaFghdXdUCOLR+/fplLpcrdtasWWONIkIXEmFhYUhOTo7hnN+madp0t9vt0jQNqqraGGPwtc2FbnkwiAcnxBr4zXK0XoLgetS7ILz4vzK8t0eKCDfECpHDAC5vIp39EPNZW6RQKJDn4zsAF8u2/Erm5QpWZbKzc4515RsgMzNjlxQNVS29bmbFxV3W02rLiVGVPpEqg1MDFAVwccDCRKIWRcGiE6drHsg/GOVoCEm9H8CNLclzypQpHIArPj4+fcKECf+7/fbbLwYDPODwgMGjcdTXMyT27hsbE5P8r/Kyyhenz/zFnZ9vbFCwQSLQEQoZiFAk0Oc50Ol31nZqbcRO5md5DxkGzW0mIM5aIQDkff755+GapimzZs26ulevXqoxip5RTKiqylRVbXT+mXMOh8OBDRs2bDVMW+ji4VP5OgCxtj+YFxuHmC7ZbRArZ6TFQI/IeBzAc02ko2+WtQ9iu+8aeXKL5UjYAmFOr0bwYhSQD4QQD99BTH8db4mICFfUBJuipAAMHi4ScANQOOBkopF/d/io+/mCwgjDzyohfC9KW1P4f/7zn2f++c9/jgJQV+1wcB4WBjcHPB7AowFuFwfnKqJiYmL27ts5CcAqOuUEQYSiBULvYOsh5p42f/HFF+zo0aO16enp48aOHRvZo0cPNGZh8CUcMjMz2ZgxY/jmzZvN4mE9xFr+nQie74M3kVQuR636nhV6J++WVpim+FZaGHQHSc1g4ahCgwU8qPUx+EBcg67pA9FXiredLRVUGtjZE+XhgMbE0aIwbKmq1p4/VKhsLi9naJga2i/Fw5EA1aMOQP/bp03/7L5fPnrNNTfcoHncTPG4ODQ3g8fjhqpase3bTY8BuBPANABfBlFgezs2C3+DC7U0gh4RGue5kfMZkAiLIXA9BLqdgv37ZpUzWJ2FHkK4EMCmgoIC/Pvf/65es2bNmDFjxiQuWbJEXbZsGY+KioKqen9m19TUoKKiAvfccw8bOXIkZ4zxzZs36xWrhfA5+NQgHoK6lt+HiPD4qHt9ZmZGNIBxEAGPvFEmBY/ZOVJD223d7ZFC70sAyRDxCKLRdXwgIOvcD0CafGg1ewWPBg6ucWgKhwYFFjAUO92Yfeig67OyMqtTbPKmGixPd0nrVSA5vHbN6smffbbhpavHT5z9l/lvolvPJNTWcrg9GhTmgiZWbfSC8Pn4EgRBECFmgfAmIr4A4D569GjdkiVLLrVYLKWzZs1yjxw5Uu3Zs+d5pghN07Bp0yZUV1cDgB5hUpPq8TTEVMVmKSDaQzz4W383gJUQnv4RhtHiZoPVoT3n9jzSAvK57OAq5Ijc2oXuAS4tEOVooQ+ER9OYm2vMqbH6w/U1tpVnSqqXnTgeYWrHUgB/A/Dn5tyThphsflki6mrr5nyau+Zg2uALHp96+8973HbXw9buF1ygxHVLhMejBWoUE8pQREuisevhADVJxxAQZhHhkp3VIbfbfWlVVVX/zz77rKcc8YbDu/lY3yujTo7YiyB8BrZB7JtxEG03bdGSupdJgQM0LLupl++VtaGloTGcaNgnIh9AHLqeb4R+bRa0REScdjkLNKb8NOt0sTX7ZPECADGmrywA8GpTDy+Xy+UoLy9/vqSkJLpnz55/fPzxxwdUV1cfqKmpaW7n9wqAFR8tX/jwR8sXPtm3/2AMHDLcdfTwfhVdy7pEEEQQYW2Yjw1ivf0FAAYBGAKxFDIJYu49ytRx6b4U5dLqcBRi7ng/xNxxiRQWnhBtWxVAghzRJxjqpu/9cUQePSFUXgu6rmOlR4qH1pyPqyB8csLltbsWwC/Rsih4TpMFww3gMjR4c/tLPIDXANwCsWRVBfBzAIta2V4DfYzoAjXyH9jKESNZIAJDqJ/n5l4PBzpoO4VkedvKYU63JJRCrCo4LkfhPSBiKfSSDzoLzt1PoRZip8XTcoRYIgWFAw2bN4Vyh1QG4RCpBqGzCkZ5PSBawxkA/wHwA8T29a1ZYbHUdH+6IaxtzaUcwnEyDsDNAK6DWGZMEATRISwQ5jyZ7FStEKb9KHk0WyBcEPPTdWjYcKu9/QYIoqn7KRDXp+pD5LUWRZavtWXUp+T6mN4PlLe7OX1/I+/VB7gcXZ1QPc8Isesh2O0UkuVtjyV7+sNLdzJ0QKyJV5r4LokGItQJ5DUaLGuQRqeJIIiOaoEgCIIgiK7Qp/LOXF7yyCYIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIoktCqzAIgiAIIjT7WN7O6TcKrcIgCIIgCKLN1RFBEF2QvLwtAV3fnpY2So/Bf1Sm7/Dzd4Pkn/p+I/WtKa+/6dF57VjntRXl1vN3tGe76fUPQj6tut7JAkEQBEEQ5wqC/M4u7mSardpcjAQEQRChQL589cH58fkb44B86b/T99ppKYFOj85raJzXloqI0fIVLl/t0m7BsrQYRMRV8hWGZuxHYmnPKysjI0ONjY1N1DTtbDkURXFXVlaeysnJoZ0hCYIgiPZkI4CJVM8QFBCRkZGJHo8nC0CypmkqALhcrpP5+fn3Q2z5fRIdZItpu90+H8Ac09sL0tPTn0TDxmEkiqi9OyVpaaMCnd5gw0jMOFry9ZOwJtIbZBjZtjo9Oq+hfV5bMRr31bkObk4+gW63QKfvRz0PyiMPWQGhKIrKOU8C0EdRxGyKw+HodeTIkZUACgHcDuFEErIbktjt9sbKNsdut88BgPT09GQAZQCc1LFRexMEQXR0giogMjIyWE5OTrM6f865qmlabykaugE4AcBl/M6Pf/zjmCVLllSFWEe2ID09vRLAUFluZrfbd+ijZLvdXkQdG7V3FyCzOSMYA7r391HT+4NNI9GdLSzXsQCnR+c1tM9rS9nZEktIENvtWIDT1/1IdgSinkFzoszIyFAiIyMX3nnnnRnw4fzidrsZ59yXY0wEgGQANuPv77zzzmmKovwwc+bMawHEtFNnNt/Ukb0gO6rrAVwky6Wmp6ePSE9P3wpggeG3vwEwAkBPAFZ6LlF7EwRBkAWiQTxYIiMjFzHGZjDGZgwePPir/Pz8VwFke1FIvgSEFUA8AFV/46677poDYD4AuFyuDy644ALt+PHjPwPwCdp2mkM3kz8N4EoAP7Lb7e8C+DWAVPmdPQAeS09Pvyk9Pf1CAN/Z7fYr5G9VAOsBfAngNI2Mqb07EfpIaHczR1zw8f2DASpXfYDTo/NK57Ut2i3Q6Qd0JUvALRBSPCyW4kEBYBs5cuSEpKSkZRA+DUozymbVK3znnXc+oYsHALBarT1HjRrVq3fv3osB3Iw2WpJqGg1fCWCo3W4/BGAegH6yHAqAYQDW2e12D4D9AL41pOEBcB2A/mYLC0HtTRAE0SUtEJGRkX9njN0uxQMAQFVVXHXVVRa73f5uTU1NPYCVEJ7yfnHrrbeGA8jgnIMx8exnjCE6OhppaWk9N27c+EZ1dfU9AOzNSbeVo+EXAFxvt9tfl52ZL56w2+03yJHx7+x2+x9lGusBXAzgCDrQapN2tD5Qe4cwBq/uHS35va/Ie0EYsXE6W53vvOblbdE6absdC0b6IWmBmDFjxnDG2EyjeACA+vp67Nq1CzU1NTYA/4WYt/Z7FLhy5UqHw+G43ePxfMN5w3Wni4hBgwb1BvA6hENdW40uhwKIhjCjN8UrAC6D8OvQiQcwEkAK2nk1TAeB2psgCG+dKYnCzmCBUFV1NoAexvecTid++OEH7N+/HxCrKT4BUItmOrRlZWWVDBw48KHhw4d/FBUV1Ve3RCiKgn79+uHAgQN9qqurfwXgEQiP+2BfVN1kPYb48d2LAHQHYFw5UgWgF4DYxoRcE8sWwTmv5ZxXcM53OZ3O3Oeff/71LVu21MsRNvc3HV+kp6dHwhBXYfny5f1jYmJeAHAlY6y37KTdnPNaTdOKXC7Xp8uXL3928eLFlfJ3Wkdqb50PP/wwNTo6+nkAY2Q9wwF4ZD2Pud3utR988MELH3zwQZW3egaovTW73a7J93XvaDeCb2VrD/S4AM1ah0507fMaTPFgirVQ357tlpY2anAohtcOmAVi5syZAwFM0Tt22bnh2LFjungAgDMACmRnoHo8Hn+tBQwAO3jwYO2ePXvWeTyecx6gERERSE1NZQCmQXjct4U/BANQ14zvx0GsBNCpRsP8fYutJoyxSEVRklRVvS4iIuJvc+fOXRkREdEXcmVCAOp5NYDhALrn5ub+ITY2djdj7MeMsQEAImXZrYyxOFVVLw4PD39k5syZR1577bU5sgzWAFmF2qy9c3NzfxMTE7OfMfZTQz0VQz2HhYWFPfGTn/ykcP78+fcHuJ56eyeYBP7F8pUQoPNKEIR/4iFUyjS4M1sgrgKQaHzD5XJh3759+r8OiPmaYwAq0bw5aC5HXaWHDh1a1b9//+u7d+/ez+gPkZKSgj179nTnnN8F4AeZX7BHLx6IgFf9mvjeHgCDTA/+Zs3BSx+Ai2VHxvW6xcXFWVNSUsInT56cfM0111wYHx8/cdasWX9YsGDBvwDsBVBuHLH6SqcR7gew+y9/+YsNwG8AMIfDsWfHjh1fLF++/Mzu3btjrFZr96FDh/acOHFi8ujRo1NjY2Oj+/fv/7eHH37Y+tprry0DcCpA5yPo7Z2bm/sTAH+S9dy9bdu2jR9++GH5vn374iwWS/cLL7yw+4QJE5LHjRvXLzY2NnrQoEHz7r333rA333wzS9azPhDtDeBjaUnTmSKPqyHWqnvogUvQeW2T8k5E0/EYgl2OYzLdiRARI1truQktCwTEhiMWo/XhxIkTKC0t1QVAPoDPAXwD4cTmVlW1OR2KBqDC7XZ/d+zYsTc1TfMYRuGIiYmB1WoFgHRp4WgrX4i/+/GdxwKQj3EEeva8VVRUuHbt2lX90ksv7V+2bNleABg+fPhk2Q5DDFaCRtNpimHDhv2CMcbKy8vXZmRk/OOZZ55Rt2/ffrHL5Uqtra2N/O6776pffvnlfXfcccf6oqKiSkVR1NGjRz8FYAKE30FYR2hvxtgfGWOsrKxsZUZGxqvPPvts+M6dO4e7XK7Uurq6yO3bt9fOmzcvf8aMGeuLiooqFEVRx48f/1tDPW3+nLcW3J+tSYcgiJaLBypTMC0Qd911VyznfOw5vb2m4dixs6KtRoqHTRCxxGvQ/HlcDuFDcbq8vHyV0+l8KCIiIln/0Gq1IikpCUeOHEmBCEB1Cm0wV5yenh5ht9uXApjh4yt/S09PXwdhfm/NqFGRwmutHIEa5+RUAGGbN28eeOedd/6tV69eMRBTOcUQkTwdfqbja9RfbrFYngGAuXPnrgQwHsKX4DDEksmTMg/GOY9+//33C+fOnftIQkJCPIBrIHwXqmR5Qrq9OecpjDHMnTt3TWP11DQtetGiRYd/85vf/KqJeraovSG81o3lDzOkF8rLUAMVsZB8H+i8tkd5zeXWOzFHO7eb/v/X8tjSyJtNRaJsewGhaZqFMZZi9H9wOp1GAXEEwFbZiFWt6Eg5AGdRUdEhp9P5ZXh4+O1GZ8qoqChAOPXdJB/W7ja4YLX09PTP7Xb7ZngPbLROlqNCdiQtzkd2LLsgAiLVmS4KS/fu3fcC+JvVatUgnP4uhIiHcNzPdHx2aowxNwDLsGHDJhYWFsYA+B7ABikIK9AQbjxs/fr1W9evX/8pgEkQsRculu1R3AHa2w3AMmTIkAlHjx6Nb6yen3322dbPPvvsM1M995rq2aL2luWgDZ0IgghZgrKcjXOOqqoqyCWXGoCv5AiuDK2fu+UA6jwez5ec8+nmJaOyMx0oH75t4QfhBnAyPT19qOxkwiEc+AZBxLuokx3PTgBbAExtRV4eWac6Odo9p97/93//dwsAlJaW7oeYP+8GIArnm7wbS8eXSNylqurIWbNm3WK1Wvd9/PHHB2RneUp2qno766PwGplvNYTPC+8g7b0dwI8efPDBDIvFsic3NzcQ9Wx2e3dgAh2xMNDWFgoi1jnPa6DLG6rt5jCl2zkEBOecGS0Qp06dgsfjgXxo5stRWaCWV3qqqqrscXFxL+Dctf460bLjrGyDNuSGDgsyz95ocODzyLpvRRA27lm6dGlEdHR0KoApFovl/wHA6tWrsyHiIPBA3TiHDx/+ed++fb+IiYlJmD179ohZs2bN45zvB/C1y+XKffXVV+2bNm1ySsHoBFAC4e9yRHb6xR2hvV0u10zG2NaYmJiExx577IqHH354nsfj2Qtgk9vtzp03b97GL774orF6nqC+hiAIskD4/9Bl0oHxLDExZ/e5KpYCotyH9YGbrRf+dCLdu3ePP0exnEu4fLXFaIPLjqMUwtx9QgoYfdSvydHpydYIGrvdrs+lZTYi4lxbt27989KlS52y7sVylKw1Jx2d9PT0KHnO3LNnzz4wbNiwmx566KG3U1NTLwwPD4+E8LMYERER8eAzzzzj1jTtiMvl+vJ///vfUy+//HIJxL4TZ2QbeTpCe996662Hhw4deuPs2bPf6tu370VhYWGRAK6Qr0d/+9vfujVNO+J2uzdu2LDhmX/84x+ljdWzpe2Njhvrgfs4Ngt/1/cbvMl3Ar4jHwY6vS5ISJ7XRn4XkDn+AJz/Nm23DmuBOMc2xRi6d+8Oi8UCt9ttkQ9Xhxex4AZwzOVyRbpcru6cc1ZbW6uLiEYbLCIiYjJjLNzHxyra3tnMDTFFU4nz1+l7YArsFGjKy8vzn3/++X/t2LGjG4BL0DDv3prNo66S6RQAqNq1a9fBOXPmPK4oyg1Tp06dMGrUqF59+vSJjI+Pj7RarTZVVQeqqjrw2muvveOiiy76+7333vsShIk/GB1i0Np77969hx555JEnVVW9YfLkyeN+9KMf9e7Xr1+UuZ433HDDTy+++OI/33///fMM9WzNOTa2dzmNbwiC6PQWCMk5zmFhYWGIjo5GeXm5vqRSMz9ci4qKTnPOf3Hw4MEbq6qqngUQp2ma4nA4NDTiRZ+RkaFAbKx0DprWroM2fbpAQ4OjXcBIT09fA+Gkd1wKMk+/fv2irr322gtuvvnmC+Pj4wdnZmY+uWPHjr1yVP4tgG1ypO5pLJ1GsjXGJNgDMXWwXdM014oVK06sWLHiQgg/C2taWlrCzTff3OeSSy5JjI6ODk9JSXn6ySefVF588cX/SEuII8AiIpjtXQFgu8fjca1cufLEypUrz9bz8ssvj7/55ptTLr/88t7R0dHhqampv3/ssccsr7zyytuGevIAtHc1PZ5ahK/Ih4FOj1aJdOzz2tJ8D3S2hm1NxM2ACIgPP/ywdMaMGdsZY8n6rIKqqujfvz+2bdsWAeEp/40UEmdvvM2bN+vz1fshgmNcCeG7UAMgD2J++bwbNTw8vJuiKJebwWbtdwAAC3lJREFUV30cPXoUXenmLigoqH3rrbcObdq0qeqFF14YNXbs2N433nhjZW5u7v8gHAgL0fLlR946bLe0aGyFMOklQ8Q+SMrLy+udl5d3mDEWt2DBgjGDBg3qNnLkyIflDbdZjqrrOkjT+qzntm3bem/btq1AUZS4V1999eoLL7yw++jRo38J4QOxWR5rQRAE0bHEQ/tZIDRN+0FV1cn6/4qi4IILLsCOHTssbrc7A0COD3XjlkJhq+zsImVHsxM+zO+KojwN054b9fX1cLlckN/f0QlFhFt2Zno8AT1KoW3fvn0Jubm5t9922223TJ8+PSk3NzdanltvTpTmdBpTnHpMgsLc3NwKxljYwYMHL3v44YfzpTg5LkfMsfIVzzlPnD9//p5XX331yZiYmGiI+AgOiKmGolBv5NzcXAdjLOzAgQPDZs+efdhXPTVNS5w/f/7u+fPnP+WlnrWtbW/5OzWEHzyDfIzI6oOcfkik14k7FDqvXaDdfGCMuOlX/xkoAcFramqyY2Njf6mq6tlVETExMRgyZAh27dp1FYAkaVnwmEa1TvnAXCdFhEU+PM/I9+uNlZkxY0YPxthUowMl5xwlJSVwOp36A7sU5y656wz4iiegAohctGjRrsmTJ49JTU1NGDFixIjvv//+gLwYak1t3ty4BLpT30kAqXFxcX8A8EfZqZbK35+B3CsCQORFF110GsCTMlpoIsSKkF0dQUBIi1jf2NjYZwH8pbF6Dh06tBjAU6Z67jbVs6Xt3Rk3zCIIIjRpUXTLgFkgvv/++11jxow5pCjKMPM0Rn5+fpLT6XwEwOM43xfCA+EMVy3Lo09zuKUI8JisD0/BtBeC2+1GQUGB/m8ZhLm8JdEuQx1v8QQYgNr6+vqaM2fOLImMjHzo1ltvHfT9999fLEe8p3C+Sb3ZcQk8Hs86i8Vyb3x8/C0zZsxwL1269E2IaZIyQzs7AdTdd999vwWA6urqE/I89oLYcKojsBLAnG7duk2dNm2alpWV9bavej744IP+1rMzxoHQRyrGDX76yuvN7xFMI5yWx+vkMdrP3+m+I+ZyBDq9zoq38woELpKkOX1/g6X5imjZ0vTQwnw7Wrv5W78WRdwMmIA4fvx4fUVFxcJu3bq9oKrq2XRjY2Mxfvx4tmnTpukOh2OeNMFwkxXCJR/A51k2jP/MnDnzD4yxh4zBozjnKC0txYkTJ/Tv75cPCwe6hi+EvnSwNj8//58pKSkPpKWlJUVFRfWpqakZAOFs1Go/iJdffvnXjz322K02m63X3XffPf2WW265qri4+G1VVdcUFBTsvvrqqwfExsZeoyjKfYyxizRNcy9fvnwJhANhhxlR79u37/EBAwbcbrPZet177713ZGZmjikqKvqP1WrNLSgo2Ddu3Lh+MTExYxRFeYQxdhHn3P3BBx+8B7HypatbDj4NYFqVAU6zMghlJIguTSBXYXjWrVu3aOrUqfdFREQMNu6UmZiYiLFjx/betGnTcofDcatUZbwxsWBGiocnGGORZuuDacfPPAhTc6CCVnUUtL/+9a/5o0aN+l9sbOw1t956a/8lS5YMhoisWKp/qTlxCQAgPT09EoC2YcMGV0JCwrQ77rgjKz4+vldiYmJyYmLiMwCeGTZsmNlaUff111+/uWLFCn0pbRHEyoaQ55e//KUzIyNj6p133pkVHx/fu1evXim9evV6DsBzl1xyyXn13LRp079ycnKsvurZ0vY2C2p/0jH9Nti7deojF/Ip6FwE+7wGOv1QuQ47WrsFhEDu6scBVBcWFs5zOBxVxoBQuogYN27cpcnJyesiIyP7wM8YDTNmzOgxc+bMlxhjj5vFg8fjQUFBgXH1xWEA+9C62AcdGXdpaekbAHDDDTf0gVj90gfCMbWlXA1gOID4FStW7JoxY8aMpUuXrjt8+HBFVVWV0+12ewBwt9vtqqurO1VQULDp0Ucf/fNzzz2nQOwGelKKmNMdpRFzcnJ2z5gx48eLFy9ec+jQobP15Jyfrefhw4c/f/jhh1944YUXwkz1PNXK7PX2TkDznSjPnivqBwmCCDaBDrRkAZA6dOjQXw8dOvS+qKioc7Y25pzD7XajpKSkvKSk5I89e/Zc+Omnn54xJ5KRkaHIpZpPM8amAuhn3vPC4/Hg4MGDyMvL09+qBvC+fH0n/w+4BcJut88HMEeO+L4A8BFEvIUmp0zsdru+k9qC9PT0VDla/BfELqW+5sYjAIwBcJ/8/w2I5YJ1Ps5nOIQ5/TYIX5HPIFYAlAD4EYDZENMKp+Df3iROCMfAXAgn1x4ALofYqXKoFCe64x83CFN9ie7XsrxH0YKplHZob/06bm09I2WH3tL2/lgK4nIA1wN42I90jL/dRo83giCCSaAjUXoAlOzdu3d5fX196qWXXjo5KipKNU5nWK1W9O7dO75nz54v19bWPnvzzTfbrVbreqvVusZisSQyxqZwzn/EGLsCQA9v4aq9iId6NAROOoIg+j+kp6c/abfb5xg6954QDln1/uaZnp7+g+wMyuElwJYJTXYY+mYsRmc+b1YgF8TKAX1ZbL3s6LjMb4/8rormz9d7IKaHtkJMiwyF2List2wDi8yvVJ6H3RA+Kfo+KB2hvQNVT905uDXtrRnOeWvSIQiCCHkBweXI7tDhw4eXaZoWO2LEiLFGEaELCYvFgtjY2BjO+W2c8+maprk452CM2Rhj8LXNhRfx4IQwHW+WlocSeHfIDBQagAUA5tjt9lEAvk5PT78AYtWH12iLdrv9J/ooWv52JIS3/j4I567GOgS37KQ+lv8fbaJ+euf3FUQUNYdsk3qI1SkrIMzj/k5f6bEJdL8VfYltjXxvK0RshDCZplteA2Wyg61G65bUtnV7I0D11M9ba9pbtzL5e96McSQIgiCCCgtSmuEQ8+/j+vTp87PLL7/86qioKFVRWu5yoU9/FBQU4NtvvzWLh/UA7BABpCoQXP8HFUAvu91ujmmwID09PRdi8yoXAM3Ukemj4bkAJstObAmANRDz554m8rQYOiaPH+dAlS+9M+Sy87Gg+XPrHi/5Mpmet31HNPnyBGC03B7tjQDVU21le+vWkuak40HbOFESBEECIigoEObmVABj4+Lipg8cOHBcampqZEREBBqzMPgSDqWlpdi7dy+OHTvmSzzshO8dPwPdZhEQO1H+xG63P+TPj9LT0++FCNU9WI6G8wAshthRsg4UW5/amyAIggTE+SICQHpsbOyYPn36JCYnJysxMTGwWq3wZZVwOp2or69HSUkJCgoK9DgPQMM0yS6INd1tKR6MI8ueEM6N1wK40G637zGPfuUoeQfEVtCDAMRJC8l+WfbN6LorRqi9CYIgSEA0KSL6QGxVPAnApYyxPlarNSYpKUmNioo6rwyapuHo0aNwOp36/haAMOfWyw5A36Dp03YQDzpWAN0BDABwEYA0Q6dVhYYIdtFyBFwhy50H4RB3CGKO3UWXIbU3QRAECQjvIiIcYi+MYRAObZcC6I8Gj/pweJ/f1ffKqINwViuCcITbBuHUdhDB93loamQcBuHc1ld2bCMhQhorBuFzUpZ3D4RjXZkUQzQSpvYmCIIgAdFEPjYIL/YL5MhxiBQRSXJkGWUSEVw+9Mul1eEohCl6v+wUSqSwCIVOwdixJct6Gjs0fSdK6siovQmCIEhAtCAvRQqJaADdIIL19JQjyHg0bKaldwS1cjR5GsL8XCIFhQPnBvQJpY7Nm7c8ecZTexMEQZCACECe+jJDqxxJRsmj2QLhgliHX4eGDbf8CQREEARBEEQnExDexIRunTDD5YtEA0EQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQRCfk/wOZkXvgwwmgfAAAAABJRU5ErkJggg==\";\njt.Images.urls.muteIcon = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAoCAYAAAC4h3lxAAAEwklEQVRYw+2YbWhbZRTH/+fJTdLbuHWsVTc6cK2DtDcJK2GsbAzpUNEPgjAUZYgyFXUZ8wVxm+ua2bjCuo19UDZQRFQCgkw3/CgMi9M6i9Q1uUntRsigww6duOFi3tr790smMaTvXbLq/t+S53Dv+T3nPOc55wK39R9UOp22DQ4OLq/Eu9RCP9A0zVXJZLK7pqbm8UUHEI/H7xeRd0juAVBXCQBtIR6SSCRqM5nMswACAFoAsFLpqi1AyhjZbDYAYBuAWhEByYoBzDmFOjs7VTQa3SIi75IMiEhtNQrGnCJw7ty5ervd/hKA7SLSWM2KN2uAWCy2QUQCJJ8UEQ1Vllamhkvxb13XCQD9/f32ZcuWPWVZ1g4AfhGRub50cHDwDpfLNe52uzMzsR8ZGVnhdrsvl1v7lxORSKTJZrO9CGApAJC8PD4+fkzTtOsishfAKyIybXkkaYnIm4ZhHCpz6O9USnWRTGWz2R6/3399mog/TPIZACe8Xu/nU0ZA07R6AM+RrAcAEbmgadqHTqeTuVzuoZk4P93ZAdBFcgeACYfDwYGBgZ7169enJqlwD4pIUEQ2kPTE43HLMIyT01YhKagkQjIf503TdDocjh1KqYCIKBGxi8jrLpdrT39/f+0kl2IQwIaCTz6SwVgs5r+prcRk8nq9WcuyRi3L+qVooxwA3qirq9vd19enF6VNB8mgiGwqSksCMEn+uuA38SwgPopGoxrJ/TfKr4g4Se5qaGiwTNM8SLK9sPP3FTuvlPqUZMjj8VyqGgAArlmz5oNkMqkKECsLEDUisgvAKgD3Athc7DzJz0Qk1NraeuGm9EKzka7rTKfT71+8eFFZlrVfRO4uLNWS3CYitmLnReQEyVBLS8tIRdrpmUKEw+H3ABwA8FvRmbCV5PxJACGv1xuv2DwwU/X09FjNzc3HAXwMIFeucGma9rZhGGZFB5pZtuFrSbYAcJQp5ffk8/nN6XRa3ZIA0Wh0LYD9IvLIJCZLRWRfIpHY2dnZqW4pgKGhIZ9SKqiUerSkBTlPMlUUheUism/r1q2B0h6tagCmaRqapgVFZEvJ0leWZT1P8gCAP4sgGgB0JRKJ7eUgKgoQiURalFJBEXmsZOdPAwj5fL4zuVzu6MTERG9JJO4Ska5kMvlCaUtTMYBkMulSSj0N4ImSpa+VUt2GYXwHAH6/PyciR0geIpkuglhBcq9pmu1VAWhqakqJyFkAPxXt/DckQ62trWdK+6YrV64cBnCYZKZgOwHgi1Qq9fNUACR5meQYyTERGSv5f17Dusfj+ZJkiGSE5Lci0u3xePrK2XZ0dKSvXbvWC+BIIRLH8vn8gfb29quTthKjo6NDjY2N/4TYsiz6fL5LhcN3FECO5BYRUfOAOBWLxa4CyBqG8f1Uths3bvxrYGDg4JIlS37I5/Nn29rafp9yIpvBQLLSbrcHCsN8/Vwmsqp+Vmlraxtrbm5+i+SrAM5W8vvPgl1kuq5PeL3eMICdJD8BkF9UADdkGMaPmUzmtcLwMbroAABg3bp1f6xevbqX5MskT1cjpeZ9D+i6To/Hc0rTtJ0icrz48lkUADfkdruHnU7nLgC7AZzHYtbw8PADkUhk06KGCIfDNtzW/0B/A2/7MX7SZ6/PAAAAAElFTkSuQmCC\";"
  },
  {
    "path": "src/runtime/standalone/cache.manifest",
    "content": "CACHE MANIFEST\n# Version 5.0.4\n# Stable\n\nCACHE:\nmanifest.webapp\nimages/logo-icon192.png\nimages/logo-icon512.png\n\nNETWORK:\n*\n\n"
  },
  {
    "path": "src/runtime/standalone/index.base.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\" translate=\"no\" class=\"notranslate\" manifest=\"cache.manifest\">\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width = device-width, user-scalable = yes\">\n\n        <meta name=\"google\" content=\"notranslate\">\n\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"data:image/png;base64,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\">\n\n        <meta name=\"mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"theme-color\" content=\"#363636\">\n        <link rel=\"manifest\" href=\"manifest.webapp\">\n\n        <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n        <link rel=\"apple-touch-icon\" sizes=\"512x512\" href=\"images/logo-icon512.png\">\n\n        <meta property=\"og:type\"         content=\"website\">\n        <meta property=\"og:url\"          content=\"https://javatari.org\">\n        <meta property=\"og:title\"        content=\"Javatari - The online Atari 2600 emulator\">\n        <meta property=\"og:description\"  content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta property=\"og:image\"        content=\"https://javatari.org/images/javatari-logo-large.png\">\n\n        <meta name=\"twitter:card\"        content=\"summary\">\n        <meta name=\"twitter:site\"        content=\"@ppeccin\">\n        <meta name=\"twitter:creator\"     content=\"@ppeccin\">\n        <meta name=\"twitter:url\"         content=\"https://javatari.org\">\n        <meta name=\"twitter:title\"       content=\"Javatari - The online Atari 2600 emulator\">\n        <meta name=\"twitter:description\" content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta name=\"twitter:image\"       content=\"https://javatari.org/images/javatari-logo-large.png\">\n\n        <script>\n\n            JavatariFullScreenSetup = { apply: function fullScreenSetup() { /* Setup Basic full-screen CSS*/ if (!this.cssApplied) { var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = this.css; document.head.appendChild(style); this.cssApplied = true; } /* Apply Standalone mode full-screen basic styles to html and body immediately if needed*/ document.documentElement.classList.toggle(\"jt-full-screen\", this.shouldStartInFullScreen()); }, shouldStartInFullScreen: function () { return window.Javatari ? Javatari.SCREEN_FULLSCREEN_MODE === 1 || (Javatari.SCREEN_FULLSCREEN_MODE === -1 && this.isBrowserStandaloneMode()) : this.isBrowserStandaloneMode(); }, isBrowserStandaloneMode: function () { return navigator.standalone || window.matchMedia(\"(display-mode: standalone)\").matches; }, css: '' + 'html.jt-full-screen, html.jt-full-screen body {' + '   background: black;' + '}' + 'html.jt-full-screen .jt-full-screen-hidden {' + '   display: none;' + '}' + 'html:not(.jt-full-screen) .jt-full-screen-only {' + '   display: none;' + '}'}; JavatariFullScreenSetup.apply();\n\n            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-31008590-1', 'auto'); ga('send', 'pageview');\n\n            function donate() { alert(\"To support the project, please send Paypal donations to:\\n\\nppeccin@gmail.com\\n\\nOr contact via email. Many thanks!\\n\") }\n\n        </script>\n\n        <style>\n            html, body {\n                position: relative;\n                margin: 0;\n                padding: 0;\n                font: normal 16px sans-serif;\n                color: hsl(0, 0%, 10%);\n                -webkit-user-select: none;\n                -moz-user-select: none;\n                -ms-user-select: none;\n                user-select: none;\n                -webkit-touch-callout: none;\n                touch-callout: none;\n                -webkit-tap-highlight-color: transparent;\n                tap-highlight-color: transparent;\n                -webkit-text-size-adjust: none;\n                -moz-text-size-adjust: none;\n                text-size-adjust: none;\n            }\n            html {\n                height: 100%;\n                background: hsl(0, 0%, 97%);\n            }\n            body {\n                min-height: 100%;\n                background: hsl(0, 0%, 97%);\n            }\n            .container {\n                max-width: 660px;\n                margin: 0 auto;\n                padding: 0 10px;\n            }\n            @media only screen and (orientation: landscape) and (max-device-width: 767px) {\n                .container { max-width: 75%; }\n            }\n            #topbar {\n                height: 51px;\n                color: hsl(0, 0%, 95%);\n                overflow: hidden;\n                background: hsl(0, 0%, 21%);\n                box-shadow: 0 0 7px hsl(0, 0%, 20%);\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #logo {\n                float: left;\n                width: 182px;\n                height: 32px;\n                margin: 10px 4px 0 0;\n                background-size: 182px 32px;\n                background-repeat: no-repeat;\n            }\n            #desc span {\n                float: right;\n                margin: 23px 10px 0 0;\n                font-size: 15px;\n                line-height: 15px;\n                font-weight: 600;\n            }\n            .social {\n                display: block;\n                float: right;\n                width: 26px;\n                height: 26px;\n                margin: 13px 0 0 8px;\n                background-size: 26px 26px;\n                background-repeat: no-repeat;\n            }\n            @media only screen and (max-width: 440px) {\n                #desc { display: none; }\n            }\n            #javatari {\n                margin-top: 20px;\n                padding: 0 10px;\n                text-align: center;\n            }\n            #javatari-screen {\n                box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\n            }\n            .info {\n                display: none;\n                height: 38px;\n                padding-top: 14px;\n                font-size: 18px;\n                line-height: 25px;\n                text-align: center;\n            }\n            @media only screen and (max-width: 499px) {\n                #info-thin { display: block; }\n            }\n            @media only screen and (min-width: 500px) {\n                #info-wide { display: block; }\n            }\n            #footer-space {\n                margin-top: 24px;\n                height: 76px;\n            }\n            #footer {\n                position: absolute;\n                bottom: 0;\n                left: 0; right: 0;\n                height: 70px;\n                background: hsla(0, 0%, 0%, .15);\n                overflow: hidden;\n                font-size: 14px;\n                line-height: 12px;\n                white-space: nowrap;\n                text-overflow: ellipsis;\n            }\n            #footer .container {\n                padding: 2px 20px 0;\n                box-sizing: border-box;\n            }\n            a {\n                font-weight: 600;\n                text-decoration: none;\n                color: hsl(214, 100%, 43%);\n            }\n            a:hover {\n                color: #0050ba;\n                text-shadow: 0 0 2px hsl(197, 100%, 47%);\n            }\n            .toright {\n                float: right;\n            }\n            #donate {\n                display: block;\n                position: relative;\n                margin: 0 auto;\n                padding: 7px 12px;\n                color: white;\n                font-size: 14px;\n                font-weight: 600;\n                background-color: hsl(0, 66%, 45%);\n                border: none;\n                border-radius: 5px;\n                box-shadow: 1px 1px 4px rgba(0, 0, 0, .55);\n                outline: none;\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #donate:hover {\n                background-color: hsl(0, 90%, 56%);\n                box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, .55);\n            }\n        </style>\n\n    </head>\n\n    <body translate=\"no\" class=\"notranslate\">\n\n        <script>\n        </script>\n\n        <div id=\"topbar\">\n            <div class=\"container\">\n                <a id=\"logo\" style=\"background-image: url('data:image/png;base64,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');\" href=\"https://javatari.org\" title=\"The online Atari 2600 emulator\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAFtElEQVRoQ91a3VEcORBWa55WUtX5IjgcwUEEQASGCIAIDiIwRHA4AkMEhgi8RGCIwFwEZ1eNdp52dPWtNXMaTWv+2MFXpypeGO2oP3X3139D4n+2aG48eZ7vZln2C85Zr9ffjTGPc565NUDOuTer1WrfOXcghNjFHxG94YR3zn0TQgDYIxEtlVIPRIT/vXi9GFBRFAdlWZ4IIU6nSgOARHQnpbxdLBbLqe/B7yYDApD1ev2eiKCRrS3n3DLLsqupwEYDKopiZ71efxwI5MmbVw3Ym+HvfTfggZ0tFovnvr3h81GA8jyHWf3Z4RsPUsq7siyXfc4PspBSwlyPiGi/w9cujDE3Q0ENBmSt/cj5iXPuOxFdSylvxt5mJSS0XpblqXPunIg2jBitG6312RBQgwClwAghbpVSEGIrDOWZ8loIAZKZBKoXEAcGWsmy7Giq4/bdtCecO0ZbvZrqBJTQzJNS6mBbWkmB89oChccE0gkqCQgEQETwm3o55x601nDirZhYn6ZSoJxzZymiYAF5av4SsdmraCYGyYFCKMiybI8jIRZQnuefwzgDn9Fa71SawSFFUZwQ0eNisXjou+kxzz2d7xPRfSUwzrPWPkc+dae1Po7f3QLkU5nP4UYp5WFIAKE5+sAJu76aaope4HdEdCmE2MHZzrkPxpjzgNoRszrlwt4WoFg7oGatdSNPs9beCSHeRf71TUp5qZT6UBQFktRdCAoBnXMbIT3gTbYtpVxCu9baIwTrCkjwzket9V54hrUWAbamdGQTxpjDcE8DUKyd2NSqH+Z5vkxF9zHm1bdXa92QjzO92HoaP4hvQAhxpbWGGTTWzwIEIay1kOd9IFDDgmpAnk3+jnznLccknMn13fbY57AOY0yrnvJp0tfqffBhrfXbyn9rQN6WPwUbH4wxbGnA3NJYeYfsb/luh8kfa63h1/+SQp7n10T0R/UjIrpQSiGvaiyvSbANqtLZVlesWa1W5845EMlmhYxYayj2C+fcHlcCvJJ2KkFbLIYHiFVE9IWzptDkXHjdMcP4m0CA+5qqh+ZQV8xi1RnW2lpeaNMY82vD5MINQognrXXLpLj8bg4Q4TvjABsAQjyrE9dKARsNdakwfHnsZ3OD8VbBklPsIlLKDSNvADEBddBLXglQbU7R5TaCe2Wa/3lAAMH5M6OhTb451uReJeWJNP8XMv3YGjpNDpsjUmglhn5PnHbMbnUoKrkAb60FbdfE1SAFTwzoXtYdF07NcUCbHc2PA9iMIaLtOk0aFVjjPOo1AHHl9qDAOjT1sdY2+H9OUKnyZVDqwySnqbSj1TyZC1QqqDJFaDs5TRRPP618QLbCtcuY8qHR75hU4HX0zLaiLJiaEOJgYHLMF3iJjKFRPEU5FhLVy7Dk2Aaart6ft6JGctxZgnv6joNnstDyl4DxCvrbaHb8NgWUb/hj4IWGf3LgxTRJWjFqUhsrJTToNBhH1sViYv8tujYYS/aNXjjrwf+40iLVaGxoKa7b+7QQR3Fu/5h3cqYmhLhHWzp+d1crGAPdcFbzqJQ67GsmjqyZOs3Zlw8YRjdKfj/92B3cCva+xMWbXlBjOkJhpZnQYguM31fHnUEaqjYxfTo86gQ1tmfH5YwpzXi5OrU6ZODVaL/6w9D9P+YYaRuA/MDrE9O76DXRXkAAkNAUHt0opS5Cv3oJIB+w0Z7ivnnoBQOBBgHqAuU/msDQGB9NPE8B5NOZEz805r4+GQRmFKCKKIQQaEhyk2psQfcSsahVYXZQPX7Tol9v2piwn1Zd0b5wMRpQlRmUZYmOamOcMuSwkXvupZTnYz8VGGxysTDecZHLsR9NjBS+3o5cLsuyy6kT9smAKgl8CwwfTWCYnDLFTnxDc7khl/RiQNUhnqEOos/LWIC+PAg/L0OqtZXJ+tYApW4PDBaQxPNYnxiilXDP7IDGCvTS/f8AAisLcblWsb8AAAAASUVORK5CYII=');\" href=\"https://github.com/ppeccin/javatari.js\" title=\"Project Homepage on GitHub\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEBElEQVRoQ+1Z0VEbMRDVHj+2pJlABSEVhFSAU0GgAuwKgAoIHZgKQioIVBCoIFAB0AGZOfn48W3mOTrP2dbppOOMPYw14y/vrfbtW612VyTe2aJ3hkdsAK07oxuGNgx5PMDM28aYb0KIPfsTRPQshLhj5mut9V2sA1cScgAyGo2OmfmEiLY9Rj8mSTLodrs3Lpk0TY+I6JNS6nvx/wKgLMt28zw/U0oNYr0TIm/1/yoYCflGCHFZ2JOm6R4RgdW+EGKXmb+UmVwAlKbpkIiOiehUSjkM3DBIzIbYQw0rVboQfmBztxBg5gut9Un5gwVAxpg/hfeYeaC1vgyyNkCorDtAvE7kXkrZs2duKusCxGVNzDzUWp/Waa/7P03TPhH9qJML+Z+Zb5VSBy8vL9t5nh8x807B1AwgG59gaH5dSSkH894I2byQMcY8lMMl5ts5B0+yIKLIhu4MUzOA7IHFxq71yMyHTVKpx1FNcU2+Y+a/QoieNykYY2ZCbn5HhKBS6jyGLWMM0urZq6xf/PiJmQ/mHew6Q49CiI++zZn5mYiGUsqLEGBLAORMCLDZBSjYmwCGO0II8dMXim0DSpLka9VlW3WxVp0jH3E4Y1dEdCOlvC0zt1JAsLglAwDwEcBwoRJRr60zFMVQKc0iNX5uy4g29QQDQnoVQhxtbW1ddDqdZ2MMQmi/TWPa0KWUqiyqfRdrETKthUobYKAjGJA9P957qC2jmupB2aO1rnSyK21fCSFQnq/lclXYZUNdabuX5/nvtUTz36hDpRSc7lzOw5Wm6c06JgMgkFLu+KoTJyAUqePx+I6IPqwZU9doG3w2VaY/m8LB1NqACmk4vUMSy9TlOoQfWgWttW+gMiEuaOqTZRkSBXr3VWa/8/J0JyopFMKj0eiEmSflDzNjOFF0iW96tMCOUmo3pFWpC7l1SeFB7ASFHOq5FYfak5QSkYHeq3bVniE75UTl7e1ia3dqKOCrrF0qawHhIzvkAFNvCqquzGkMyCYFzKPRbr9VprtXSqGdiVpBDJU1WraQwlHxLoWxmKw2jzYakAMcBu/TeXOUOx3CrllbjM7GgIwxmLNNnzFiNq2SfS2YoLRd3rx41ymeMtoAUdJROWuL2aeWIVvP7WNqg0llw6cQr03IZihrQu8an7IpIPs6MDnkzDxpca3x0ZkmwqNPSZL0q4aGEXqmovPD+t54PIanljrpwVmxo2Q8rgVVAKHgnCFnjEEThSe/tu+cJwDpdrtoSVoFUgD2niEkgSzL+nmeAyDqqSbN3j0z49H3sslTTCgzQYDmldkuFsDwWItma+F8YbYN7xPRXafTQRu/FCaqgNZmuVgPrVp+A2jVDNTtv2GozkOr/v/dMfQPssXcRMVCr4wAAAAASUVORK5CYII=');\" href=\"https://twitter.com/intent/tweet?source=https%3A%2F%2Fjavatari.org&text=:%20https%3A%2F%2Fjavatari.org&via=ppeccin\" target=\"_blank\" title=\"Tweet\" onclick=\"window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20'  + encodeURIComponent(document.URL)); return false;\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACj0lEQVRoQ+2a0W3bMBCG7/QmkUDTCdoNmkxQZ4IiE7SdoOkEzQZ1N0gnaDeIO0GdCZpMkBYQpTf9BQ1ZkBRRJGVTsA3qwYBN8sjv/hPPEo/pxC524SnL8q1Lv9B90jT9ZZvDCFQUxScAH4jo3GZk5vY1gKWU8vvQvM+A8jw/Z+YfRPR65oX6TvcA4EpKuW4P7ABpGCK6Y+YzX+v76A/AHlLMTfgD+EtEl22oDpBS6s+Myjwy87KqqlXfy2POUUqh174WQlxsf2uAiqK4BvB1H54eswHgX5IkN1mWLafMNQBEAD5KKW+1vQZIKfU79AagYYho4aNIH3oIiIgaldpAfSmnOHB0DDN/nqrM1rABiIQQG5bNR1mWi6qq7vZO0DX4KITYeec0AQG40MrPBgTgm5TyelenmYCSJLlM03Q1GxARXQkhfp4MUJZlL5lZ5w3jBeCs/oeyMHVi5sG22RXa3rSWHKMVfDdFxUMFmpzYDxVocuqIQFPiuj3G8R6KCm2dFjTk9GOAlNK49e6idp7nT0OPN0cJVOeppyGHHCXQ2H/OowRSSt0Q0ZeTUUgppR/i3p8MUJ7nK269U2iDHWvIGfNUUKChkIiJ1TNZRYU8Hfaseww5Tw/GkPN0WAw57QHTKyoXZ8aQc/HSWJ+4y3l6MIacp8PiLhd3uV4MxHvo0O+hzoHXrvHrAhs6D3WOJGsgXcDwxmVxU/oEBroXQmwqXmY71g8JNHisX6v0QESvpihgGxMQqFGno5D+UpfG6FdFL2wL9G0HsLKNMR03msYN1T2Yipf00WAQpWxQHu33ulpstHipbawuldHlZcE2Co/Ft7tqEF1etimF6V+uBYBBjkZ8gXQdgm2ME5DNyCG1/wfy83xTvpURYAAAAABJRU5ErkJggg==');\" href=\"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fjavatari.org&t=\" title=\"Share on Facebook\" target=\"_blank\" onclick=\"window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;\"></a>\n                <div id=\"desc\">\n                    <span>The online Atari 2600 emulator</span>\n                </div>\n            </div>\n        </div>\n\n        <div id=\"keywords\" style=\"display: none;\">\n            Javatari - The online Atari 2600 emulator,\n            Play Atari 2600 games online in your browser,\n            Javascript HTML5 Atari 2600 Emulator,\n            Javatari.js, Javatari.thml, javatari.js, javatari.thml,\n            ROM, ROMS,\n            Touch Screen, Mobile, Tablet, Android, iPhone, iPad, iPod, iOS,\n            App, offline, add to home screen\n        </div>\n\n        <div id=\"javatari\">\n            <div id=\"javatari-screen\"></div>\n        </div>\n\n        <div id=\"info-thin\" class=\"info container\">\n            Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <div id=\"info-wide\" class=\"info container\">\n            Drag & Drop or Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <button id=\"donate\" onclick=\"donate();\">DONATE!</button>\n\n        <div id=\"footer-space\"></div>\n        <div id=\"footer\">\n            <div class=\"container\">\n                <p><span>Created by <a href=\"http://twitter.com/ppeccin\" target=\"_blank\">Paulo A. Peccin</a></span>\n                    <span class=\"toright\">Atari, VCS and the Atari logo are shown here as a tribute.</span></p>\n                <p><span>v5.0.4 &nbsp;<a href=\"https://github.com/ppeccin/javatari.js\" target=\"_blank\">Docs & Project Home</a></span>\n                    <span class=\"toright\">All trademarks are property of their respective owners.</span></p>\n            </div>\n        </div>\n\n    </body>\n\n</html>"
  },
  {
    "path": "src/runtime/standalone/index.part1.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\" translate=\"no\" class=\"notranslate\" manifest=\"cache.manifest\">\n\n    <head lang=\"en\">\n\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width = device-width, user-scalable = yes\">\n\n        <meta name=\"google\" content=\"notranslate\">\n\n        <title>Javatari</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"data:image/png;base64,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\">\n\n        <meta name=\"mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"theme-color\" content=\"#363636\">\n        <link rel=\"manifest\" href=\"manifest.webapp\">\n\n        <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n        <link rel=\"apple-touch-icon\" sizes=\"512x512\" href=\"images/logo-icon512.png\">\n\n        <meta property=\"og:type\"         content=\"website\">\n        <meta property=\"og:url\"          content=\"https://javatari.org\">\n        <meta property=\"og:title\"        content=\"Javatari - The online Atari 2600 emulator\">\n        <meta property=\"og:description\"  content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta property=\"og:image\"        content=\"https://javatari.org/images/javatari-logo-large.png\">\n\n        <meta name=\"twitter:card\"        content=\"summary\">\n        <meta name=\"twitter:site\"        content=\"@ppeccin\">\n        <meta name=\"twitter:creator\"     content=\"@ppeccin\">\n        <meta name=\"twitter:url\"         content=\"https://javatari.org\">\n        <meta name=\"twitter:title\"       content=\"Javatari - The online Atari 2600 emulator\">\n        <meta name=\"twitter:description\" content=\"Play Atari 2600 games in your browser, phone or tablet!\">\n        <meta name=\"twitter:image\"       content=\"https://javatari.org/images/javatari-logo-large.png\">\n\n        <script>\n\n            JavatariFullScreenSetup = { apply: function fullScreenSetup() { /* Setup Basic full-screen CSS*/ if (!this.cssApplied) { var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = this.css; document.head.appendChild(style); this.cssApplied = true; } /* Apply Standalone mode full-screen basic styles to html and body immediately if needed*/ document.documentElement.classList.toggle(\"jt-full-screen\", this.shouldStartInFullScreen()); }, shouldStartInFullScreen: function () { return window.Javatari ? Javatari.SCREEN_FULLSCREEN_MODE === 1 || (Javatari.SCREEN_FULLSCREEN_MODE === -1 && this.isBrowserStandaloneMode()) : this.isBrowserStandaloneMode(); }, isBrowserStandaloneMode: function () { return navigator.standalone || window.matchMedia(\"(display-mode: standalone)\").matches; }, css: '' + 'html.jt-full-screen, html.jt-full-screen body {' + '   background: black;' + '}' + 'html.jt-full-screen .jt-full-screen-hidden {' + '   display: none;' + '}' + 'html:not(.jt-full-screen) .jt-full-screen-only {' + '   display: none;' + '}'}; JavatariFullScreenSetup.apply();\n\n            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-31008590-1', 'auto'); ga('send', 'pageview');\n\n            function donate() { alert(\"To support the project, please send Paypal donations to:\\n\\nppeccin@gmail.com\\n\\nOr contact via email. Many thanks!\\n\") }\n\n        </script>\n\n        <style>\n            html, body {\n                position: relative;\n                margin: 0;\n                padding: 0;\n                font: normal 16px sans-serif;\n                color: hsl(0, 0%, 10%);\n                -webkit-user-select: none;\n                -moz-user-select: none;\n                -ms-user-select: none;\n                user-select: none;\n                -webkit-touch-callout: none;\n                touch-callout: none;\n                -webkit-tap-highlight-color: transparent;\n                tap-highlight-color: transparent;\n                -webkit-text-size-adjust: none;\n                -moz-text-size-adjust: none;\n                text-size-adjust: none;\n            }\n            html {\n                height: 100%;\n                background: hsl(0, 0%, 97%);\n            }\n            body {\n                min-height: 100%;\n                background: hsl(0, 0%, 97%);\n            }\n            .container {\n                max-width: 660px;\n                margin: 0 auto;\n                padding: 0 10px;\n            }\n            @media only screen and (orientation: landscape) and (max-device-width: 767px) {\n                .container { max-width: 75%; }\n            }\n            #topbar {\n                height: 51px;\n                color: hsl(0, 0%, 95%);\n                overflow: hidden;\n                background: hsl(0, 0%, 21%);\n                box-shadow: 0 0 7px hsl(0, 0%, 20%);\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #logo {\n                float: left;\n                width: 182px;\n                height: 32px;\n                margin: 10px 4px 0 0;\n                background-size: 182px 32px;\n                background-repeat: no-repeat;\n            }\n            #desc span {\n                float: right;\n                margin: 23px 10px 0 0;\n                font-size: 15px;\n                line-height: 15px;\n                font-weight: 600;\n            }\n            .social {\n                display: block;\n                float: right;\n                width: 26px;\n                height: 26px;\n                margin: 13px 0 0 8px;\n                background-size: 26px 26px;\n                background-repeat: no-repeat;\n            }\n            @media only screen and (max-width: 440px) {\n                #desc { display: none; }\n            }\n            #javatari {\n                margin-top: 20px;\n                padding: 0 10px;\n                text-align: center;\n            }\n            #javatari-screen {\n                box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\n            }\n            .info {\n                display: none;\n                height: 38px;\n                padding-top: 14px;\n                font-size: 18px;\n                line-height: 25px;\n                text-align: center;\n            }\n            @media only screen and (max-width: 499px) {\n                #info-thin { display: block; }\n            }\n            @media only screen and (min-width: 500px) {\n                #info-wide { display: block; }\n            }\n            #footer-space {\n                margin-top: 24px;\n                height: 76px;\n            }\n            #footer {\n                position: absolute;\n                bottom: 0;\n                left: 0; right: 0;\n                height: 70px;\n                background: hsla(0, 0%, 0%, .15);\n                overflow: hidden;\n                font-size: 14px;\n                line-height: 12px;\n                white-space: nowrap;\n                text-overflow: ellipsis;\n            }\n            #footer .container {\n                padding: 2px 20px 0;\n                box-sizing: border-box;\n            }\n            a {\n                font-weight: 600;\n                text-decoration: none;\n                color: hsl(214, 100%, 43%);\n            }\n            a:hover {\n                color: #0050ba;\n                text-shadow: 0 0 2px hsl(197, 100%, 47%);\n            }\n            .toright {\n                float: right;\n            }\n            #donate {\n                display: block;\n                position: relative;\n                margin: 0 auto;\n                padding: 7px 12px;\n                color: white;\n                font-size: 14px;\n                font-weight: 600;\n                background-color: hsl(0, 66%, 45%);\n                border: none;\n                border-radius: 5px;\n                box-shadow: 1px 1px 4px rgba(0, 0, 0, .55);\n                outline: none;\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n            #donate:hover {\n                background-color: hsl(0, 90%, 56%);\n                box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, .55);\n            }\n        </style>\n\n    </head>\n\n    <body translate=\"no\" class=\"notranslate\">\n\n        <script>\n"
  },
  {
    "path": "src/runtime/standalone/index.part2.html",
    "content": "        </script>\n\n        <div id=\"topbar\">\n            <div class=\"container\">\n                <a id=\"logo\" style=\"background-image: url('data:image/png;base64,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');\" href=\"https://javatari.org\" title=\"The online Atari 2600 emulator\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,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');\" href=\"https://github.com/ppeccin/javatari.js\" title=\"Project Homepage on GitHub\" target=\"_blank\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEBElEQVRoQ+1Z0VEbMRDVHj+2pJlABSEVhFSAU0GgAuwKgAoIHZgKQioIVBCoIFAB0AGZOfn48W3mOTrP2dbppOOMPYw14y/vrfbtW612VyTe2aJ3hkdsAK07oxuGNgx5PMDM28aYb0KIPfsTRPQshLhj5mut9V2sA1cScgAyGo2OmfmEiLY9Rj8mSTLodrs3Lpk0TY+I6JNS6nvx/wKgLMt28zw/U0oNYr0TIm/1/yoYCflGCHFZ2JOm6R4RgdW+EGKXmb+UmVwAlKbpkIiOiehUSjkM3DBIzIbYQw0rVboQfmBztxBg5gut9Un5gwVAxpg/hfeYeaC1vgyyNkCorDtAvE7kXkrZs2duKusCxGVNzDzUWp/Waa/7P03TPhH9qJML+Z+Zb5VSBy8vL9t5nh8x807B1AwgG59gaH5dSSkH894I2byQMcY8lMMl5ts5B0+yIKLIhu4MUzOA7IHFxq71yMyHTVKpx1FNcU2+Y+a/QoieNykYY2ZCbn5HhKBS6jyGLWMM0urZq6xf/PiJmQ/mHew6Q49CiI++zZn5mYiGUsqLEGBLAORMCLDZBSjYmwCGO0II8dMXim0DSpLka9VlW3WxVp0jH3E4Y1dEdCOlvC0zt1JAsLglAwDwEcBwoRJRr60zFMVQKc0iNX5uy4g29QQDQnoVQhxtbW1ddDqdZ2MMQmi/TWPa0KWUqiyqfRdrETKthUobYKAjGJA9P957qC2jmupB2aO1rnSyK21fCSFQnq/lclXYZUNdabuX5/nvtUTz36hDpRSc7lzOw5Wm6c06JgMgkFLu+KoTJyAUqePx+I6IPqwZU9doG3w2VaY/m8LB1NqACmk4vUMSy9TlOoQfWgWttW+gMiEuaOqTZRkSBXr3VWa/8/J0JyopFMKj0eiEmSflDzNjOFF0iW96tMCOUmo3pFWpC7l1SeFB7ASFHOq5FYfak5QSkYHeq3bVniE75UTl7e1ia3dqKOCrrF0qawHhIzvkAFNvCqquzGkMyCYFzKPRbr9VprtXSqGdiVpBDJU1WraQwlHxLoWxmKw2jzYakAMcBu/TeXOUOx3CrllbjM7GgIwxmLNNnzFiNq2SfS2YoLRd3rx41ymeMtoAUdJROWuL2aeWIVvP7WNqg0llw6cQr03IZihrQu8an7IpIPs6MDnkzDxpca3x0ZkmwqNPSZL0q4aGEXqmovPD+t54PIanljrpwVmxo2Q8rgVVAKHgnCFnjEEThSe/tu+cJwDpdrtoSVoFUgD2niEkgSzL+nmeAyDqqSbN3j0z49H3sslTTCgzQYDmldkuFsDwWItma+F8YbYN7xPRXafTQRu/FCaqgNZmuVgPrVp+A2jVDNTtv2GozkOr/v/dMfQPssXcRMVCr4wAAAAASUVORK5CYII=');\" href=\"https://twitter.com/intent/tweet?source=https%3A%2F%2Fjavatari.org&text=:%20https%3A%2F%2Fjavatari.org&via=ppeccin\" target=\"_blank\" title=\"Tweet\" onclick=\"window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20'  + encodeURIComponent(document.URL)); return false;\"></a>\n                <a class=\"social\" style=\"background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACj0lEQVRoQ+2a0W3bMBCG7/QmkUDTCdoNmkxQZ4IiE7SdoOkEzQZ1N0gnaDeIO0GdCZpMkBYQpTf9BQ1ZkBRRJGVTsA3qwYBN8sjv/hPPEo/pxC524SnL8q1Lv9B90jT9ZZvDCFQUxScAH4jo3GZk5vY1gKWU8vvQvM+A8jw/Z+YfRPR65oX6TvcA4EpKuW4P7ABpGCK6Y+YzX+v76A/AHlLMTfgD+EtEl22oDpBS6s+Myjwy87KqqlXfy2POUUqh174WQlxsf2uAiqK4BvB1H54eswHgX5IkN1mWLafMNQBEAD5KKW+1vQZIKfU79AagYYho4aNIH3oIiIgaldpAfSmnOHB0DDN/nqrM1rABiIQQG5bNR1mWi6qq7vZO0DX4KITYeec0AQG40MrPBgTgm5TyelenmYCSJLlM03Q1GxARXQkhfp4MUJZlL5lZ5w3jBeCs/oeyMHVi5sG22RXa3rSWHKMVfDdFxUMFmpzYDxVocuqIQFPiuj3G8R6KCm2dFjTk9GOAlNK49e6idp7nT0OPN0cJVOeppyGHHCXQ2H/OowRSSt0Q0ZeTUUgppR/i3p8MUJ7nK269U2iDHWvIGfNUUKChkIiJ1TNZRYU8Hfaseww5Tw/GkPN0WAw57QHTKyoXZ8aQc/HSWJ+4y3l6MIacp8PiLhd3uV4MxHvo0O+hzoHXrvHrAhs6D3WOJGsgXcDwxmVxU/oEBroXQmwqXmY71g8JNHisX6v0QESvpihgGxMQqFGno5D+UpfG6FdFL2wL9G0HsLKNMR03msYN1T2Yipf00WAQpWxQHu33ulpstHipbawuldHlZcE2Co/Ft7tqEF1etimF6V+uBYBBjkZ8gXQdgm2ME5DNyCG1/wfy83xTvpURYAAAAABJRU5ErkJggg==');\" href=\"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fjavatari.org&t=\" title=\"Share on Facebook\" target=\"_blank\" onclick=\"window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '&t=' + encodeURIComponent(document.URL)); return false;\"></a>\n                <div id=\"desc\">\n                    <span>The online Atari 2600 emulator</span>\n                </div>\n            </div>\n        </div>\n\n        <div id=\"keywords\" style=\"display: none;\">\n            Javatari - The online Atari 2600 emulator,\n            Play Atari 2600 games online in your browser,\n            Javascript HTML5 Atari 2600 Emulator,\n            Javatari.js, Javatari.thml, javatari.js, javatari.thml,\n            ROM, ROMS,\n            Touch Screen, Mobile, Tablet, Android, iPhone, iPad, iPod, iOS,\n            App, offline, add to home screen\n        </div>\n\n        <div id=\"javatari\">\n            <div id=\"javatari-screen\"></div>\n        </div>\n\n        <div id=\"info-thin\" class=\"info container\">\n            Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <div id=\"info-wide\" class=\"info container\">\n            Drag & Drop or Select Cartridge slot to <a onclick=\"Javatari.room.screen.openCartridgeChooserDialog();\" href=\"javascript:void(0);\">load ROMs</a>\n        </div>\n        <button id=\"donate\" onclick=\"donate();\">DONATE!</button>\n\n        <div id=\"footer-space\"></div>\n        <div id=\"footer\">\n            <div class=\"container\">\n                <p><span>Created by <a href=\"http://twitter.com/ppeccin\" target=\"_blank\">Paulo A. Peccin</a></span>\n                    <span class=\"toright\">Atari, VCS and the Atari logo are shown here as a tribute.</span></p>\n                <p><span>v5.0.4 &nbsp;<a href=\"https://github.com/ppeccin/javatari.js\" target=\"_blank\">Docs & Project Home</a></span>\n                    <span class=\"toright\">All trademarks are property of their respective owners.</span></p>\n            </div>\n        </div>\n\n    </body>\n\n</html>"
  },
  {
    "path": "src/runtime/standalone/manifest.webapp",
    "content": "{\n  \"name\": \"Javatari\",\n  \"description\": \"Javatari - The online Atari 2600 emulator\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#000\",\n  \"theme_color\": \"#363636\",\n  \"icons\": [{\n    \"src\": \"images/logo-icon192.png\",\n    \"sizes\": \"192x192\",\n    \"type\": \"image/png\"\n  }, {\n    \"src\": \"images/logo-icon512.png\",\n    \"sizes\": \"512x512\",\n    \"type\": \"image/png\"\n  }]\n}\n"
  },
  {
    "path": "test/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n    <head lang=\"en\">\n\n        <!-- DEBUG 4 -->\n        <!--<script src=\"http://10.42.10.141:9090/target/target-script-min.js#javatari\"></script>-->\n\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width = device-width, user-scalable = yes\">\n\n        <title>Javatari Test</title>\n        <meta name=\"description\" content=\"Javatari - The online Atari 2600 emulator\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"../src/runtime/images/files/logo-icon192.png\">\n\n        <meta name=\"mobile-web-app-capable\" content=\"yes\">\n        <link rel=\"manifest\" href=\"manifest.webapp\">\n\n        <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n        <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n        <link rel=\"apple-touch-icon\" sizes=\"512x512\" href=\"../src/runtime/images/files/logo-icon512.png\">\n        \n        <style>\n            html, body {\n                margin: 0;\n                padding: 0;\n                background: #f4f4f4;\n            }\n            @media only screen and (orientation: landscape) and (max-device-width: 767px) {\n                #javatari {\n                    max-width: 75%;\n                }\n            }\n        </style>\n\n        <script src=\"../src/main/room/screen/FullScreenSetup.js\"></script>\n\n    </head>\n\n    <body>\n\n        <script>\n            JAVATARI_IMAGES_PATH = \"../src/runtime/images/files/\";\n        </script>\n\n        <script src=\"../src/main/Javatari.js\"></script>\n        <script src=\"../src/main/room/screen/FullScreenSetup.js\"></script>\n        <script src=\"../src/main/util/Util.js\"></script>\n        <script src=\"../src/main/util/MD5.js\"></script>\n        <script src=\"../src/main/util/ZIP.js\"></script>\n        <script src=\"../src/main/util/EmbeddedFiles.js\"></script>\n        <script src=\"../src/main/util/MultiDownloader.js\"></script>\n        <script src=\"../src/main/util/MultiFileReader.js\"></script>\n        <script src=\"../src/main/atari/video/VideoStandard.js\"></script>\n        <script src=\"../src/main/atari/video/VideoSignal.js\"></script>\n        <script src=\"../src/main/atari/audio/AudioSignal.js\"></script>\n        <script src=\"../src/main/atari/cpu/M6502.js\"></script>\n        <script src=\"../src/main/atari/pia/Ram.js\"></script>\n        <script src=\"../src/main/atari/pia/Pia.js\"></script>\n        <script src=\"../src/main/atari/tia/TiaPalettes.js\"></script>\n        <script src=\"../src/main/atari/tia/TiaAudio.js\"></script>\n        <script src=\"../src/main/atari/tia/TiaAudioChannel.js\"></script>\n        <script src=\"../src/main/atari/tia/Tia.js\"></script>\n        <script src=\"../src/main/atari/console/Bus.js\"></script>\n        <script src=\"../src/main/atari/console/AtariConsole.js\"></script>\n        <script src=\"../src/main/atari/controls/JoystickButtons.js\"></script>\n        <script src=\"../src/main/atari/controls/ConsoleControls.js\"></script>\n        <script src=\"../src/main/atari/cartridge/ROM.js\"></script>\n        <script src=\"../src/main/atari/cartridge/CartridgeDatabase.js\"></script>\n        <script src=\"../src/main/atari/cartridge/Cartridge.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge4K.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge2K_CV.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/CartridgeBankedByMaskedRange.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_E0.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge64K_F0.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_FE.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge16K_E7.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge10K_DPCa.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge24K_28K_32K_FA2.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/CartridgeBankedByBusMonitoring.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_512K_3F.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_512K_3E.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_256K_SB.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_64K_AR.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge64K_X07.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_0840.js\"></script>\n        <script src=\"../src/main/atari/cartridge/formats/Cartridge8K_UA.js\"></script>\n        <script src=\"../src/main/atari/cartridge/CartridgeFormats.js\"></script>\n        <script src=\"../src/main/atari/cartridge/CartridgeCreator.js\"></script>\n        <script src=\"../src/main/images/Images.js\"></script>\n        <script src=\"../src/main/room/clock/Clock.js\"></script>\n        <script src=\"../src/main/room/files/RecentStoredROMs.js\"></script>\n        <script src=\"../src/main/room/files/FileLoader.js\"></script>\n        <script src=\"../src/main/room/files/FileDownloader.js\"></script>\n        <script src=\"../src/main/room/controls/DOMKeys.js\"></script>\n        <script src=\"../src/main/room/controls/GamepadButtons.js\"></script>\n        <script src=\"../src/main/room/controls/TouchControls.js\"></script>\n        <script src=\"../src/main/room/controls/GamepadConsoleControls.js\"></script>\n        <script src=\"../src/main/room/controls/DOMTouchControls.js\"></script>\n        <script src=\"../src/main/room/controls/DOMConsoleControls.js\"></script>\n        <script src=\"../src/main/room/screen/es6/ScreenGUI.js\"></script>\n        <script src=\"../src/main/room/screen/Monitor.js\"></script>\n        <script src=\"../src/main/room/screen/ConsolePanel.js\"></script>\n        <script src=\"../src/main/room/screen/CanvasDisplay.js\"></script>\n        <script src=\"../src/main/room/screen/dialogs/RecentROMsDialog.js\"></script>\n        <script src=\"../src/main/room/screen/dialogs/SaveStateDialog.js\"></script>\n        <script src=\"../src/main/room/screen/dialogs/QuickOptionsDialog.js\"></script>\n        <script src=\"../src/main/room/screen/dialogs/NetPlayDialog.js\"></script>\n        <script src=\"../src/main/room/screen/dialogs/CartridgeFormatDialog.js\"></script>\n        <script src=\"../src/main/room/screen/es6/SettingsGUI.js\"></script>\n        <script src=\"../src/main/room/screen/settings/Settings.js\"></script>\n        <script src=\"../src/main/room/speaker/WebAudioSpeaker.js\"></script>\n        <script src=\"../src/main/room/savestate/LocalStorageSaveStateMedia.js\"></script>\n        <script src=\"../src/main/room/controls/PeripheralControls.js\"></script>\n        <script src=\"../src/main/room/controls/DOMPeripheralControls.js\"></script>\n        <script src=\"../src/main/room/netplay/NetServer.js\"></script>\n        <script src=\"../src/main/room/netplay/NetClient.js\"></script>\n        <script src=\"../src/main/room/Room.js\"></script>\n        <script src=\"../src/main/userprefs/UserPreferences.js\"></script>\n        <script src=\"../src/main/userprefs/UserROMFormats.js\"></script>\n        <script src=\"../src/runtime/images/EmbeddedImages.js\"></script>\n        <script src=\"../src/main/Configurator.js\"></script>\n        <script src=\"../src/main/Launcher.js\"></script>\n\n        <div id=\"javatari\" style=\"text-align: center; margin: 2px auto 0; padding: 0 10px;\">\n            <div id=\"javatari-screen\" style=\"box-shadow: 2px 2px 10px rgba(0, 0, 0, .7);\"></div>\n        </div>\n\n        <script>\n\n            Javatari.AUTO_POWER_ON_DELAY = 0;\n            // Javatari.CARTRIDGE_URL = \"roms/Pitfall.bin\";\n\n        </script>\n\n    </body>\n\n</html>"
  },
  {
    "path": "test/manifest.webapp",
    "content": "{\n  \"name\": \"Javatari\",\n  \"description\": \"Javatari - The online Atari 2600 emulator (test)\",\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#000\",\n  \"icons\": [{\n    \"src\": \"../src/runtime/images/files/logo-icon192.png\",\n    \"sizes\": \"192x192\",\n    \"type\": \"image/png\"\n  }, {\n    \"src\": \"../src/runtime/images/files/logo-icon512.png\",\n    \"sizes\": \"512x512\",\n    \"type\": \"image/png\"\n  }]\n}\n"
  }
]